当我将
targetSdkVersion
更改为 34 时,应用程序在 Android 14 上的短信自动验证调用期间崩溃。我想将其更改为 34 以将其上传到播放控制台。
错误日志:
致命异常:主 E/AndroidRuntime(19989):进程:com.namp.zeon, PID:19989 E/AndroidRuntime(19989):java.lang.SecurityException: com.namp.zeon:RECEIVER_EXPORTED 或 RECEIVER_NOT_EXPORTED 之一 当接收者没有被专门注册时应该指定 用于系统广播 E/AndroidRuntime(19989): at android.os.Parcel.createExceptionOrNull(Parcel.java:3087) E/AndroidRuntime(19989):位于 android.os.Parcel.createException(Parcel.java:3071) E/AndroidRuntime(19989):位于 android.os.Parcel.readException(Parcel.java:3054) E/AndroidRuntime(19989):位于 android.os.Parcel.readException(Parcel.java:2996) E/AndroidRuntime(19989):位于 android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:5684) E/AndroidRuntime(19989):位于 android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1868) E/AndroidRuntime(19989):位于 android.app.ContextImpl.registerReceiver(ContextImpl.java:1804) E/AndroidRuntime(19989):位于 android.app.ContextImpl.registerReceiver(ContextImpl.java:1792) E/AndroidRuntime(19989):位于 android.content.ContextWrapper.registerReceiver(ContextWrapper.java:765) E/AndroidRuntime(19989):位于 com.jaumard.smsautofill.SmsAutoFillPlugin$2.onSuccess(未知 来源:44) E/AndroidRuntime(19989):位于 com.jaumard.smsautofill.SmsAutoFillPlugin$2.onSuccess(未知 来源:2) E/AndroidRuntime(19989):位于 com.google.android.gms.tasks.zzm.run(来源未知:25) E/AndroidRuntime(19989):位于 android.os.Handler.handleCallback(Handler.java:958) E/AndroidRuntime(19989):位于 android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(19989):位于 android.os.Looper.loopOnce(Looper.java:257) E/AndroidRuntime(19989): 在 android.os.Looper.loop(Looper.java:368) E/AndroidRuntime(19989): 在 android.app.ActivityThread.main(ActivityThread.java:8839) E / AndroidRuntime(19989):在java.lang.reflect.Method.invoke(本机 方法)E/AndroidRuntime(19989):在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:572) E/AndroidRuntime(19989):位于 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049) E/AndroidRuntime(19989):导致:android.os.RemoteException:远程 堆栈跟踪:E/AndroidRuntime(19989):位于 com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:14900) E/AndroidRuntime(19989):位于 android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2570) E/AndroidRuntime(19989):位于 com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3005) E/AndroidRuntime(19989):位于 android.os.Binder.execTransactInternal(Binder.java:1387) E/AndroidRuntime(19989):位于 android.os.Binder.execTransact(Binder.java:1299) E/Android运行时(19989):
重现步骤将build.gradle中的targetSdkVersion更改为34。
使用此插件(sms_autofill:^2.3.0)进行短信自动填充。
预期结果 它应该从消息中获取 OTP 代码。
实际结果应用程序在移动到验证OTP屏幕时崩溃。
您需要在 AndroidManifest.xml 中为 BroadcastReceiver 显式添加 android:exported 属性。
<receiver
android:name=".MyRadarReceive"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="io.radar.sdk.RECEIVED" />
</intent-filter>
</receiver>