我的博客
為滄州等地區用戶提供了全套網頁設計制作服務,及滄州網站建設行業解決方案。主營業務為做網站、網站制作、滄州網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
我的博客:Android6.0動態權限申請步驟以及需要注意的一些坑
因為工作需要,簡單研究了一下Android6.0權限申請,在Google提供的sample的基礎上,寫了一個簡單的demo。算是自己的筆記吧,可能會比較混亂,主要是方便以后查看。后期有別的問題,隨時更新~
(1)checkSelfPermission:檢查是否擁有這個權限
(2)requestPermissions:請求權限,一般會彈出一個系統對話框,詢問用戶是否開啟這個權限。
(3)shouldShowRequestPermissionRationale:在允許詢問時返回true ; 在權限通過 或者權限被拒絕并且禁止詢問時返回false ,如果從來沒有詢問過,也是返回的false, 所以單純的使用shouldShowRequestPermissionRationale去做什么判斷,是沒用的。。。 所以說這個地方有坑,我的解決方法是,在回調里面處理,如果用戶拒絕了這個權限,則打開本應用信息界面,由用戶自己手動開啟這個權限。
(4)每個應用都有自己的權限管理界面,里面有本應用申請的權限以及各種狀態,即使用戶已經同意了你申請的權限,他也隨時可以關閉
其實和申請一個權限是一樣的,只是requestPermissions(final @NonNull Activity activity,
final @NonNull String[] permissions, final int requestCode),里面的permissions給的參數多些而已。
1、在Android 6.0之后,APP獲取手機的權限不再僅僅只是在清單文件中聲明就行了,它將手機的權限分為了兩類:正常權限和危險權限:
2、動態申請權限涉及到的方法:
3、例子:申請獲取用戶位置信息(危險權限)
4、權限清單:
例如
申請定位權限:
if (Build.VERSION.SDK_INT =M !hasPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)) {
String[] permissions =new String[1];
permissions[0] = Manifest.permission.ACCESS_COARSE_LOCATION;
Log.e("TAG", "onRequestPermissionsResult 申請權限");
//申請權限
ActivityCompat.requestPermissions(this,? ? ? ?permissions,MY_LBS_PERMISSION_REQUEST_CODE);
}
//處理權限請求
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode ==MY_LBS_PERMISSION_REQUEST_CODE) {
boolean isAllGranted =true;
? ? for (int grant : grantResults) {
if (grant != PackageManager.PERMISSION_GRANTED) {
isAllGranted =false;
break;
? ? ? ? }
}
if (isAllGranted) {
Log.e("TAG", "onRequestPermissionsResult 同意");
? ? }else {
List notAsk =new ArrayList();
? ? ? ? for (String permission : permissions) {
Log.e("TAG", "onRequestPermissionsResult - 循環 -");
? ? ? ? ? ? if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permission)
ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
notAsk.add(permission);
? ? ? ? ? ? }
}
if (notAsk.size() 0) {//拒絕不再提醒
? ? ? ? ? ? Log.e("TAG", "onRequestPermissionsResult 拒絕不再提醒");
? ? ? ? }else {
? ? ? ? ? ? ?Log.e("TAG", "onRequestPermissionsResult 本次拒絕");
? ? ? ? }
}
}
}
/**
* 檢查是否有某個權限
* @param context? ? context
* @param permission 權限
* @return true means has
*/
public static boolean hasPermission(Context context, String permission) {
return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
}
網站題目:android權限申請,android 權限管理
分享URL:http://vcdvsql.cn/article10/dsdisdo.html
成都網站建設公司_創新互聯,為您提供品牌網站建設、外貿建站、移動網站建設、虛擬主機、微信公眾號、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯