在Android 4中,所有功能都很好。在Android6中,不调用动态注册的onReceive()的BroadcastReceiver。我用以下代码注册接收方:
IntentFilter filter = new IntentFilter();
filter.addAction("com.android.music.metachanged");
filter.addAction("com.android.music.playstatechanged");
filter.addAction("com.android.music.playbackstatechanged");
filter.addAction("com.android.music.playbackcomplete");
filter.addAction("com.android.music.queuechanged");
filter.addAction("com.android.music.musicservicecommand");
a.registerReceiver(receiver = new AudioBroadcastReceiver(), filter); //a is Activity这段代码确实有效-我查过了。接收器看起来是这样的:
class AudioBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
...
}
}他们说,在注册BroadcastReceiver之前,需要动态地给予应用程序特殊的权限。但是我找不到怎么做--我应该用Manifest.permission.请求什么?为了这个案子。我只想当播放器改变音乐音轨时接收信号。这里面有什么危险?
发布于 2017-04-04 11:24:20
你依赖的是无记录、无支持的广播。一些播放器应用程序可能会使用这些。其他人可能不会。同一播放器的不同版本可能使用这些,也可能不使用这些。
不要假设任何给定的设备都有支持这些广播的播放器,或者用户选择的播放器将支持这些广播。
https://stackoverflow.com/questions/43194548
复制相似问题