我在我的流媒体服务中使用 MediaButtonReciever 来监听处理耳机和不同设备的操作 我在 Manifest 中这样声明它
<receiver android:name="android.support.v4.media.session.MediaButtonReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
只要应用程序在后台,这些操作就可以正常工作 一旦应用程序终止,如果我单击任何 MediaButton,它就会崩溃为媒体按钮,并出现以下崩溃
Fatal Exception: java.lang.RuntimeException: Unable to start receiver android.support.v4.media.session.MediaButtonReceiver: java.lang.IllegalStateException: Could not find any Service that handles android.intent.action.MEDIA_BUTTON or a media browser service implementation
问题是即使应用程序被销毁,接收器仍会继续接收,现在我如何在应用程序关闭后注销接收器? 我已经尝试过 audioManager.unregister(MediaButtonReciever) 但它已贬值
最佳答案
问题是我像这样在我的 list 中使用默认类
<receiver android:name="android.support.v4.media.session.MediaButtonReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
在 onReceive() 完成后接收器自动取消注册是错误的
Once you return from onReceive(), the BroadcastReceiver is no longer active, source
所以所有 idid 都是我在自定义类 MyMediaButtonReceiver
中扩展了 MediaRecieverButton
并像这样编辑我的 list
<receiver android:name=".MyMediaButtonReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
而且效果很好
关于android - 如何注销 MediaButtonReceiver onDestroy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210148/