我创建了一个应用程序并添加了一个扩展了 `NotificationListenerService` 的 Java 类。一切都应该正常工作,但我无法获得 `BIND_NOTIFICATION_LISTENER_SERVICE` 权限。我已在清单中添加了它,但是当我检查权限时:
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE)
!= PackageManager.PERMISSION_GRANTED)
{
Log.d(TAG, "permission denied");
}
else
Log.d(TAG, "permission granted");
但我一直收到“权限被拒绝”的消息。我知道这个权限不是一个“危险权限”,所以我不需要向用户请求它。 在清单文件中,我声明了以下内容:
<service android:name=".PcNotification"
android:label="PCNotificationService"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
但它仍然无法工作。我还实现了onListenerConnected
函数,但从未被调用,这意味着我的服务从未与通知管理器连接,可能是因为我没有权限。
我只想知道如何将此权限授予我的应用程序。
<service>
元素上保留android:permission
属性。你应该删除checkSelfPermission()
相关内容。 - CommonsWarecheckSelfPermission()
和uses-permission
。正如您在主要问题中所看到的,我正在使用android:permission
。但是,在我完成您告诉我的一切之后,它仍然无法正常工作。我在NotificationListenerService
上使用了onListenerConnected()
函数,但是该函数从未被调用,因为监听器从未连接到通知管理器。 也许问题出在我如何启动服务上?我是这样启动的:Intent intent = new Intent(this, NotificationListener.class); startService(intent);
- Eldar AzulayIntent intent = new Intent(); intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent);
但是我得到了android.content.ActivityNotFoundException: No Activity found to handle Intent
。 - Eldar Azulay