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();
}
}
示例代码如下:
/**
* 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();
}
}
相关文章推荐
- 长按鼠标事件js
- UICollectionView和UIKit Dynamics
- MySQL 数据库性能优化之(一)缓存参数优化
- android中查看网页源码
- 不止Touch ID,iPhone7将有多种身份验证
- 总结Java中return语句的用法
- .NET 4并行编程入门之Task的取消[转]
- ubuntu下编译适合ndk的faac
- Java语言中内存管理的几个技巧
- NYOJ311-完全背包
- 在中国,是什么让年轻人失去"晃荡"青春?
- Android中values各国语言命名规则
- VC++文件操作之最全篇(总结一下希望对大家有用)
- shuffle与排序
- 关于java 对xml 的简单读写操作
- Netscaler 的两种基本模式
- Windows phone IsolatedStorageFile 读写XML
- 详谈JobInProgress中Map/Reduce任务分配
- MFC 如何检测到USB设备插入拔出
- 一些java错误