2016-04-07 11 views
0

Ich erstellte einfache App, die CastCompanionLibrary verwendet, um Videodateien auf Google ChromeCast-Gerät zu streamen. Alles scheint gut zu funktionieren, außer dass die App beim Booten des Telefons ohne Internetverbindung abstürzt. Ich habe versucht, Fehler auf ADB-Monitor zu fangen.VideoCastManager stürzt Android App auf Telefon boot

Was mich wundern ist, ist, warum meine App am Telefon Boot überhaupt startet? Es sollte nur starten, wenn der Benutzer es startet.

Allerdings glaube ich, dass es etwas mit der bereits erwähnten CastCompanionLibrary zu tun hat, die einige Dienste und Empfänger mit der Manifest-Datei registriert.

Manifest.xml Teil

<activity 
     android:name="com.google.android.libraries.cast.companionlibrary.cast.player.VideoCastControllerActivity" 
     android:screenOrientation="portrait" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" 
     android:parentActivityName="lv.test.myapp.MainActivity" 
     android:theme="@style/Theme.AppCompat.Light.NoActionBar"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="lv.test.myapp.MainActivity" /> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 
    </activity> 
    <receiver android:name="com.google.android.libraries.cast.companionlibrary.remotecontrol.VideoIntentReceiver" > 
     <intent-filter> 
      <action android:name="android.media.AUDIO_BECOMING_NOISY" /> 
      <action android:name="android.intent.action.MEDIA_BUTTON" /> 
      <action android:name="com.google.android.libraries.cast.companionlibrary.action.toggleplayback" /> 
      <action android:name="com.google.android.libraries.cast.companionlibrary.action.stop" /> 
     </intent-filter> 
    </receiver> 
    <service 
     android:name="com.google.android.libraries.cast.companionlibrary.notification.VideoCastNotificationService" 
     android:exported="false" > 
     <intent-filter> 
      <action 
       android:name="com.google.android.libraries.cast.companionlibrary.action.notificationvisibility" /> 
     </intent-filter> 
    </service> 
    <service 
     android:name="com.google.android.libraries.cast.companionlibrary.cast.reconnection.ReconnectionService"/> 
    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> 
     </intent-filter> 
    </receiver> 

Mainactivity Teil

public VideoCastManager mCastManager;  
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

//id changed for public use 

    CastConfiguration options = new CastConfiguration.Builder("000000") 
.enableAutoReconnect() 
.enableLockScreen() 
.enableWifiReconnection() 
.enableNotification() 
.build(); 

    if(mCastManager == null) { 
     VideoCastManager.initialize(this, options); 
    } 
    mCastManager = VideoCastManager.getInstance(); 
//some other not related code here 
} 

Voll Fehler fand ich

04-07 22:12:32.185 5022-5022/? E/AndroidRuntime: FATAL EXCEPTION: main 
              Process: lv.test.myapp, PID: 5022 
              java.lang.RuntimeException: Unable to start receiver com.google.android.libraries.cast.companionlibrary.remotecontrol.VideoIntentReceiver: java.lang.IllegalStateException: No VideoCastManager instance was found, did you forget to initialize it? 
               at android.app.ActivityThread.handleReceiver(ActivityThread.java:3114) 
               at android.app.ActivityThread.access$1800(ActivityThread.java:181) 
               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1551) 
               at android.os.Handler.dispatchMessage(Handler.java:102) 
               at android.os.Looper.loop(Looper.java:145) 
               at android.app.ActivityThread.main(ActivityThread.java:6117) 
               at java.lang.reflect.Method.invoke(Native Method) 
               at java.lang.reflect.Method.invoke(Method.java:372) 
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
               Caused by: java.lang.IllegalStateException: No VideoCastManager instance was found, did you forget to initialize it? 
               at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.getInstance(VideoCastManager.java:259) 
               at com.google.android.libraries.cast.companionlibrary.remotecontrol.VideoIntentReceiver.onReceive(VideoIntentReceiver.java:49) 
               at android.app.ActivityThread.handleReceiver(ActivityThread.java:3107) 
               at android.app.ActivityThread.access$1800(ActivityThread.java:181)  
               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1551)  
               at android.os.Handler.dispatchMessage(Handler.java:102)  
               at android.os.Looper.loop(Looper.java:145)  
               at android.app.ActivityThread.main(ActivityThread.java:6117)  
               at java.lang.reflect.Method.invoke(Native Method)  
               at java.lang.reflect.Method.invoke(Method.java:372)  
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)  
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)  
04-07 22:12:32.200 2888-3384/? V/ApplicationPolicy: isApplicationStateBlocked userId 0 pkgname lv.test.myapp 

Antwort

1

nicht tun wissen, welche Version von CCL Sie verwenden, aber wenn Sie eine aktuelle Version verwenden, sollten Sie Ihr Manifest aktualisieren, um alle Intent-Filter aus Ihrem Empfängerblock und dem Dienst zu entfernen. Für den Empfänger sieht es so aus, als ob jemand anderes versucht, den Empfänger aufzurufen. Wenn Sie also die Intent-Filter entfernen, wird er für Ihre App nicht mehr zugänglich und wird nicht auf dieses Problem stoßen.

+0

Was ist, wenn Sie einen benutzerdefinierten VideoIntentReceiver verwenden? – Gi0rgi0s