0

在 Android 7.1 之前,可以使用 ITelephony.endCall() 方法结束来电,并为您的应用授予 android.permission.CALL_PHONE 和 android.permission.READ_PHONE_STATE 权限。

在 Android 8.0 Oreo (API 26) 上执行相同操作时,我收到此错误

105) 12-14 17:37:26.161 20962-20962/com.xinthe.carmode W/System.err: 在 android.os.Looper.loop(Looper.java:164) 12-14 17:37:26.161 20962- 20962/com.xinthe.carmode W/System.err:在 android.app.ActivityThread.main(ActivityThread.java:6809) 12-14 17:37:26.161 20962-20962/com.xinthe.carmode W/System.err : 在 java.lang.reflect.Method.invoke(Native Method) 12-14 17:37:26.161 20962-20962/com.xinthe.carmode W/System.err: 在 com.android.internal.os.Zygote$MethodAndArgsCaller .run(Zygote.java:240) 12-14 17:37:26.161 20962-20962/com.xinthe.carmode W/System.err: 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767 ) 12-14 17:37:26.162 20962-20962/com.xinthe.carmode W/System.err:原因:java.lang.SecurityException:用户 10304 和当前进程都没有 android.permission.CALL_PHONE。12-14 17:37:26。

这是 READ_PHONE_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;
}

谁能帮帮我吗 ?

4

2 回答 2

3

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

于 2017-12-15T13:45:47.813 回答
0

一种可能的解决方案是通过 Android Accessibility Service。您可以通过 11y Service 找到取消呼叫按钮的资源 id 并单击它!

查看此链接,它使用 Android Accessibility Service 来按下“强制停止”按钮,就像 Greenify 应用程序一样。

如何使用 AccessibilityService 在设置中单击按钮?

希望这可以帮助!

于 2017-12-18T08:03:54.427 回答