が起動時に許可を求める参照してくださいは、特定の権限に関連するすべての機能を無効にするのに役立ちます。必要に応じて、本当に必要なときに許可を求めてユーザーの応答を確認することができます。あるDOのための3つの基本的な方法:
checkSelfPermission
(。あなたは、特定のアクセス許可が付与されているかどうかを確認)
shouldShowRequestPermissionRationale
(あなたが許可を要求するための根拠とUIを表示するかどうかを取得します。あなたはこれを行う必要があります。あなたが許可を得ておらず、許可が要求されているコンテキストが、この許可を与えることから得られる利益を明確にユーザに伝えていない場合に限る)。
requestPermissions
マニフェストでアクセス許可を要求する必要があります) あなたは
onRequestPermissionsResult
コールバックメソッド(注に付与されたユーザ権限をチェックする必要があり
public boolean checkPermission(int requestCode, int permissionExplanation, OnRequestPermissionCallback listener, String... permissions) {
boolean permissionGranted = true;
for (String permission: permissions) {
if(ActivityCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED){
permissionGranted = false;
break;
}
}
if (!permissionGranted) {
// Should we show an explanation?
boolean shouldShowRequestPermissionRationale = true;
for (String permission: permissions) {
if(!ActivityCompat.shouldShowRequestPermissionRationale(this, permission)){
shouldShowRequestPermissionRationale = false;
break;
}
}
if (shouldShowRequestPermissionRationale) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
ActivityUtils.showAlertInfoMessage(this, getString(permissionExplanation), getString(R.string.dialog_information), v -> {
ActivityCompat.requestPermissions(this, permissions, requestCode);
}, false);
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this, permissions, requestCode);
}
return false;
}
return true;
}
は:このメソッドは、活動中のコールを取得
例えば、あなたが動的な要求権限を処理するためのワークフローを作成することができ、これらの三つの方法を組み合わせます私はActivityCompat
からFragment
からonRequestPermissionsResult
を処理したい場合は、代わりにFragmentCompat
を使用する必要があります。フラグメントには、抽象メソッドonRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
を含むFragmentCompat.OnRequestPermissionsResultCallback
を実装する必要があります。詳細はhttps://developer.android.com/reference/android/support/v13/app/FragmentCompat.htmlを参照してください。
権限が与えられていないときに、場所ボタンを無効にすると思います。 – Bevor