当前位置: 首页 > 知识库问答 >
问题:

意向呼叫行动对Marshmallow不起作用

贺俊材
2023-03-14

我正试图在一台使用Marshmallow作为操作系统的设备上启动一个呼叫意图操作,使用与往常相同的步骤(这在下面的版本中工作):

添加权限:

<uses-permission android:name="android.permission.CALL_PHONE" />

打开意图:

Intent intent = new Intent(Intent.ACTION_CALL);
                    intent.setData(Uri.parse("tel:" + getString(R.string.connect_phone)));
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);

这是我得到的日志:

致命例外:主要

进程:com。应用程序。呼叫,PID:4250 java。lang.SecurityException:权限拒绝:启动意图{act=android.Intent.action.CALL dat=tel:xxxxxxxxxxxx flg=0x10000000 cmp=com.android.server.telecom/.components.UserCallActivity VirtualScreenParam=Params{mDisplayId=-1,null,mFlags=0x00000000)}来自进程记录{1618b01 4250:com.app.calling/u0a234}(pid=4250,uid=10234),并撤销许可Android。准许打Android手机。操作系统。包裹android上的readException(Parcel.java:1620)。操作系统。包裹android上的readException(Parcel.java:1573)。应用程序。活动管理器氧气。android上的startActivity(ActivityManagerActive.java:3130)。应用程序。仪器。android上的execStartActivity(Instrumentation.java:1540)。应用程序。活动android上的startActivityForResult(Activity.java:4283)。应用程序。活动android上的startActivityForResult(Activity.java:4230)。支持v4。应用程序。碎片活动。android上的startActivityFromFragment(FragmentActivity.java:849)。支持v4。应用程序。FragmentActivity$HostCallbacks。android上的onStartActivityFromFragment(FragmentActivity.java:907)。支持v4。应用程序。碎片startActivity(Fragment.java:919)位于com。应用程序。使命感活动碎片2美元。android上的onGroupClick(ConnectFragment.java:44)。小装置。可扩展列表视图。android上的handleItemClick(ExpandableListView.java:676)。小装置。可扩展列表视图。android上的performItemClick(ExpandableListView.java:654)。小装置。AbsListView$PerformClick。在android上运行(AbsListView.java:3821)。小装置。AbsListView 3美元。在android上运行(AbsListView.java:5841)。操作系统。汉德勒。android上的handleCallback(Handler.java:739)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:95)。操作系统。活套。android上的loop(Looper.java:158)。应用程序。活动线程。java上的main(ActivityThread.java:7224)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:1230)。Android内部的操作系统。合子体。main(ZygoteInit.java:1120)

同样,这个过程在之前的版本(Lollipop和kitkat)中运行良好。不幸的是,Marshmallow上没有,有人知道我为什么会这样,或者我遗漏了什么吗?

共有3个答案

濮阳功
2023-03-14

对于Marshmallow及以上版本,您需要在运行时请求权限,而不仅仅是在清单文件中。以下是文件:

在运行时请求权限

希望有帮助。

罗伟志
2023-03-14

从android 6.0(API 23)开始,必须在清单中声明危险权限,并且必须明确地向用户请求该权限。根据这个列表,打电话被认为是危险的许可。

每次执行需要危险权限的操作时,都必须检查用户是否已授予该权限。如果没有,你必须申请批准。请参阅在运行时请求Android开发者的权限。

邢运良
2023-03-14

打电话的方法

public void onCall() {
        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);

        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    this,
                    new String[]{Manifest.permission.CALL_PHONE},
                    "123");
        } else {
            startActivity(new Intent(Intent.ACTION_CALL).setData(Uri.parse("tel:12345678901")));
        }
    }

检查权限

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {

            case 123:
                if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                    onCall();
                } else {
                    Log.d("TAG", "Call Permission Not Granted");
                }
                break;

            default:
                break;
        }
    }
 类似资料:
  • 我是Twilio的新手,我需要一些关于特定场景的帮助。一段时间以来,我一直试图为这个问题找到解决办法,但一直未能如愿。 我想使用一个移动(a)的Twilio号码打电话给移动(B)的另一个用户。我想这样做的方式,其中呼叫是由Twilio号码发起的,而不是由(a)的电话号码发起的。 换句话说,(A)从移动台拨Twilio号码,Twilio依次拨(B)并将(B)与(A)连接。 我已经将(A)拨打的Twi

  • 问题内容: 我正在使用开放式天气地图api网络服务进行ajax调用,以便使用纬度和经度获取当前天气,问题是同一调用在我的常规php文件夹中有效,但在我的phongap应用程序中不起作用。我的ajax调用如下所示 我没有尝试将其更改为,但没有任何效果。请帮助我,因为我目前对此仍然感到困惑。 问题答案: 您是否已将config.xml中的网址列入白名单? 了解更多:http : //docs.phon

  • 我在调用我的onLeScan时遇到问题。我在开始扫描中放置了一个标签,每次都会被调用。出于某种原因,我的onLeScan永远不会被调用。有人看到我所做的有问题吗?onLeScan应该在开始扫描后立即调用,对吗? 编辑更改了我的onLeScan函数。仍然不起作用,但我认为我正在走向正确的道路。DeviceBeacon是一个只包含方法的类:getName()、getSignal()和getAddres

  • 我对Twilio和呼叫跟踪服务非常陌生,但由于Mongoose Metrics可以满足我的需求,但成本太高,所以我尝试将Mongoose换成另一款,但价格更便宜。 我想知道Twilio能否取代Mongoose Metrics呼叫跟踪服务。我真正需要的是,我需要用我的区号生成随机电话号码,这些号码需要重定向到我的客户业务电话号码。 呼叫重定向的原因是当客户实际拨打生成的电话号码时,呼叫可以重定向到我

  • 我使用restful api进行语音调用。我用这个来称呼自己。当我的电话响时,我不接通就挂断了。大约20秒后,我又接到了Twilio的电话。 curl'https://api.twilio.com/2010-04-01/accounts/accountsid/calls.json'-x post--data-urlencode'to=+1111111'--data-urlencode'from=+

  • 我想用一个参数调用一个函数,它并行返回一个Mono,并以列表或通量的形式返回结果。 我正在调用一个函数,它返回一个