前言
Android 6.0后 加强了权限判断,即使我们再清单文件中添加了权限授权,在使用的时候如果没有进行权限判断依然无法使用该权限。
从官方提供的下图分析,Android 大部分用户已经处于Android 6.0,所以Android 的权限判断,对于应用开发是必不可免的。
image.png
解决办法
在用户在使用该权限的时候我们给用户提示一个弹框进行权限授权,效果如下图。
image.png
弹框是系统提供的,我们在使用权限时进行代码判断就好了
例如使用读取通讯录权限
//判断应用是否已经授权权限
public boolean requestMail(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int hasPermission = activity.checkSelfPermission(Manifest.permission.READ_CONTACTS);
//没有授权
if (hasPermission != PackageManager.PERMISSION_GRANTED) {
//进行授权提示 1006为返回标识
activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_CONTACTS},
1006);
return false;
}
}
return true;
}
//授权回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//1006是通讯录授权
if (requestCode == 1006) {
//跳转通讯录
SwitchActivityManager.startInvitationActivity(mContext);
}
}
使用
//权限判断,弹窗
if (requestMail(InvationWeixinActivity.this)) {
SwitchActivityManager.startInvitationActivity(mContext);
}
大概代码逻辑就是这样,根据自己的项目需求进行判断。