获取 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_OKRESULT_CANCELED 的 "Output",因为 startActivityResult()ACTION_DIAL 没有任何意义,但 startActivity(intent)。希望对你有帮助。