我的博客

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