1. 程式人生 > >一行程式碼搞定漂亮的Android6.0許可權申請介面

一行程式碼搞定漂亮的Android6.0許可權申請介面

概述

隨著Android6.0的普及,許可權申請也變成了我們開發中必寫的一段程式碼。比如sd卡許可權、定位許可權、拍照許可權,這些幾乎都是每個app必備的。而一般情況下我們都會在需要許可權之前申請,然後各種判斷。那既然是一些必備的是許可權,我們為何不在我們一次開啟app的時候就把這個全部都申請了呢?可是一下申請那麼多許可權對使用者來說顯然不是很友好,所以我們不妨在申請許可權之前告訴一下使用者,好讓使用者有個心理準備。於是借鑑了餓了麼的許可權申請介面,封裝了一個庫

效果

效果圖

專案地址

過程

在申請許可權的過程中難免會遭到使用者無情的拒絕,那麼就會彈出提示告訴使用者這是必備的,你必須得同意!如果使用者再一次手抖選擇拒絕,那麼我們會指引使用者去許可權管理裡面開啟我們的許可權,如果還是拒絕那麼..我特麼真沒轍了!!!

使用

Gradle:

compile 'me.weyye.hipermission:library:1.0.7'

Or Maven:

<dependency>
  <groupId>me.weyye.hipermission</groupId>
  <artifactId>library</artifactId>
  <version>1.0.7</version>
  <type>pom</type>
</dependency>

一行程式碼搞定

HiPermission.create(context)
    .checkMutiPermission(new
PermissionCallback() { @Override public void onClose() { Log.i(TAG, "onClose"); showToast("使用者關閉許可權申請"); } @Override public void onFinish() { showToast("所有許可權申請完成"); } @Override public void onDeny(String permisson, int
position) { Log.i(TAG, "onDeny"); } @Override public void onGuarantee(String permisson, int position) { Log.i(TAG, "onGuarantee"); } });

就這樣輕鬆搞定三個必備的許可權

你想申請別的許可權?那也沒問題

List<PermissonItem> permissonItems = new ArrayList<PermissonItem>();
permissonItems.add(new PermissonItem(Manifest.permission.CAMERA, "照相機", R.drawable.permission_ic_memory));
permissonItems.add(new PermissonItem(Manifest.permission.ACCESS_FINE_LOCATION, "定位", R.drawable.permission_ic_location));
HiPermission.create(MainActivity.this)
            .permissions(permissonItems)
            .checkMutiPermission(...);

什麼?想改下提示資訊?介面不符合你的主題顏色?so easy

HiPermission.create(MainActivity.this)
            .title("親愛的上帝")
            .permissions(permissonItems)
            .filterColor(ResourcesCompat.getColor(getResources(), R.color.colorPrimary, getTheme()))//圖示的顏色
            .msg("為了保護世界的和平,開啟這些許可權吧!\n你我一起拯救世界!")
            .style(R.style.PermissionBlueStyle)
            .checkMutiPermission(...);

設定主題後一定要呼叫filterColor(),否者許可權圖示會變成預設的黑色

styles.xml

    <style name="PermissionBlueStyle">
        <item name="PermissionTitleColor">@color/colorPrimaryDark</item>
        <item name="PermissionMsgColor">@color/colorPrimary</item>
        <item name="PermissionItemTextColor">@color/colorPrimary</item>
        <item name="PermissionButtonBackground">@drawable/shape_btn</item>
        <item name="PermissionBackround">@drawable/shape_bg_white</item>
        <item name="PermissionButtonTextColor">@android:color/white</item>
    </style>

效果圖

以下是每個屬性的解釋

屬性名 型別 解釋
PermissionTitleColor int 標題文字顏色
PermissionMsgColor int 描述文字顏色
PermissionItemTextColor int 許可權文字顏色
PermissionButtonTextColor int 按鈕文字顏色
PermissionButtonBackground drawable 按鈕背景
PermissionButtonTextColor drawable 對話方塊背景

最後

如果這個對你有用,不妨來個star?