0

音楽がバックグラウンドで再生されている場合、私のアプリケーションは音楽のメタデータを表示します。ICS デバイスで、アプリを手動で起動してもブロードキャスト レシーバーが登録されません。以下のバージョンでは問題なく動作します。以下にコードの一部を追加しました。マニフェスト ファイルにインテント アクションを追加しますか?

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");
    };
}
4

1 に答える 1

0

あなたが提供したコードは機能しますが、アクティビティが必要です(アクティビティを使用していますか)。Android 3.1 以降では、アプリケーションは「停止」状態でインストールされます。この状態では、ユーザーが手動でアプリケーションからアクティビティを起動するまで、BroadcastReceiver は機能しません。ユーザーが設定からアプリケーションを強制停止すると、アプリケーションはこの「停止」状態に戻ります。

そのため、アクティビティをプロジェクトに追加し、一度起動してから、レシーバーが機能するかどうかを確認してください。それ以外の場合は、ブロードキャスト レシーバーをマニフェスト ファイルに登録してみてください。

説明がうまくいくことを願っています。

于 2012-06-13T05:27:51.790 に答える