如何检查用户是否授予了BIND_NOTIFICATION_LISTENER_SERVICE权限

时间:2020-09-10 16:49:25

标签: java android android-studio

我是Android的新手,我正在尝试开发一个应用程序,该应用程序读取Whatsapp Notifications并对其进行处理:)

我尝试了其他方法,以检查用户是否授予了权限“ BIND_NOTIFICATION_LISTENER_SERVICE” 但是没有任何效果。总是说,不授予许可。但这不是事实。这是代码:

        if(ContextCompat.checkSelfPermission(this, Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE) == PackageManager.PERMISSION_GRANTED){
            Log.i(TAG, "App has permission!");
        } else
            Log.i(TAG, "App hasn't permission " + ContextCompat.checkSelfPermission(this, Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE));

这些设置是我在App中更改的: startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));

清单:

            android:label="Whatsapp Nachrichten leser"
            android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
            <intent-filter>
                <action android:name="android.service.notification.NotificationListenerService" />
            </intent-filter>
        </service>

侦听器服务完美运行。只是说,我没有允许。 (对不起,我的英语不好)

1 个答案:

答案 0 :(得分:0)

这是解决方案:

private boolean isNotificationServiceEnabled(){
        String pkgName = getPackageName();
        final String flat = Settings.Secure.getString(getContentResolver(),
                ENABLED_NOTIFICATION_LISTENERS);
        if (!TextUtils.isEmpty(flat)) {
            final String[] names = flat.split(":");
            for (int i = 0; i < names.length; i++) {
                final ComponentName cn = ComponentName.unflattenFromString(names[i]);
                if (cn != null) {
                    if (TextUtils.equals(pkgName, cn.getPackageName())) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
相关问题