Android6 0及以上動態申請許可權詳細講解

2021-08-04 05:23:30 字數 2061 閱讀 3749

不知不覺android已經到了8.0,記得剛開始6.0剛出來的時候也是看了別人寫的一些文章這麼慢慢的過來了,轉眼已經快要兩年了,感嘆時光過的好快,然而不知道自己到底進步了多少。也許因為自己很懶,不善於總結,導致有時候明明之前見過某個知識點,卻又給忘了。當後來慢慢寫筆記的時候,我發現筆記對自己真的很重要,假如某個知識忘了,一下子就知道自己記過,在某個地方,如果不總結的話,就要花很多時間找資料,所以希望同學都應該整理自己的乙個總結方式。好了,還是說說動態申請許可權,網上有很多這方面的文章,有的也寫的很好,我想自己記錄下來就成了自己的東西,同時也給剛開始接觸這一塊的同學做做參考。

1,首先還是要先判斷android版本是不是23以及以上版本:

build.version

.sdk_int >= build.version_codes.m

2,動態申請我們所需要的許可權,這裡申請三個許可權分別為:相機拍照、儲存,撥打**,然後用乙個陣列給裝起來:

private string mpermission = ;
3,這裡我們就可以開始呼叫requestpermissions()方法申請許可權了,具體**:

if  (build.version

.sdk_int>=build.version_codes.m)

也就這兩行就可以搞定了,其中mrequestcode事先申明的int型別變數,主要是為了處理申請許可權後對返回結果做處理,**:

private

final

int mrequestcode = 321;

4,接下來就是對申請許可權的返回結果做處理了,具體就是重寫onrequestpermissionsresult()方法,具體**如下:

@override

public

void

onrequestpermissionsresult(int requestcode, @nonnull string permissions, @nonnull int grantresults) else }}

}}

其中getpermissions(mstorage,mrequestcode)這個方法是我封裝事先封裝的乙個方法,便於多處呼叫,其實寫法就是這個方法activitycompat.requestpermissions(this,mpermission,mrequescode);傳入要申請的許可權以及請求碼,最開始已經寫了,就不再贅述了。

private

void

alertdialog.builder builder = new alertdialog.builder(this);

builder.setpositivebutton("確定", new dialoginte***ce.onclicklistener()

});builder.settitle("儲存許可權不可用");

builder.setmessage("請在應用許可權設定中手動開啟儲存許可權");

builder.show();

}

以上**應該很好理解就是通過intent意圖開啟對應應用許可權列表,接下來就是重寫onactivityresult方法,用於處理是否手動開啟儲存許可權成功,具體**如下:

@override

protected

void

onactivityresult(int requestcode, int resultcode, intent data) }}

}

最後我們還需要在manifest中靜態新增以上許可權

android:name="android.permission.call_phone" />

android:name="android.permission.camera" />

android:name="android.permission.write_external_storage" />

以上**已詳細注釋,動態申請許可權的主要**部分已經詳細貼出,不足之處還望多多諒解,謝謝。

Android6 0以上,動態許可權申請

6.0許可權的基本知識,以下是需要單獨申請的許可權,共分為9組,每組只要有乙個許可權申請成功了,就預設整組許可權都可以使用了。group android.permission group.contacts permission android.permission.write contacts pe...

android6 0以上動態申請許可權問題。

android公升級到6.0以後,一些敏感許可權不僅僅需要在清單檔案中配置許可權,還需要在程式執行時動態的申請。請求許可權 判斷是否需要動態申請許可權,即系統是否是6.0以上 if build.version sdk int build.version codes.m request read co...

android 6 0以上撥打電話

文章 6.0以下手機正常,6.0以上的卻崩潰 解決方法 targetsdkversion 23以下的 private void calldirectly string mobile 然後manifest 加上許可權就ok了 targetsdkversion 23的需要加以下 final public...