1. ホーム
  2. android

[解決済み] 実行時にSecurityExceptionを投げずに権限をチェックするには?

2023-01-05 12:07:35

質問

SDからリソースを取得/設定し、SDから見つからなければアセットから取得し、可能であればSDにアセットを書き戻すような関数を設計しています。

この関数は、SDがマウントされアクセス可能かどうかをメソッド呼び出しでチェックすることができます。

boolean bSDisAvalaible = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);

私の設計した関数は、あるアプリ(プロジェクト)から別のアプリ(プロジェクト)へ(android.permission.WRITE_EXTERNAL_STORAGEがあってもなくても)使用することができます。

そして、私はSecurityExceptionで遊ぶことなく、現在のアプリケーションがこの特定の許可を持っているかどうかをチェックしたいと思います。

実行時に現在定義されているパーミッションを参照するための "nice" 方法は存在しますか?

どのように解決するのですか?

この場合 Context.checkCallingorSelfPermission() という関数が使えます。以下はその例です。

private boolean checkWriteExternalPermission()
{
    String permission = android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
    int res = getContext().checkCallingOrSelfPermission(permission);
    return (res == PackageManager.PERMISSION_GRANTED);            
}