android权限申请Permission
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
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
android权限申请Permission的更多相关文章
- Android 6.0 超级简单的权限申请 (Permission)
代码地址如下:http://www.demodashi.com/demo/13369.html 背景描述 随着Android系统的不断升级,谷歌对用户的隐私是越来越注重了,给我们开发者带来了更多的繁琐 ...
- Android权限申请完全解析(一):Android自带的权限申请
1.为什么要权限申请 6.0以上就需要了,别问为什么.(不是重点,自行搜索) 2.如何进行权限申请 Android自带的权限申请 EasyPermission权限申请 Ps:EasyPermissio ...
- Android权限列表permission说明
网络上不乏android权限列表,但是很少有将列表和使用方法放在一起的,所以特此总结一下 需要在AndroidManifest.xml中定义相应的权限(以获取internet访问权限为例),如下: & ...
- android权限(permission)大全
权限添加位置: 权限代码: 1.android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词 2.android.permission.WRITE_ ...
- (转)android权限(permission)大全
文章转载自:http://blog.csdn.net/hai_qing_xu_kong/article/details/24265533 1.android.permission.WRITE_USER ...
- android权限申请执行过程
弹出的授权对口窗口实际上是一个activity(隐式intent启动上图第二个方块里)(com.android.packageinstaller.permission.ui.Grantpermissi ...
- Android 6.0 超级简单的权限申请2 (Permission)
代码地址如下:http://www.demodashi.com/demo/13506.html 写在前面 上次写了一个权限申请的例子Android 6.0 超级简单的权限申请 (Permission) ...
- Android权限管理之Permission权限机制及使用
前言: 最近突然喜欢上一句诗:"宠辱不惊,看庭前花开花落:去留无意,望天空云卷云舒." 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近面试过 ...
- Android 6.0 权限申请辅助 ----PermissionsHelper
Android 6.0 权限申请辅助 ----PermissionsHelper 项目地址:https://github.com/didikee/PermissionsHelper Android 的 ...
随机推荐
- 【11】vue router 之导航钩子
导航钩子 vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消.有多种方式可以在路由导航发生时执行钩子:全局的, 单个路由独享的, 或者组件级的.http://www.jiansh ...
- linux之exit
原文链接:http://codingstandards.iteye.com/blog/836625 (转载请注明出处) 用途说明 exit命令用于退出当前shell,在shell脚本中可以终止当前 ...
- 东野圭吾--嫌疑人X的献身读后感
经推荐,打算看日本大作家东野圭吾的<嫌疑人X的献身>.书很薄,八开大小的书两百多页,一下午的时间差不多就能读完.读了前面几章,代入感很强,压抑浓郁的气氛着实让人难受,所以打算先看一下电影, ...
- Bits
先%SY... 课件链接 求1的个数 以32位整数为例子,最暴力的方法就是一位一位的数,但是这样太不优美... 以下是优美的方法... 这个问题其实就是二进制求和... 我们考虑分治的思想...每一次 ...
- 【CodeChef】PARADE(费用流,最短路)
题意: 思路: #include<cstdio> #include<iostream> #include<algorithm> #include<cstrin ...
- BZOJ 1658 Water Slides 滑水
Water Slides 滑水 [问题描述] It's a hot summer day, and Farmer John is letting Betsy go to the water park ...
- Mongoose 表实例
/********** 用户表 BY Jaysir 2015.6.21 *********** *********** 可搜索以下关键词来查看未实现功能 *********** *********** ...
- EasyUI-Accordion
EasyUI-Accordion Accordion英文翻译就是 手风琴活 或者 可折叠的 参考效果图: 从图中我们其实也可以将这种组件理解为手风琴式的组件. 该组件方便对数据进行分类管理,在有限空间 ...
- 关于Xcode6 的自定义模板位置
自定义模板放置位置: Xode6 -> 打开App 后, /Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xc ...
- cisco packet 实验教程(一)
01. 开篇:组建小型局域网 实验任务 1.利用一台型号为2960的交换机将2pc机互连组建一个小型局域网: 2.分别设置pc机的ip地址: 3.验证pc机间可以互通. 实验设备 Switch_296 ...