アンドリュース自己Definitive Guideのプログラミング(XXVII)

A.実行する許可を取得

アクセス権は、(3)許可要求のフィードバックを聞いて、(2)使用する許可を得るために、権限がないことを保証するために、実行時に対処するための3つの事柄、(1)を実行する必要があり、そうでない場合

(1)まず、我々は、アプリケーションが必要とするすべての権限を一覧表示し、一定の配列を追加する必要があり、オープンクラスの断片、正しい情報を取得します

プライベート静的最終的な文字列[] LOCATION_PERMISSIONS =新しいString [] {

Manifest.permission.ACCESS_FIME_LOCATION、

Manifest.permission.ACCESS_COARSE_LOCATION、

}。

同じであるAndroidManifest上記権利及び許可は、次のステップは、これらのアクセス許可を要求することです

許可がむしろ個人の権利よりも、グループに与えられているセキュリティ権限の種類については、権利の特定のタイプが含まれている権利グループは、内部の権限の単一のセットに付与された権限は、他のすべての権利は、同じグループ内で許可されているので、それを1に申請するには、2つの権利が同一のグループ権限に属し、我々は単に許可

(2)、確認がLOCATION_PERMISSIONS内部許可最初の配列を得ることができない方法を書きます

プライベートブールhasLocationPermission(){

INT結果= ContextComp.checkSelfPermission(getActivity()、LOCATION_PERMISSIONS [0])。

リターン結果== PackageManager.PERMISSION_GRANTED。

}

その後、我々は、上記のメソッドを呼び出すためにfindImage()メソッドの前に必要です

IF(hasLocationPermission()){

findimage();

}

(3)許可チェックが渡されていない場合は、コールrequestPermission()許可を要求する方法

//認証コードを追加します

プライベート静的最終int型REQUEST_PERMISSIONS = 0;

IF(hasLocationPermission()){

findimage();

}他{

requestPermissions(LOCATION_PERMISSIONS、REQUEST_PERMISSIONS)。

}

requestPermissions()Androidのシステムは、ユーザからのフィードバックを承認する権限を要求するダイアログボックスがポップアップ表示されます、それを呼び出した後、非同期リクエストメソッドで、ユーザーの操作に応じて、我々はまた、ユーザーがクリックを許可onRequestPermissionsResult()応答方法を、書き込みまたは拒否する必要がありますユーザーが承認し、findImageを呼び出す()メソッドを与えられている場合は、ボタン、Androidは、再び認証チェックの結果、このコールバックメソッドを呼び出します。

公共ボイドonRequestPermissionsResult(INT requestCode、文字列[]権限、[] grantResultsをINT){

スイッチ(requestCode){

ケースREQUEST_LOCATION_PERMISSIONS:

IF(hasLocationPermission()){

findImage();

}

デフォルト:

super.onRequestPermissionsResult(requestCode、パーミッション、grantResults)。

}

}

必要に応じて上記のパラメータのgrantResultsについて、あなたはまた、認証結​​果を確認するために、このパラメータの値を見ることができますが、上記のコードから、私たちはcheckSelfPermission内部hasLocationPermission()メソッドを呼び出すために、より便利な方法を採用していることがわかります()メソッドは、認証結果が得られますので、もう一度呼び出すgasLocationPermission()メソッドは、することができ

我々は、権限がアンロードまたはシャットダウン、彼は、その後、一時的にしか再び、次回を拒否し、または認証ダイアログの外にジャンプしない場合は、それ以外のアプリケーションは常に、許可を持つことになりますしない限り、認可認め与えるためにボタンを押すと、

 

 

おすすめ

転載: blog.csdn.net/weixin_41673515/article/details/90415114