获取拨号器意图的RESULT_CANCELED



我正在尝试使用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_OKRESULT_CANCELED的"输出",原因,startActivityResult()ACTION_DIAL没有任何意义,但startActivity(intent)。希望对您有所帮助。

为什么我得到RESULT_CANCELED而不是RESULT_OK。

ACTION_DIAL不会返回结果。如果您阅读ACTION_DIAL的文档,您将看到"输出:无"。因此,您通常会得到RESULT_CANCELED。只有设计用于startActivityForResult()的活动才会返回结果代码。

相关内容

最新更新