Android 6.0のRuntime Permission
Android 6.0のRuntime Permissionの取得方法です。
1.Activityで実行する例
ストレージのアクセス権を得る場合の例です。
if (ContextCompat.checkSelfPermission(ExportImportActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// アクセス権がすでに付与されているときの処理
} else {
// アクセス権を付与する処理
ActivityCompat.requestPermissions(ExportImportActivity.this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
}
ユーザが許可/不許可を選択したときの処理
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case 0: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//許可された場合の処理
}
break;
}
}
}
2.Fargmentで実行する例
ストレージのアクセス権を得る場合の例です。
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// アクセス権がすでに付与されているときの処理
} else {
// アクセス権を付与する処理
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag("ExportImport");
FragmentCompat.requestPermissions(fragment, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
}
} else {
// Android 6.0未満の時
}
ユーザが許可/不許可を選択したときの処理
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case 0: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//許可された場合の処理
}
break;
}
}
}