我正在尝试使用startActivityForResult()
获取拨号器意图的结果
下面是我的拨号器意图代码。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:123456789"));
startActivityForResult(intent, 1234);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1234){
if (resultCode == Activity.RESULT_OK){
Toast.makeText(getApplicationContext(), "result ok", Toast.LENGTH_LONG).show();
}else if (resultCode == Activity.RESULT_CANCELED){
Toast.makeText(getApplicationContext(), "Result Cancelled", Toast.LENGTH_LONG).show();
}
}
}
每当我返回我的活动时,结果取消吐司都会触发。
提前谢谢。
来自文档:
ACTION_DIAL
public static final String ACTION_DIAL
你只有ACTION
.如果你想从你的应用程序中调用一个号码,那么你只需要把这些代码行放到onClick()
方法中,就可以得到你想要的:
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:123456789"));
startActivity(intent); // no need to use startActivityResult(intent,1234)
在这里,如果ACTION_DIAL输入为空,则启动一个空拨号器;否则getData()
是要拨打的电话号码的 URI 或显式电话号码的tel: <yourURI>
。 此外,没有RESULT_OK
或RESULT_CANCELED
的"输出",原因,startActivityResult()
对ACTION_DIAL
没有任何意义,但startActivity(intent)
。希望对您有所帮助。
为什么我得到RESULT_CANCELED而不是RESULT_OK。
ACTION_DIAL
不会返回结果。如果您阅读ACTION_DIAL
的文档,您将看到"输出:无"。因此,您通常会得到RESULT_CANCELED
。只有设计用于startActivityForResult()
的活动才会返回结果代码。