获取 RESULT_CANCELED 用于拨号器意图
Getting RESULT_CANCELED for Dialer Intent
我正在尝试使用 startActivityForResult()
获取拨号器 Intent 的结果
下面是我的 Dialer Intent 代码。
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();
}
}
}
每当我返回我的 activity 时,结果取消 Toast 就会触发。
提前致谢。
why am I getting RESULT_CANCELED instead of RESULT_OK.
ACTION_DIAL
没有 return 结果。如果您阅读 the documentation for ACTION_DIAL
,您将看到 "Output: nothing"。因此,您通常会得到 RESULT_CANCELED
。只有设计用于 startActivityForResult()
的活动才会 return 结果代码。
来自 doc:
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输入什么都没有,则启动一个空的拨号器; else getData()
是要拨打的 phone 号码的 URI 或显式 phone 号码的 tel: <yourURI>
。
此外,没有 RESULT_OK
或 RESULT_CANCELED
的 "Output",因为 startActivityResult()
对 ACTION_DIAL
没有任何意义,但 startActivity(intent)
。希望对你有帮助。
我正在尝试使用 startActivityForResult()
下面是我的 Dialer Intent 代码。
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();
}
}
}
每当我返回我的 activity 时,结果取消 Toast 就会触发。
提前致谢。
why am I getting RESULT_CANCELED instead of RESULT_OK.
ACTION_DIAL
没有 return 结果。如果您阅读 the documentation for ACTION_DIAL
,您将看到 "Output: nothing"。因此,您通常会得到 RESULT_CANCELED
。只有设计用于 startActivityForResult()
的活动才会 return 结果代码。
来自 doc:
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输入什么都没有,则启动一个空的拨号器; else getData()
是要拨打的 phone 号码的 URI 或显式 phone 号码的 tel: <yourURI>
。
此外,没有 RESULT_OK
或 RESULT_CANCELED
的 "Output",因为 startActivityResult()
对 ACTION_DIAL
没有任何意义,但 startActivity(intent)
。希望对你有帮助。