簡體   English   中英

啟動時Android崩潰 - MediaButtonReceiver可能不為null

[英]Android crash on boot - MediaButtonReceiver may not be null

我在我的Unity應用程序中遇到了一個問題,Android構建在運行Android 4.3的設備上啟動時崩潰該應用程序加載了我在后台播放音樂而應用程序暫停時編寫的本機插件。 它正在使用Android MediaBrowser API,因此我使用的是“Compat”版本,因此請繼續支持以前版本的Android。

06-07 09:59:37.000: E/AndroidRuntime(1748): FATAL EXCEPTION: main
06-07 09:59:37.000: E/AndroidRuntime(1748): java.lang.Error: FATAL EXCEPTION [main]
06-07 09:59:37.000: E/AndroidRuntime(1748): Unity version     : 5.6.1f1
06-07 09:59:37.000: E/AndroidRuntime(1748): Device model      : samsung GT-I9300
06-07 09:59:37.000: E/AndroidRuntime(1748): Device fingerprint: samsung/m0xx/m0:4.3/JSS15J/I9300XXUGMK6:user/release-keys
06-07 09:59:37.000: E/AndroidRuntime(1748): Caused by: java.lang.RuntimeException: Unable to create service com.help.stressfree.mediabrowser.MusicService: java.lang.IllegalArgumentException: MediaButtonReceiver component may not be null.
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2697)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.app.ActivityThread.access$1700(ActivityThread.java:159)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1404)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.os.Looper.loop(Looper.java:176)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.app.ActivityThread.main(ActivityThread.java:5419)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at java.lang.reflect.Method.invokeNative(Native Method)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at java.lang.reflect.Method.invoke(Method.java:525)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at dalvik.system.NativeStart.main(Native Method)
06-07 09:59:37.000: E/AndroidRuntime(1748): Caused by: java.lang.IllegalArgumentException: MediaButtonReceiver component may not be null.
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.support.v4.media.session.MediaSessionCompat$MediaSessionImplBase.<init>(MediaSessionCompat.java:1054)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:176)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:118)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at com.help.stressfree.mediabrowser.MusicService.onCreate(MusicService.java:169)
06-07 09:59:37.000: E/AndroidRuntime(1748):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2687)
06-07 09:59:37.000: E/AndroidRuntime(1748):     ... 10 more

我的重寫Unity活動在onCreate中有這個

protected void onCreate(Bundle savedInstanceState) {

        // call UnityPlayerActivity.onCreate()
        super.onCreate(savedInstanceState);

        Instance = this;

        LogHelper.d(TAG, "ThriveUnityPlayerActivity.onCreate");

        //Intent intent = new Intent(this, MusicPlayerActivity.class);
        //startActivity(intent);

        Intent intent = new Intent(this, MusicService.class);
        startService(intent);
    }

我的MusicService類具有以下onCreate函數

@Override
     public void onCreate() {
         super.onCreate();
         LogHelper.d(TAG, "onCreate");

         //mPlayingQueue = new ArrayList<>();
         //mMusicProvider = new MusicProvider();
         //mPackageValidator = new PackageValidator(this);

         mMyServiceHandler = new Handler()
         {
             //here we will receive messages from activity(using sendMessage() from activity)
             public void handleMessage(Message msg)
             {
                 LogHelper.i(TAG,"handleMessage(Message msg)" );
                 switch(msg.what)
                 {
                     case 0:
                         PlayTrackByName((String) msg.obj);

                         break;

                     default:
                         break;
                 }
             }
         };

         // Start a new MediaSession
         mSession = new MediaSessionCompat(this, "MusicService");
         setSessionToken(mSession.getSessionToken());
         mSession.setCallback(new MediaSessionCallback());
         mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
             MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);

         mPlayback = new Playback(this/*, mMusicProvider*/);
         mPlayback.setState(PlaybackStateCompat.STATE_NONE);
         mPlayback.setCallback(this);
         mPlayback.start();

         Context context = getApplicationContext();
         Intent intent = new Intent(context, MusicPlayerActivity.class);
         PendingIntent pi = PendingIntent.getActivity(context, 99 /*request code*/,
                 intent, PendingIntent.FLAG_UPDATE_CURRENT);
         mSession.setSessionActivity(pi);

         Bundle extras = new Bundle();
         //CarHelper.setSlotReservationFlags(extras, true, true, true);
         mSession.setExtras(extras);

         updatePlaybackState(null);

         mMediaNotificationManager = new MediaNotificationManager(this);
     }

有誰知道崩潰意味着什么以及我將如何修復它?

嘗試在控制我經歷此運行4.4的媒體的活動下的清單中添加媒體按鈕接收器,但不是在更高版本上。

<receiver android:name="android.support.v4.media.session.MediaButtonReceiver" >
<intent-filter>
  <action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>

並閱讀; 媒體按鈕接收器

由於我的錯誤,我有同樣的問題。我在AndroidManifest.xml中定義了兩個MEDIA_BUTTON操作。

<receiver android:name="android.support.v4.media.session.MediaButtonReceiver">
        <intent-filter>
            <action android:name="android.intent.action.MEDIA_BUTTON" />
        </intent-filter>
    </receiver>
    <receiver android:name=".receiver.MediaButtonIntentReceiver">
        <intent-filter>
            <action android:name="android.intent.action.MEDIA_BUTTON" />
            <action android:name="android.media.AUDIO_BECOMING_NOISY" />
        </intent-filter>
    </receiver>

所以我刪除了其中一個並且錯誤被駁回了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM