以编程方式检查Android系统安全通知访问设置

以编程方式检查Android系统安全通知访问设置,android,android-intent,notifications,settings,system,Android,Android Intent,Notifications,Settings,System,有没有办法检查以下设置在Android中是以编程方式启用还是禁用的 Settings > Security > Device Administration > Notification Access > My App 目前我正在通过下面的方法从我的应用程序调用设置对话框,但是如果设置已经启用,那么我不想显示此设置 Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETT

有没有办法检查以下设置在Android中是以编程方式启用还是禁用的

Settings > Security > Device Administration > Notification Access > My App 
目前我正在通过下面的方法从我的应用程序调用设置对话框,但是如果设置已经启用,那么我不想显示此设置

Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
startActivity(intent);

将状态保存在onBind()和onUnbind()的静态变量中对我很有用

public boolean onUnbind(Intent mIntent) {
    boolean mOnUnbind = super.onUnbind(mIntent);
    Common.isNotificationAccessEnabled = false;
    return mOnUnbind;
}

public IBinder onBind(Intent mIntent) {
    IBinder mIBinder = super.onBind(mIntent);
    Common.isNotificationAccessEnabled = true;
    return mIBinder;
}

要判断Android设置通知是否包含您的应用程序,您应该执行以下操作:

import android.provider.Settings;

String enabledAppList = Settings.Secure.getString(
        this.getContentResolver(), "enabled_notification_listeners");
boolean temp = enabledAppList.contains("youAppName");

让它变得简单

  if (Settings.Secure.getString(this.getContentResolver(),"enabled_notification_listeners").contains(getApplicationContext().getPackageName())) 
    {
        //service is enabled do something
    } else {
        //service is not enabled try to enabled by calling...
       getApplicationContext().startActivity(new Intent(
            "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));
    }
根据您的问题,“else”部分是可选的