android权限申请Permission

代码地址如下:
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大师代发,拒绝转载,转载需要作者授权

posted on   demo例子集  阅读(5233)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示