Android(安卓)6.0 权限请求问题
最近写项目碰到一个比较烦人的事情,修改前人版本,他在清单文件里设置了 android:targetSdkVersion="23" 很明显这个是Android 6.0的, 我自己的版本比这个低,在Android 6.0手机上更新安装版本时,出错,提示我的版本太低了,好吧,那就是android:targetSdkVersion="23"这个不能低于23了,所以只好修改自己的版本为23。那么问题来了,Android 6.0 权限只在清单文件里设置了还不行,还要在代码里再询问一次,这就很坑了,参照一些文件,跟一些博友的文章,自己搞了一下,写在这边跟大家分享一下,也自己留个档案
首先,Android 6.0 才要判断是否要在代码里判断权限,所以通过下面的方法可以获取手机的版本号:
if (Build.VERSION.SDK_INT >= 23) {
check();
} else {
}
///////////////////////////////////////////////////////////////////////////////////////////////
// 再次判断权限的方法
private void check() {
List
final List
if (!addPermission(permissionsList,
Manifest.permission.ACCESS_COARSE_LOCATION))
permissionsNeeded.add("位置");
if (!addPermission(permissionsList,
Manifest.permission.WRITE_EXTERNAL_STORAGE))
permissionsNeeded.add("读写sd卡");
if (!addPermission(permissionsList, Manifest.permission.CALL_PHONE))
permissionsNeeded.add("电话");
if (!addPermission(permissionsList, Manifest.permission.CAMERA)) {
permissionsNeeded.add("相机");
}
if (!addPermission(permissionsList, Manifest.permission.READ_SMS)) {
permissionsNeeded.add("短信");
}
if (permissionsList.size() > 0) {
requestPermissions(
permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
return;
}
}
private boolean addPermission(List
String permission) {
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(permission);
// Check for Rationale Option
if (!shouldShowRequestPermissionRationale(permission))
return false;
}
return true;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
此外还要重写一个方法
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
if (grantResults != null && !grantResults.equals("")) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
// check();
} else {
// Permission Denied
// 这边是有没给的权限让他再弹一次,因为6.0 有些权限不给,会报错,甚至奔溃闪退
check();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
}
}
代码不多,就没用代码片
更多相关文章
- soot实现Android(安卓)Apps插桩(一)
- OS版本不同造成的一些问题
- Android(安卓)集成海康威视监控 SDK,实现监控录像的查看
- android 代码优化(2)
- 为什么Android要采用Binder作为IPC机制?
- 说说 Android(安卓)中如何操作音频与视频文件
- phonegap推送实现(android)
- 关于更新Android(安卓)sdk之后出现This Android(安卓)SDK requir
- 服务器基于PHP CodeIgniter,Android基于Volley实现多文件/图片上