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
Was ist, wenn Sie einen benutzerdefinierten VideoIntentReceiver verwenden? – Gi0rgi0s