2016-03-31 1 views
0

アンドロイドプロジェクトのターゲットは15、minsdkversionは9、compilesdkversionは23です。android.permission.READ_PHONE_STATE androidmanifest.xml 設定で権限を取り消します。私は私のプロジェクトをデバッグ、私は、権限がすでにプロジェクトに付与されていることがわかりますが、システム設定では、権限が取り消されます。 (ヒント:デバイスはネクサス5倍、アンドロイド6.0である)アンドロイドの許可を取り消しましたが、checkselfpermissionはまだ返されました。

私のコード:

if(Build.VERSION.SDK_INT >= 23){ if(checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED){ requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSIONS_REQUEST_PHONE_STATE); }else{ deviceRequest.registerDevice(); } }else{ deviceRequest.registerDevice(); }

コード:!checkSelfPermission(Manifest.permission.READ_PHONE_STATE)= falseを返すPackageManager.PERMISSION_GRANTED。

なぜ誰かが助けることができないのですか?

targetdkversionが22より小さいかどうか知りたいのですが、設定での操作の取り消し権限が実際に働くことができますか?私はあなたにsuccの取り消しを示していますが、パーミッションはまだ与えられています。

答えて

0

ターゲットは15であるため、権限を取り消すと権限はそこに残ります。あなたのターゲットが23であり、あなたがその許可を取り消した場合は、明らかにそのユーザーから再び許可を得る必要があります。アプリでランタイム権限を統合する予定の場合は、23のように簡単にターゲットを設定する必要があります。

これをチェックしてくださいcheckSelfPermission returning PERMISSION_GRANTED for revoked permission with targetSdkVersion <= 22

+0

私の問題は彼とは異なります。許可は取り消され、checkselfpermissionリターンは認められますが、私はまだ例外なく電話状態を読むことができます。 –

+0

あなたは23をtargetsdkversionに設定しなければならないと言っています。それは、targetsdkversionが23未満のときにcheckselfpermissionを行う必要がないという意味ですか? したがって、古いコードはチェックする必要はなく、marshmallowデバイスで実行できますか? –

+0

ターゲットが23未満の場合は、コード内で実行時アクセス権を要求する必要はありません** if(Build.VERSION.SDK_INT> = 23){} **コントロールはこの内部に入りません** if * *ステートメント。あなたのコードはcompileSdkVersionが23だったのでコンパイルされます。 – Thahaseen

関連する問題