MediaBrowserCompat.connect()永远不会调用onConnected或任何MediaBrowserCompat.ConnectionCallback方法 [英] MediaBrowserCompat.connect() never calls onConnected or any MediaBrowserCompat.ConnectionCallback method
问题描述
我正在尝试使用MediaBrowserCompat
将我的活动连接到MediaBrowserServiceCompat
服务.
这是我的活动:
I am trying to connect my activity to a MediaBrowserServiceCompat
service using MediaBrowserCompat
.
This is my activity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bush_did_nine_eleven);
Log.d("activity", " onCreate");
mediaBrowser = new MediaBrowserCompat(this, new ComponentName(this, MusicServiceMediaBrowser.class), new MediaBrowserCompat.ConnectionCallback() {
@Override
public void onConnected() {
Log.d("activity", "onconnected");
super.onConnected();
}
@Override
public void onConnectionFailed() {
Log.d("activity", "onConnectionFailed");
super.onConnectionFailed();
}
@Override
public void onConnectionSuspended() {
Log.d("activity", "onConnectionSuspended");
super.onConnectionSuspended();
}
}, null);
mediaBrowser.connect();
Log.d("activity", "mediaBrowser.connect() called");
}
@Override
protected void onStart() {
super.onStart();
Log.d("activity", "onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.d("activity", "onStop");
mediaBrowser.disconnect();
}
您可能希望调用ConnectionCallback
方法之一,但这是logcat打印的内容(包括从服务调用的日志):
you might expect one of the ConnectionCallback
methods to be called, but this is what the logcat prints (including log called from the service):
09-08 19:28:25.126 13469-13469/le1.mytube D/activity: onCreate
09-08 19:28:25.135 13469-13469/le1.mytube D/activity: mediaBrowser.connect() called
09-08 19:28:25.137 13469-13469/le1.mytube D/activity: onStart
09-08 19:28:25.154 13469-13469/le1.mytube D/service: onCreate
在服务中我用NullPointerException
调用setSessionToken(mediaSession.getSessionToken())
时,它也会崩溃:
it also crashes when in my service i call setSessionToken(mediaSession.getSessionToken())
with a NullPointerException
:
09-08 19:34:04.817 19588-19588/le1.mytube E/AndroidRuntime: FATAL EXCEPTION: main
Process: le1.mytube, PID: 19588
Theme: themes:{}
java.lang.RuntimeException: Unable to create service le1.mytube.services.MusicServiceMediaBrowser: java.lang.NullPointerException: Attempt to invoke interface method 'void android.support.v4.media.MediaBrowserServiceCompat$MediaBrowserServiceImpl.setSessionToken(android.support.v4.media.session.MediaSessionCompat$Token)' on a null object reference
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2921)
at android.app.ActivityThread.-wrap4(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1446)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void android.support.v4.media.MediaBrowserServiceCompat$MediaBrowserServiceImpl.setSessionToken(android.support.v4.media.session.MediaSessionCompat$Token)' on a null object reference
at android.support.v4.media.MediaBrowserServiceCompat.setSessionToken(MediaBrowserServiceCompat.java:999)
at le1.mytube.services.MusicServiceMediaBrowser.onCreate(MusicServiceMediaBrowser.java:46)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2911)
at android.app.ActivityThread.-wrap4(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1446)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
在清单中,如果您想知道,我已经为服务添加了必要的<action android:name="android.media.browse.MediaBrowserService"/>
.
in my manifest i've add the necessary <action android:name="android.media.browse.MediaBrowserService"/>
for the service if you are wondering.
我是在做错什么,还是appcompat(v7:25.3.1)中的错误?
Am I doing something wrong or is it just a bug in appcompat(v7:25.3.1)?
推荐答案
就我而言,服务类中的public IBinder onBind(Intent intent)
函数存在问题.它不应返回null.我只是删除了函数的override
,它解决了问题.
In my case, I had an issue with public IBinder onBind(Intent intent)
function in the service class. It should not return null. I just removed the override
of the function and it solved the issue.
这篇关于MediaBrowserCompat.connect()永远不会调用onConnected或任何MediaBrowserCompat.ConnectionCallback方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!