博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android权限申请Permission
阅读量:5887 次
发布时间:2019-06-19

本文共 3671 字,大约阅读时间需要 12 分钟。

代码地址如下:

http://www.demodashi.com/demo/12432.html

android在6.0系统以后,权限申请变得麻烦起来,今天介绍一个超级好用的权限申请库,我在使用中经过再次f封装,使用起来更加方便。

今天的内容涉及:

1.权限库依赖
2.申请代码的调用
3.项目结构图和效果图

1.权限库依赖

在app的build.gradle中做库依赖:

compile 'com.lovedise:permissiongen:0.0.6'

2.申请代码的调用

将要申请的权限放到一个数组中,例如你要申请读写权限,可以这样

//申请读写权限String permissions[] = {Manifest.permission.READ_EXTERNAL_STORAGE,                        Manifest.permission.WRITE_EXTERNAL_STORAGE};

我将权限申请的繁杂代码封装到PermisionHelper中,

然后在要申请权限的地方这样调用:

PermissionHelper.getInstance().checkPermissions(permissions, MainActivity.this);

当然,你还需要重写activity的

onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults)

方法,在里面做如下操作:

@Override    public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {        PermissionHelper.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults);    }

监听权限申请成功或失败,你需要在activity中写如下两个方法做接收

@PermissionSuccess(requestCode = PermissionHelper.NORMAL_PERMISSION)    public void requestSuccess(){        showToast("获取读写权限成功!");        //执行你的逻辑操作        //...    }    @PermissionFail(requestCode = PermissionHelper.NORMAL_PERMISSION)    public void requestFail(){        //不给权限就退出        showToast("获取读写权限失败!");        //执行你的逻辑操作        //...    }

权限使用与接收在activity中完整代码示例如下:

package com.android.permissiondemo;import android.Manifest;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;import kr.co.namee.permissiongen.PermissionFail;import kr.co.namee.permissiongen.PermissionSuccess;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private Button mBtnPermission;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();        setListener();    }    private void initView() {        mBtnPermission = findViewById(R.id.btn_permission);    }    private void initData() {    }    private void setListener() {        mBtnPermission.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_permission:                //申请读写权限                String permissions[] = {Manifest.permission.READ_EXTERNAL_STORAGE,                        Manifest.permission.WRITE_EXTERNAL_STORAGE};                PermissionHelper.getInstance().checkPermissions(permissions, MainActivity.this);                break;            default:                break;        }    }    @PermissionSuccess(requestCode = PermissionHelper.NORMAL_PERMISSION)    public void requestSuccess(){        showToast("获取读写权限成功!");        //执行你的逻辑操作        //...    }    @PermissionFail(requestCode = PermissionHelper.NORMAL_PERMISSION)    public void requestFail(){        //不给权限就退出        showToast("获取读写权限失败!");        //执行你的逻辑操作        //...    }    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {        PermissionHelper.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults);    }    private void showToast(String s){        Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();    }}

然后MainActivity的布局文件activity_main.xml很简单,这里也贴一下吧,方便大家理解

最后不要忘了在Mainfast.xml中添加读写权限:

3.项目结构图和效果图

项目结构图如下:

isEOsFjfuDix3d4o3Fj.png

运行效果图如下:

f9N5nLW2RH1nh5JUDnT.gif
android权限申请Permission

代码地址如下:

http://www.demodashi.com/demo/12432.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

你可能感兴趣的文章
BeanUtils\DBUtils
查看>>
Recover the String
查看>>
VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。
查看>>
11 种在大多数教程中找不到的JavaScript技巧
查看>>
第一天,新的定义
查看>>
WPF EventSetter Handler Command
查看>>
polya定理,环形涂色
查看>>
day4-装饰器前奏
查看>>
【Jest】笔记三:全局变量
查看>>
forward和redirect的区别
查看>>
基本数据类型
查看>>
使用JavaMail完成邮件的编写
查看>>
洛谷P1576 最小花费
查看>>
封装了一个类,可生成验证码,缩略图,及水印图
查看>>
NewSQL为何使传统关系数据库黯然失色?
查看>>
文件服务器 之 Debian下pureftpd的安装心得
查看>>
第一阶段项目总结
查看>>
Java集合详解
查看>>
myeclilpse打开文件所在位置的图标消失后的找回方法
查看>>
数据链路层
查看>>