我正在使用此代码打开通知侦听器设置:
startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));
我想检查用户是否已授予我的应用授权。 我已经尝试检查我的NotificationListenerService是否正在运行,但它似乎被系统暂停并重新启动(即使我返回START_STICKY)。
答案 0 :(得分:22)
唯一正确的方法是检查安全设置:
ComponentName cn = new ComponentName(context, YourNotificationListenerService.class);
String flat = Settings.Secure.getString(context.getContentResolver(), "enabled_notification_listeners");
final boolean enabled = flat != null && flat.contains(cn.flattenToString());
答案 1 :(得分:8)
我错了,检查服务是否正常运行:
private boolean isNLServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (NLService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
答案 2 :(得分:0)
如果您使用的是androidx,则可以使用
NotificationManagerCompat.getEnabledListenerPackages(Context context)
检查是否启用了侦听器。 Source