Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
断开在android 8.0(Oreo)中无法使用的程序呼叫_Android_Android Permissions_Telephonymanager_Android Phone Call - Fatal编程技术网

断开在android 8.0(Oreo)中无法使用的程序呼叫

断开在android 8.0(Oreo)中无法使用的程序呼叫,android,android-permissions,telephonymanager,android-phone-call,Android,Android Permissions,Telephonymanager,Android Phone Call,在Android 7.1之前,可以通过使用ITelephony.endCall()方法结束来电,并为应用程序授予Android.permission.call\u PHONE和Android.permission.READ\u PHONE\u状态的权限 在Android8.0Oreo(API26)上执行同样的操作时,我得到了这个错误 12-14 17:37:26.160 20962-20962/com.xina.carmode W/System.err: java.lang.reflect.In

在Android 7.1之前,可以通过使用ITelephony.endCall()方法结束来电,并为应用程序授予Android.permission.call\u PHONE和Android.permission.READ\u PHONE\u状态的权限

在Android8.0Oreo(API26)上执行同样的操作时,我得到了这个错误

12-14 17:37:26.160 20962-20962/com.xina.carmode W/System.err: java.lang.reflect.InvocationTargetException 12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at java.lang.reflect.Method.invoke(本机方法)12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at com.xinate.carmode.listeners.MyPhoneStateListener.disconnectCall(MyPhoneStateListener.java:108) 12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at com.xinte.carmode.listeners.MyPhoneStateListener.onCallStateChanged(MyPhoneStateListener.java:51) 12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at android.telephony.PhoneStateListener$1.handleMessage(PhoneStateListener.java:338) 12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at android.os.Handler.dispatchMessage(Handler.java:105)12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at android.os.Looper.loop(Looper.java:164)12-1417:37:26.161 20962-20962/com.xina.carmode W/System.err:at android.app.ActivityThread.main(ActivityThread.java:6809)12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at java.lang.reflect.Method.invoke(本机方法)12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 12-14 17:37:26.161 20962-20962/com.xina.carmode W/System.err:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)12-14 17:37:26.162 20962-20962/com.xina.carmode W/System.err:由以下原因引起: java.lang.SecurityException:既不是用户10304也不是当前进程 拥有android.permission.CALL_手机。12-14 17:37:26.162 20962-20962/com.xina.carmode W/System.err:at android.os.Parcel.readException(Parcel.java:1942)12-1417:37:26.162 20962-20962/com.xina.carmode W/System.err:at android.os.Parcel.readException(Parcel.java:1888)12-1417:37:26.162 20962-20962/com.xina.carmode W/System.err:at com.android.internal.telephony.ITelephony$Stub$Proxy.endCall(ITelephony.java:1955) 12-14 17:37:26.162 20962-20962/com.xina.carmode W/System.err:。。。 10更多12-14 17:37:26.162 20962-20962/com.xina.carmode E/结束呼叫错误:致命错误:无法连接到电话 子系统12-14 17:37:26.162 20962-20962/com.xina.carmode E/End调用错误:异常对象: java.lang.reflect.InvocationTargetException

以下是READ\u PHONE\u STATE运行时权限的代码

String[] PERMISSIONS = {Manifest.permission.READ_CONTACTS, Manifest.permission.READ_PHONE_STATE,
        Manifest.permission.ANSWER_PHONE_CALLS};
void permissionCheck() {

    if (!hasPermissions(this, PERMISSIONS)) {
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }
}

public static boolean hasPermissions(Context context, String... permissions) {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}

有人能帮我吗?

看起来你忘了为CALL\u PHONE添加运行时权限
原因:java.lang.SecurityException:用户10304和当前进程都没有android.permission.CALL\u PHONE。

看起来您忘记了为CALL\u PHONE添加运行时权限
原因:java.lang.SecurityException:用户10304和当前进程都没有android.permission.CALL\u PHONE。

一种可能的解决方案是通过android可访问性服务。 您可以找到取消呼叫按钮的资源id,并通过11y服务单击该按钮

查看此链接,它使用Android辅助功能服务按下“强制停止”按钮,就像Greenify应用程序一样


希望这有帮助

一个可能的解决方案是通过Android易访问性服务。 您可以找到取消呼叫按钮的资源id,并通过11y服务单击该按钮

查看此链接,它使用Android辅助功能服务按下“强制停止”按钮,就像Greenify应用程序一样



希望这有帮助

看起来您依赖于通过反射调用的未记录方法。你所做的不是Android团队想要做的,他们很可能只是填补了这个安全漏洞permissionws@WaleedAsim已使用运行时权限代码更新问题。请检查。它是在运行应用程序时触发的吗?是的。它将从onCreate触发。看起来您依赖于通过反射调用的未记录方法。你所做的不是Android团队想要做的,他们很可能只是填补了这个安全漏洞permissionws@WaleedAsim已使用运行时权限代码更新问题。请检查。它是在运行应用程序时触发的吗?是的。它将从onCreate触发。谢谢您的回答。但是我添加了字符串[]PERMISSIONS={Manifest.permission.READ\u CONTACTS,Manifest.permission.READ\u PHONE\u STATE};如果(!hasPermissions(this,PERMISSIONS)){ActivityCompat.requestPermissions(this,PERMISSIONS,PERMISSIONS_ALL);}但是<代码>打电话不在您的列表中…这正是我的问题,非常感谢您的回答。但是我添加了字符串[]PERMISSIONS={Manifest.permission.READ\u CONTACTS,Manifest.permission.READ\u PHONE\u STATE};如果(!hasPermissions(this,PERMISSIONS)){ActivityCompat.requestPermissions(this,PERMISSIONS,PERMISSIONS_ALL);}但是<代码>打电话不在您的列表中…这正是我的问题,非常感谢您提供更多的解释或发送参考链接。请检查此链接您可以提供更多的解释或发送参考链接。请检查此链接