你需要设置一个custom intent action
,不是AudioPlayerBroadcastReceiver
组件类。
创建一个具有自定义操作名称的 Intent,如下所示
Intent switchIntent = new Intent("com.example.app.ACTION_PLAY");
然后,注册PendingIntent
Broadcast
接收者
PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 100, switchIntent, 0);
然后,设置一个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
by the 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;
}
}
}
EDIT: 如何为代码中注册的广播接收器设置意图过滤器
您还可以设置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);