Android6 0動態許可權申請封裝

2021-08-27 16:02:48 字數 1781 閱讀 1219

判斷是否獲得對應許可權

有則執行邏輯;沒有則需要去申請對應許可權

申請完之後處理申請的結果

正常**如下:

//1.判斷是否獲取了對應的許可權

if(contextcompat.checkselfpermission(mcontext,manifest.permission.write_external_storage)

==packagemanager.permission_granted)else,0x01);

}//3.響應許可權的申請

public

void

onrequestpermissionsresult(int requestcode,string permissions,

int grantresults)else

break;

}}

按照上面我們歸納的三步驟進行封裝:

注意在基類(basefragment和baseactivity)中進行封裝,結構清晰方便呼叫

2.1首先我們需要判斷是否擁有對應的許可權
//判斷是否擁有對應許可權

public

boolean

haspermission(string... permissions)

}//許可權都獲取到的

return

true;

}

這裡我們傳入乙個不定長引數代表呼叫時傳入的需要判斷的許可權,然後使用迴圈依次的判斷是否有申請的許可權,沒有的話return false。如果都有就return true。

2.2對許可權申請的封裝

//許可權申請的封裝

public

void

requestpermission(int requestcode, string... permissions)

}

這裡我們在basefragment中進行封裝,直接呼叫requestpermissions就行,然後傳入請求碼和申請的許可權。

2.3對申請許可權響應的封裝

@override

public

void

onrequestpermissionsresult(int requestcode,

string permissions,int grantresults)

break;

}}

這裡根據前面的請求碼requestcode進行switch-case對應的判斷,如果請求成功則執行邏輯。

這裡為了後面上層**呼叫的方便性和封裝性,把邏輯操作提取出來,在下面實現空方法,然後上層呼叫的時候,再override此方法,再具體實現即可。

//讀寫sd卡業務邏輯,由具體的子類實現

public

void

dosdcard()

@override

public

void

onclick(view view) else

break;

}}

然後再在下面override業務邏輯方法:

@override

public

void

dosdcard()

到這裡就完成了我們對android6.0動態許可權申請的封裝,其實還可以使用一些開源的庫進行封裝,這裡下次我使用的時候,會進行總結。

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

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

Android6 0許可權申請

最近由於專案功能迭代,本身圖省事不想要在 中動態的申請許可權,所以在build.gradle中的minsdk寫成了19 而targetsdkversion 也是19,這樣就避免了在6.0系統上動態申請許可權,本來一切都是ok的,但是在小公尺8上的8.1系統版本中出現了問題,中獲取不到許可權,這塊具體...

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

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