0

我正在尝试使用拨号器 Intent 获得结果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();
           }
          }

       }

每当我返回我的活动时,都会触发 Result Canceled Toast。

提前致谢。

4

2 回答 2

0

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

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

于 2019-10-12T11:06:55.830 回答
0

来自文档

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输入为空,则启动空拨号器;elsegetData()是要拨打的电话号码的 URI 或tel: <yourURI>显式电话号码的 URI。此外,没有RESULT_OKor的“输出” RESULT_CANCELED,原因,除了之外startActivityResult()没有任何意义。希望能帮助到你。ACTION_DIALstartActivity(intent)

于 2019-10-12T11:54:02.447 回答