19

コードから manifest.xml の特定の権限を確認するにはどうすればよいですか? アプリケーションに必要なアクセス許可が欠落している場合、例外をスローしたいと考えています。

たとえば、GPS を使用している特定のアクティビティの起動時に Android も例外をスローすることはわかっていますが、マニフェストを確認して、アプリケーション自体の起動時に例外をスローする必要がありますFINE_LOCATIONCOARSE_LOCATIONこれは、位置情報へのアクセスだけでなく、他の権限にも当てはまります。

どんな提案も役に立ちます。

4

2 に答える 2

37

PackageManagerを使用して、特定の権限に対して権限が付与されているかどうかを確認できます。例えば

    PackageManager pm = getPackageManager();
    if (pm.checkPermission(permission.FINE_LOCATION, getPackageName()) == PackageManager.PERMISSION_GRANTED) {
        // do something
    } else {
        // do something
    }
于 2011-11-28T07:29:56.827 に答える
13

<uses-permission>以下を使用して、実行時に使用可能なタグを読み取ることができます。古いバージョンの Android と Android 6 および 7 でテスト済み

PackageManager pm = getPackageManager();
try
{
    PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS);
    String[] requestedPermissions = null;
    if (packageInfo != null) {
        requestedPermissions = packageInfo.requestedPermissions;
    }

    if (requestedPermissions != null && requestedPermissions.length > 0)
    {
        List<String> requestedPermissionsList = Arrays.asList(requestedPermissions);
        ArrayList<String> requestedPermissionsArrayList = new ArrayList<String>();
        requestedPermissionsArrayList.addAll(requestedPermissionsList);

        Log.i(ExConsts.TAG, ""+requestedPermissionsArrayList);
    }
}
catch (PackageManager.NameNotFoundException e)
{
    e.printStackTrace();
}
于 2016-11-03T05:04:12.063 に答える