前言
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);
}
大概代碼邏輯就是這樣,根據自己的項目需求進行判斷。