ともちゃんのアプリ開発日記

組込みC言語プログラマだったともちゃんが、四苦八苦しながら、AndroidのJAVA/Kotlin、iOSのSwiftUIを習得して行きます。ともちゃんの備忘録も兼ねています。

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;
}
}
}