你需要设置一个 custom intent action 不是 AudioPlayerBroadcastReceiver 组件类。
custom intent action
AudioPlayerBroadcastReceiver
使用这样的自定义操作名称创建一个Intent
Intent switchIntent = new Intent("com.example.app.ACTION_PLAY");
然后,注册 PendingIntent Broadcast 接收器
PendingIntent
Broadcast
PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 100, switchIntent, 0);
然后,设置一个 onClick 对于播放控件,如果需要,对其他控件执行类似的自定义操作。
onClick
notificationView.setOnClickPendingIntent(R.id.btn_play_pause_in_notification, pendingSwitchIntent);
接下来,注册自定义操作 AudioPlayerBroadcastReceiver 像这样
<receiver android:name="com.example.app.AudioPlayerBroadcastReceiver" > <intent-filter> <action android:name="com.example.app.ACTION_PLAY" /> </intent-filter> </receiver>
最后,点击播放时 Notification RemoteViews 布局,你会收到的 play action 通过 BroadcastReceiver
Notification
RemoteViews
play action
BroadcastReceiver
public class AudioPlayerBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equalsIgnoreCase("com.example.app.ACTION_PLAY")){ // do your stuff to play action; } } }
编辑: 如何设置在代码中注册的广播接收器的intent过滤器
你也可以设置 Custom Action 通过 Intent filter 来自注册的代码 Broadcast receiver 像这样
Custom Action
Intent filter
Broadcast receiver
// instance of custom broadcast receiver CustomReceiver broadcastReceiver = new CustomReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addCategory(Intent.CATEGORY_DEFAULT); // set the custom action intentFilter.addAction("com.example.app.ACTION_PLAY"); // register the receiver registerReceiver(broadcastReceiver, intentFilter);