您的位置:首页 > 其它

How to check permissions at runtime without throwing SecurityException?

2014-04-25 15:54 411 查看
最近在做公司的超级黄页SDK的时候,需要在SDK启动的时候判断SDK运行所需权限是否都配置了,如果没有的话,提示开发者去配置相应的权限。这里贴出其中的一些关键代码。一是:在运行期间动态检测是否拥有某项权限,二是:获取当前应用所获取到的所有权限。

示例代码如下:

/**
* check permission at runtime
* @param context
* @return
*/
public static boolean checkPermission(Context context){
PackageManager pm = context.getPackageManager();
//PackageManager.checkPermission(String permName, String pkgName);
//1、
// String permission = "android.permission.WRITE_EXTERNAL_STORAGE";
// int hasPerm = pm.checkPermission(permission, context.getPackageName());
//2、
int hasPerm = pm.checkPermission(
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
context.getPackageName());

return hasPerm == PackageManager.PERMISSION_GRANTED;
}

/**
* get all <uses-permission> tags included under <manifest>
* @param context
*/
public static void getAllAppPermissions(Context context){
PackageManager pm = context.getPackageManager();
PackageInfo packageInfo;
try {
//Array of all <uses-permission> tags included under <manifest>, or null if there were none.
packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
String permissions[] = packageInfo.requestedPermissions;

if(permissions!=null){ //to list permission
for(String permission : permissions){
Log.i("4A", "permission:"+permission);
}
}

} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: