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