zoukankan      html  css  js  c++  java
  • 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大师代发,拒绝转载,转载需要作者授权

  • 相关阅读:
    聊聊面试-NoClassDefFoundError 和 ClassNotFoundException 区别
    聊聊面试-int和Integer的区别
    数据库char varchar nchar nvarchar,编码Unicode,UTF8,GBK等,Sql语句中文前为什么加N(一次线上数据存储乱码排查)
    SQL Server数据库阻塞,死锁查询
    数据误操作,教你使用ApexSQLLog工具从 SQLServer日志恢复数据!
    IDEA将Maven项目中指定文件夹下的xml等文件编译进classes
    Tomcat 中文乱码,设置UTF-8
    C#实现前向最大匹、字典树(分词、检索)
    23种设计模式汇总
    Head First设计模式——原型模式和访问者模式
  • 原文地址:https://www.cnblogs.com/demodashi/p/8512746.html
Copyright © 2011-2022 走看看