我的应用程序运行由持久性通知指示的后台服务。用户需要使用MainActivity中的切换按钮来打开/关闭此服务,从而删除持久性通知。
现在,我想实现一个notification action
可以关闭此服务以及MainActivity中的切换功能的。总而言之,应该an exit button
直接从通知中关闭我的应用和后台服务。
我该如何实现?
请注意,我有两个不同的Java文件,一个用于NotificationService,另一个是MainActivity。切换开关属于MainActivity。
编辑:如果我在BroadCastReceiver中使用待定意图完全退出应用程序,可以调用System.exit(0)吗?
您必须将PendingIntent与BroadcastReceiver或Service配合使用才能执行此操作。这是带有BroadcastReciever的PendingIntent的示例。
建立通知
public static void createNotif(Context context){
Intent intentAction = new Intent(context,StopServerBroadcast.class);
//This is optional if you have more than one buttons and want to differentiate between two
intentAction.putExtra("action","actionName");
pIntent = PendingIntent.getBroadcast(context,1,intentAction,PendingIntent.FLAG_UPDATE_CURRENT);
drivingNotifBldr = (NotificationCompat.Builder) new NotificationCompat.Builder(context, CHANNEL_NAME)
.setSmallIcon(R.drawable.steeringwheel)
.setContentTitle("Stop Service")
.setContentText("Example Text")
.addAction(R.drawable.smallmanwalking, "On/off", pIntent)
.setOngoing(true);
...
}
现在,接收方将收到此意图
public class StopServerBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Toast.makeText(context,"recieved",Toast.LENGTH_SHORT).show();
String action=intent.getStringExtra("action");
if(action.equals("action1")){
performAction1();
/*
Code that will stop your service
*/
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句