許可を確認するには(この例では、カメラを使用する権限です):ActivityCompat.requestPermissionsが実行されている場合、対話は、あなたが結果をキャッチすることができた後に、ユーザのために表示されます
int permissionCheck = ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA);
if (permissionCheck == PackageManager.PERMISSION_DENIED) {
// permission is not granted yet, let's ask for it
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
MyActivity.cameraRequestCode);
} else {
// permission is already granted
}
この様活性のonRequestPermissionsResultをオーバーライドすることによって:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MyActivity.cameraRequestCode: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// action when permission granted
} else {
// action when permission denied
}
return;
}
}
}
MyActivity.cameraRequestCodeが静的intで、任意のユニークなint型の値にすることができます。
ご回答ありがとうございますが、アクティビティに含まれていないアダプタでコールバックを実装したいと考えています。代わりに、私がそのメソッドにオーバーライドされていないメソッドを実装しようとすると、その理由は分かりません。 –
悲しいことに、onRequestPermissionsResultは、アクティビティまたはフラグメントでのみオーバーライドできます。アダプターが結果を処理するようにするには、アクティビティー/フラグメントからアダプターに渡す必要があります。 – Archlin