2016-09-19 3 views
0

Я получил странное исключение в отчете о сбое и искал способ его решения. Это происходит с AppCompat 24.2.1

java.lang.IllegalArgumentException: Receiver not registered: android[email protected]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

Используете ли вы «BroadcastReceiver»? Покажите, как вы его реализовали, и что вы с ним делаете. Эта ошибка в основном говорит о том, что вы пытаетесь отменить регистрацию получателя, который еще не зарегистрирован. –

+0

Я использую только один BroadcastReceiver - отредактировал мой вопрос, но сомневаюсь, что это преступник здесь. – ligi

ответ

-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.

Попробуйте это.

+0

no - Я не звоню в unregisterReceiver в любом месте, и я не вижу смысла использовать значение true, поскольку это значение по умолчанию. Также, поскольку я не могу воспроизвести эту ошибку, я не могу «попробовать это». – ligi

+0

Ну, если вы не можете воспроизвести эту ошибку, то это не «ошибка». Вы не должны спрашивать об этом –

+0

Это ошибка - просто не воспроизводимая - я думаю, что это действительно нужно задать здесь – ligi

Смежные вопросы