2016-02-11 10 views
7

Android Marshmallowでユーザーが許可または取り消した権限をチェックしようとしています。残念ながら、ContextCompat.checkSelfPermission()(これはワーパ約Context.checkCallingOrSelfPermission)は、現在の権限の状態(ユーザーが権限を取り消した場合など)に関係なく、マニフェストにその特定の権限を含めた場合、常にPackageManager.PERMISSION_GRANTED(0)を返します。私もsomeContext.checkCallingOrSelfPermission()を試しましたが、結果は同じです。AndroidのContextCompat.checkSelfPermission()が不正な値を返します

これを経験したことがありますか?私はnVidia ShieldコンソールでAndroid Marshmallowを使用しています(nVidiaのBetaプログラムを使用しています)。

+2

あなたの 'targetSdkVersion'とは何ですか? – CommonsWare

+0

@CommonsWareうん、あなたは問題を正確に指摘した!私は答えを説明するつもりです。 – Metallica

答えて

9

マニフェストのtargetSdkVersionは23でなければなりません。ターゲットSDKが23(Android 6)の場合、マニフェスト内のすべての権限はデフォルトで無効になっています。ターゲットSDKは22(Android 5.1)で、アプリはAndroid 6で実行されています。ユーザーがアプリをインストールすると、すべての権限がデフォルトで有効になり、後で権限を取り消しても、これは私の意見ではバグです)。

+4

PermissionCheckerを使用することもできます。これは、ユーザーが設定から権限グループを拒否したかどうかを通知するものです。http://developer.android.com/reference/android/support/v4/content/PermissionChecker.html – CommonsWare

+1

ターゲット22とAndroid 6.0で動作しています。 – einverne