android - 通知打开后从 PendingIntent 停止服务
问题描述
我希望服务在单击通知后执行 stopForeground 和 stopSelf,然后运行 pendingIntent。
我曾尝试使用在调试期间检查时从未调用过的 BroadcastReceiver。我也将它添加到清单中。
Intent intentHide = new Intent(this, StopServiceReceiver.class);
PendingIntent hide = PendingIntent.getBroadcast(this, (int) System.currentTimeMillis(), intentHide, PendingIntent.FLAG_CANCEL_CURRENT);
将其添加到构建器
builder.setContentIntent(hide);
广播录制是单独完成的 -
public class StopServiceReceiver extends BroadcastReceiver {
public static final int REQUEST_CODE = 333;
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, TimerService.class);
context.stopService(service);
}
}
显现 -
<receiver
android:name=".StopServiceReceiver"
android:enabled="true"
android:process=":remote" />
这是行不通的。通知和服务都处于活动状态。
问题 - 我应该使用 addContent 而不是 setContentIntent 吗?如果是,那么参数应该是什么?我有什么问题吗?这种实施可能有什么问题?谢谢你。
解决方案
我在通知中遇到了同样的问题。
这段代码运行良好。
void creatnotifiaction()
{
public static final String STOP = "com.example.android";
public static final int REQUEST_CODE = 333;
filter = new IntentFilter();
filter.addAction(STOP);
Intent intentHide = new Intent(STOP);
PendingIntent hide = PendingIntent.getBroadcast(this,REQUEST_CODE,intentHide,PendingIntent.FLAG_CANCEL_CURRENT);
registerReceiver(broadcastReceiver, filter);
}
无需在同一类中单独使用广播接收器。
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@SuppressLint("ResourceAsColor")
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
Log.d("notification", "Received intent with action " + action);
switch (action) {
case STOP:
//your code to stop notifications or service.
break;
}
});
让我知道这是否适合你。谢谢...快乐的编码。
推荐阅读
- azure-ad-b2c - ClaimsTransformation 似乎创建了一个额外的属性
- r - 计算当两水平因子交替时重新开始的差异
- reactjs - Dotenv-webpack 在生产中?
- java - 如何在 Jdialog 中正确关闭我的 jasperReport?
- php - 为什么 wp_mail() 在本地主机上不起作用?
- google-cloud-platform - 磁盘映像的 GCP API 格式不正确
- python - 选项列表的 Clio API v4 自定义字段值
- c++ - 使用 clion 设置 eigen 时遇到问题
- javascript - 如何使用'for循环'更改一些标签的'src'值?
- c# - 窗口最大化时ListBox控件不调整大小