拒绝权限:不允许从 pid=5646、uid=11219 发送广播 android.intent.action.PHONE_STATE

问题描述 投票:0回答:1

我面临有关 Android 操作系统的问题。我想检测来电,但来自 API >=30 或 Android>=11 设备,用户授予权限后应用程序崩溃,Logcat 显示以下异常。

FATAL EXCEPTION: main
 Process: com.example.callerdetecter, PID: 11623
 java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.PHONE_STATE from pid=11623, uid=11219
 at android.os.Parcel.createExceptionOrNull(Parcel.java:2374)
 at android.os.Parcel.createException(Parcel.java:2358)
 at android.os.Parcel.readException(Parcel.java:2341)
 at android.os.Parcel.readException(Parcel.java:2283)
 at android.app.IActivityManager$Stub$Proxy.broadcastIntentWithFeature(IActivityManager.java:5623)
 at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1115)
 at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:468)
 at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:468)
 at com.example.callerdetecter.MainActivity.prepareBroadcast(MainActivity.java:73)
 at com.example.callerdetecter.MainActivity.lambda$onCreate$0$com-example-callerdetecter-MainActivity(MainActivity.java:33)
 at com.example.callerdetecter.MainActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
 at android.view.View.performClick(View.java:7503)
 at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1218)
 at android.view.View.performClickInternal(View.java:7480)
 at android.view.View.access$3600(View.java:813)
 at android.view.View$PerformClick.run(View.java:28445)
 at android.os.Handler.handleCallback(Handler.java:938)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:223)
 at android.app.ActivityThread.main(ActivityThread.java:7950)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:603)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
 Caused by: android.os.RemoteException: Remote stack trace:
 at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:16429)
 at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:162
 at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:17116)
 at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2306)
 at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2926)

android android-permissions android-os-handler
1个回答
0
投票

当您提示用户此运行时权限时,您是否有一个警卫在那里检查用户是否启用了该权限,以及他们是否没有避免广播意图?

您希望确保电话呼叫检测功能仅在首先启用权限的情况下才处于活动状态。

您可能会在启用权限之前触发该功能,因此,为什么 Android 会抛出权限拒绝错误

你可以发布一些代码吗?有什么可以吗?

© www.soinside.com 2019 - 2024. All rights reserved.