代码地址如下:
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很简单,这里也贴一下吧,方便大家理解

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:id="@+id/btn_permission"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="权限申请"/> </RelativeLayout>

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

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

3.项目结构图和效果图

项目结构图如下:

运行效果图如下:



android权限申请Permission

代码地址如下:
http://www.demodashi.com/demo/12432.html

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

android权限申请Permission的更多相关文章

  1. Android 6.0 超级简单的权限申请 (Permission)

    代码地址如下:http://www.demodashi.com/demo/13369.html 背景描述 随着Android系统的不断升级,谷歌对用户的隐私是越来越注重了,给我们开发者带来了更多的繁琐 ...

  2. Android权限申请完全解析(一):Android自带的权限申请

    1.为什么要权限申请 6.0以上就需要了,别问为什么.(不是重点,自行搜索) 2.如何进行权限申请 Android自带的权限申请 EasyPermission权限申请 Ps:EasyPermissio ...

  3. Android权限列表permission说明

    网络上不乏android权限列表,但是很少有将列表和使用方法放在一起的,所以特此总结一下 需要在AndroidManifest.xml中定义相应的权限(以获取internet访问权限为例),如下: & ...

  4. android权限(permission)大全

    权限添加位置: 权限代码: 1.android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词 2.android.permission.WRITE_ ...

  5. (转)android权限(permission)大全

    文章转载自:http://blog.csdn.net/hai_qing_xu_kong/article/details/24265533 1.android.permission.WRITE_USER ...

  6. android权限申请执行过程

    弹出的授权对口窗口实际上是一个activity(隐式intent启动上图第二个方块里)(com.android.packageinstaller.permission.ui.Grantpermissi ...

  7. Android 6.0 超级简单的权限申请2 (Permission)

    代码地址如下:http://www.demodashi.com/demo/13506.html 写在前面 上次写了一个权限申请的例子Android 6.0 超级简单的权限申请 (Permission) ...

  8. Android权限管理之Permission权限机制及使用

    前言: 最近突然喜欢上一句诗:"宠辱不惊,看庭前花开花落:去留无意,望天空云卷云舒." 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近面试过 ...

  9. Android 6.0 权限申请辅助 ----PermissionsHelper

    Android 6.0 权限申请辅助 ----PermissionsHelper 项目地址:https://github.com/didikee/PermissionsHelper Android 的 ...

随机推荐

  1. 请大家注意这个网站www.haogongju.net

    乱转发我的文章,求职之路(拿到百度.美团.趋势科技.华为offer),不注明出处,我把原来的博客删除了,被转载的文章还在,www.haogongju.net,你侵犯版权!!!请你自动撤销!!!

  2. 折线统计(line)

    折线统计(line) 题目描述 二维平面上有n个点(xi, yi),现在这些点中取若干点构成一个集合S,对它们按照x坐标排序,顺次连接,将会构成一些连续上升.下降的折线,设其数量为f(S).如下图中, ...

  3. P1558 色板游戏 (线段树)

    题目链接 Solution 一个简单的 或 线段树.竟然坑了我一个小时... 因为颜色很小,所以把状态压起来. 然后每个节点上的数值代表当前颜色状态. 然后节点合并很简单,直接或起来. 需要注意一下的 ...

  4. bzoj 3101 N皇后构造一种解 数学

    3101: N皇后 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 70  Solved: 32[Submit][S ...

  5. 传送带(bzoj 1857)

    Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度 ...

  6. nvarchar与varchar的区别

    原文发布时间为:2009-08-05 -- 来源于本人的百度文章 [由搬家工具导入] 1、通俗一點就是varchar適合輸入英文和數字,nvarchar一般用做中文或其它語言的輸入,這樣到別的語系不會 ...

  7. SQL优化 ASP.NET ADO.NET

    原文发布时间为:2009-08-26 -- 来源于本人的百度文章 [由搬家工具导入] 总的考虑方向 1)        根据数据使用的方式来设计数据访问层 2)        缓存数据,避免不必要的操 ...

  8. [LeetCode] Trapping Rain Water 栈

    Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...

  9. Ubuntu中配置Tomcat与Eclipse整合

    Apache Tomcat 作为web服务器已经广泛用于Java Servlets 和 JSP (Java Server Pages) 开发. 环境:Ubuntu10.10 java环境的配置见另一篇 ...

  10. Shell中的单引号(‘)双引号(”)和反引号(·)

    在bash中,$.*.?.[.].’.”.`.\.有特殊的含义.类似于编译器的预编译过程,bash在扫描命令行的过程中,会在文本层次上,优先解释所有的特殊字符,之后对转换完成的新命令行,进行内核的系统 ...