NotificationListenerサービスがバックグラウンドで実行されていて、Settings.System.canWrite(Settings.java:3742)を実行すると例外がスローされますMarshmallow:サービスからSettings.System.canWrite(コンテキスト)を実行できません
12-03 18:25:33.490 2754-2771/? W/System.err﹕ java.lang.SecurityException: uid 10057 does not have android.permission.UPDATE_APP_OPS_STATS.
12-03 18:25:33.490 2754-2771/? W/System.err﹕ at android.os.Parcel.readException(Parcel.java:1599)
12-03 18:25:33.490 2754-2771/? W/System.err﹕ at android.os.Parcel.readException(Parcel.java:1552)
12-03 18:25:33.490 2754-2771/? W/System.err﹕ at com.android.internal.app.IAppOpsService$Stub$Proxy.checkOperation(IAppOpsService.java:327)
12-03 18:25:33.490 2754-2771/? W/System.err﹕ at android.app.AppOpsManager.checkOpNoThrow(AppOpsManager.java:1536)
12-03 18:25:33.490 2754-2771/? W/System.err﹕ at android.provider.Settings.isCallingPackageAllowedToPerformAppOpsProtectedOperation(Settings.java:8425)
12-03 18:25:33.490 2754-2771/? W/System.err﹕ at android.provider.Settings.isCallingPackageAllowedToWriteSettings(Settings.java:8320)
12-03 18:25:33.490 2754-2771/? W/System.err﹕ at android.provider.Settings$System.canWrite(Settings.java:3742)
これは、アクティビティから呼び出されたときに発生しないため、提供されたコンテキストがサービスであるためです。
Android 6.0.1で再現 - – cuihtlauac
あなたが書いた最後のコードは、アプリケーションのuidを取得して書き込み設定を確認するために使用されていますか?あなたが書いたコード – Olayinka
> SDKのメソッドの実装です。はい、そうすることになっていますが、この場合、NotificationListenerServiceはアプリケーションの他の部分と同じプロセスで実行されず、予期しない問題が発生します。 – csenga