我在崩溃报告中遇到了一个奇怪的例外,我正在寻找一种方法来解决它。这适用于appcompat 24.2.1
java.lang.IllegalArgumentException: Receiver not registered: android.support.v7.app.AppCompatDelegateImplV14$AutoNightModeManager$1@35ab2dd
at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:780)
at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1195)
at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:576)
at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:576)
at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:576)
at android.support.v7.app.AppCompatDelegateImplV14$AutoNightModeManager.cleanup(SourceFile:345)
at android.support.v7.app.AppCompatDelegateImplV14.onStop(SourceFile:117)
at android.support.v7.app.AppCompatDialog.onStop(SourceFile:119)
at android.app.Dialog.dismissDialog(Dialog.java:369)
at android.app.Dialog.dismiss(Dialog.java:345)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(SourceFile:161)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:764)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
作为来自问题的信息,我使用的唯一的BroadcastReceiver:
<receiver
android:name=".InstallListener"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
public class InstallListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String rawReferrerString = intent.getStringExtra("referrer");
if (rawReferrerString != null) {
final Intent newIntent = new Intent(context, PassImportActivity.class);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
newIntent.setData(Uri.parse(rawReferrerString));
context.startActivity(newIntent);
}
}
}
答案 0 :(得分:-2)
好的两件事。一,您是否在代码中的任何位置呼叫unregisterReceiver(..)
?如果是这样,请编辑原始问题并显示您的呼叫位置。
第二件事,在你的AndroidManifest.xml
中,改变一下:
<receiver
android:name=".InstallListener"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
到此:
<receiver
android:name=".InstallListener"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
注意:enabled
设置为true
。
试试这个。