即使应用程序在ICS中手动启动,Broadcastreceiver也无法收听

时间:2012-06-13 05:18:49

标签: android

如果音乐在后台播放,我的应用程序会显示音乐元数据。在ICS设备中,即使在手动启动应用程序之后,广播接收器也未注册。它适用于以下版本。我在下面添加了一部分代码,是否要在manifestxt文件中添加任何intent操作?

IntentFilter iF = new IntentFilter();
// Android Stock Music App / Google Play Music App
 iF.addAction("com.miui.player.metachanged");
// HTC music player`enter code here`
iF.addAction("com.htc.music.metachanged");
// WinAmp
iF.addAction("com.nullsoft.winamp.metachanged");
// Samsung Music App
iF.addAction("com.sec.android.app.music.metachanged");
registerReceiver(mReceiver, iF);

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String track =intent.getStringExtra("track");
    };
}

1 个答案:

答案 0 :(得分:0)

您提供的代码有效,但它需要一个活动(您使用的是活动)。在Android 3.1+上,应用程序以“已停止”状态安装。在该状态下,在用户从应用程序手动启动活动之前,没有BroadcastReceiver可以工作。如果用户强制从应用程序中停止应用程序,应用程序将返回此“已停止”状态。

因此,在项目中添加一个活动,启动一次,然后查看您的接收器是否正常工作。 否则尝试在清单文件中注册广播接收器..

希望解释适合你。