判斷是否獲得對應許可權
有則執行邏輯;沒有則需要去申請對應許可權
申請完之後處理申請的結果
正常**如下:
//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...