一行代码搞定漂亮的Android6.0权限申请界面

概述

随着Android6.0的普及,权限申请也变成了我们开发中必写的一段代码。比如sd卡权限、定位权限、拍照权限,这些几乎都是每个app必备的。而一般情况下我们都会在需要权限之前申请,然后各种判断。那既然是一些必备的是权限,我们为何不在我们一次打开app的时候就把这个全部都申请了呢?可是一下申请那么多权限对用户来说显然不是很友好,所以我们不妨在申请权限之前告诉一下用户,好让用户有个心理准备。于是借鉴了饿了么的权限申请界面,封装了一个库

转载请以链接形式注明地址:http://blog.csdn.net/yewei02538/article/details/71713193

效果

效果图

项目地址

https://github.com/yewei02538/HiPermission

过程

在申请权限的过程中难免会遭到用户无情的拒绝,那么就会弹出提示告诉用户这是必备的,你必须得同意!如果用户再一次手抖选择拒绝,那么我们会指引用户去权限管理里面打开我们的权限,如果还是拒绝那么..我特么真没辙了!!!

使用

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");
        }
    });
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

就这样轻松搞定三个必备的权限

你想申请别的权限?那也没问题

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(...);
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

什么?想改下提示信息?界面不符合你的主题颜色?so easy

HiPermission.create(MainActivity.this)
            .title("亲爱的上帝")
            .permissions(permissonItems)
            .filterColor(ResourcesCompat.getColor(getResources(), R.color.colorPrimary, getTheme()))//图标的颜色
            .msg("为了保护世界的和平,开启这些权限吧!\n你我一起拯救世界!")
            .style(R.style.PermissionBlueStyle)
            .checkMutiPermission(...);
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

设置主题后一定要调用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>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

效果图

以下是每个属性的解释

属性名 类型 解释
PermissionTitleColor int 标题文字颜色
PermissionMsgColor int 描述文字颜色
PermissionItemTextColor int 权限文字颜色
PermissionButtonTextColor int 按钮文字颜色
PermissionButtonBackground drawable 按钮背景
PermissionButtonTextColor drawable 对话框背景

最后

如果这个对你有用,不妨来个star?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值