不知不覺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...