可以使用以下方法:
公司主营业务:成都网站建设、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出港闸免费做网站回馈大家。
1、判断应用是否具有某个权限
PackageManager pm = getPackageManager();
boolean permission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.RECORD_AUDIO", "packageName"));
if (permission) {
showToast("有这个权限");
}else {
showToast("木有这个权限");
}
2、获取某个应用的权限清单
PackageInfo pack = pm.getPackageInfo("packageName",PackageManager.GET_PERMISSIONS);
String[] permissionStrings = pack.requestedPermissions;
用下面方法
// 判断机器Android是否已经root,即是否获取root权限
protected static boolean haveRoot() {
int i = execRootCmdSilent("echo test"); // 通过执行测试命令来检测
if (i != -1) {
return true;
}
return false;
}
android手机开启了root权限,主要是根据root之后,获取了手机的最高权限,底层linux系统就会生成一个以su结尾的文件,su代表super超级权限,如下代码:
/**
* 判断当前手机是否有ROOT权限
* @return
*/
public boolean isRoot(){
boolean bool = false;
try{
if ((!new File("/system/bin/su").exists()) (!new File("/system/xbin/su").exists())){
bool = false;
} else {
bool = true;
}
Log.d(TAG, "bool = " + bool);
} catch (Exception e) {
}
return bool;
}
android底层是使用linux进行编译和一些驱动、网络管理的,所以可以根据linux的权限特性来判断是否root,权限的管理在linux里面很多,包括读写、删除文件的权限,也有关于访问网络的权限,这些权限都需要开通才能有。
Android带权限的操作,判断是否被拒绝,可以使用AppOpsManager 这个类提供的方法来判断,代码如下:
/*
* 检查某项权限是否被允许还是拒绝
*
* @param context
* @param op
* 权限代码
* @return 1为拒绝,0为允许
*/
@TargetApi(19)
private int checkOp(Context context, int op) {
final int version = Build.VERSION.SDK_INT;
if (version = 19) {
try {
AppOpsManager appOpsManager = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
Method dispatchMethod = AppOpsManager.class.getMethod(
"checkOp", new Class[] { int.class, int.class,
String.class });
int mode = (Integer) dispatchMethod.invoke(
appOpsManager,
new Object[] { op, Binder.getCallingUid(),
context.getPackageName() });
return mode;
} catch (Exception e) {
e.printStackTrace();
}
}
return -1;
} 望采纳~ 谢谢!
有时候产品要求增加一个推送通知的开关(有些还要求具体到哪些通知,比如广告类? 比如重大热点等?)。
我们首先想到的肯定就是再推送回调接口里面判断开启的状态,进而进行过滤!没错,如果对于关闭通知肯定没问题。但是对于开启通知有个问题?就是即使你开启了这个状态值,但是如果 系统关闭了该应用的通知权限 ,那么你开启了其实也没有用对吧?
所以正常的逻辑是:
1. 如果关闭,则不用判断权限,直接关闭就行
2. 如果开启,首先判断是否有通知权限,如果有则走关闭逻辑就行;如果没有,则把开关状态重置回来,然后申请通知权限 - 通知权限开启后再次开启就没有问题了
**a **直接给判断权限的工具类:
b 跳转到通知设置的界面(自己做了下完善和测试)
啊哈!!目前就是酱紫,这个应该有官方的吧,我找找看...有相关类的说明,但是具体的案例没有。不过有具体的一些个解释:
比如: Settings | Android Developers
再比如判断的方式:
意思就是说:当一个NotificationChannel 被阻塞时,这个getImportance()的值就是IMPORTANCE_NONE,其他情况则不是。所以8.0也就可以根据这个状态来做判断.8.0以下的话采用的是反射的方式 - 这个具体的大家可以研究一下。小白暂时不研究了,先做个记录和简单学习。
最后使用逻辑:Switch控件(selector_thumb, selector_track就是slector,里面就是一些个shape文件...)
剩下的你可以测测了哟...小宝贝...
想要判断是否拥有拍照权限,你可以这样做:
android在开发中有时候要判断应用中是否有某项权限,或者想获取到某个应用的权限清单,可以使用以下方法
1) 判断应用是否具有某个权限
PackageManager pm = getPackageManager();
boolean permission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.RECORD_AUDIO", "packageName"));
if (permission) {
showToast("有这个权限");
}else {
showToast("木有这个权限");
}