名稱 | permissions4m |
---|---|
語言 | Android |
平臺 | GitHub |
作者 | jokermonn |
鏈接 | 點此進入 |
谷歌在安卓5.0以后加入了動態(tài)權限申請,所以安卓日常開發(fā),需要做高版本的權限適配這一塊容握。今天給大家推薦一款開源的動態(tài)權限申請庫,對動態(tài)權限申請做了封裝车柠,使得整個過程更加簡便剔氏。
該項目是基于鴻洋大神的 MPermissions 項目進行二次開發(fā),使用編譯時注解竹祷,較運行時注解效率更高谈跛。起初目的是僅作為純粹的 Andriod 編譯時注解項目,較原有項目有以下升級:
- 支持 java8
- 支持一行代碼同步請求多個權限
- 支持多種回調函數(shù)塑陵,代碼可以更簡潔
permissions4m 為適配國產機型而迭代感憾,目前支持國產機型適配和支持國產機型5.0權限申請。
使用方法
- 導入依賴
在項目根目錄的build.gradle添加以下代碼:
buildscript {
// ...
}
allprojects {
repositories {
// 請?zhí)砑尤缦乱恍? maven { url 'https://jitpack.io' }
}
}
在App Module里添加:
dependencies {
compile 'com.github.jokermonn:permissions4m:2.1.0-lib'
annotationProcessor 'com.github.jokermonn:permissions4m:2.1.0-processor'
}
- 使用
在 Activity 或 Fragment 中令花,需要手動添加 onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) 方法以支持權限申請回調阻桅,代碼如下即可:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[]
grantResults) {
Permissions4M.onRequestPermissionsResult(MainFragment.this, requestCode, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
單個權限申請:
Permissions4M.get(MainActivity.this)
// 是否強制彈出權限申請對話框凉倚,建議設置為 true,默認為 true
// .requestForce(true)
// 是否支持 5.0 權限申請嫂沉,默認為 false
// .requestUnderM(false)
// 權限稽寒,單權限申請僅只能填入一個
.requestPermissions(Manifest.permission.RECORD_AUDIO)
// 權限碼
.requestCodes(AUDIO_CODE)
// 如果需要使用 @PermissionNonRationale 注解的話,建議添加如下一行
// 返回的 intent 是跳轉至**系統(tǒng)設置頁面**
// .requestPageType(Permissions4M.PageType.MANAGER_PAGE)
// 返回的 intent 是跳轉至**手機管家頁面**
// .requestPageType(Permissions4M.PageType.ANDROID_SETTING_PAGE)
.request();
將會回調相應的 @PermissionsGranted趟章、@PermissionsDenied杏糙、@PermissionsRationale/PermissionsCustomRationale、@PermissionsNonRationale 所修飾的方法
多個權限同步申請:
@PermissionsRequestSync(permission ={Manifest.permission.BODY_SENSORS,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.READ_CALENDAR},value = {SENSORS_CODE, LOCATION_CODE, CALENDAR_CODE})
public class MainActivity extends AppCompatActivity
更多使用方法蚓土,可參考該項目的GitHub Page 宏侍。