欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )

程序员文章站 2022-04-14 08:11:37
一、添加依赖、二、在 AndroidManifest.xml 中配置权限、三、权限申请最简单用法、四、推荐使用的用法、五、GitHub 地址、...



上一篇博客 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 ) 是权限申请的详细用法 , 针对用户 拒绝 , 永久拒绝 权限申请操作都有对应的处理方案 , 如果只是简单的使用 , 只调用 EasyPermissions.requestPermissions 方法即可 ;





一、添加依赖



在 Module 级别的 build.gradle 中进行如下配置 :

dependencies {
    // 使用 Android X 的应用添加该依赖
    implementation 'pub.devrel:easypermissions:3.0.0'
 
    // 使用 Android Support Library 支持库 , 添加该依赖
    implementation 'pub.devrel:easypermissions:2.0.1'
}

注意 使用不同的支持库 , 需要配置不同的 EasyPermissions 依赖库 ;

  • 使用 Android X : 需要添加 3.0.0 版本的依赖 ;
  • 使用 Android Support Library 支持库 : 需要添加 2.0.1 版本的依赖 ;




二、在 AndroidManifest.xml 中配置权限



一定不要忘记在 AndroidManifest.xml 中配置权限 , 否则无法使用 ;

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="kim.hsl.easypermissions">

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>




三、权限申请最简单用法



只需要在需要权限的时候调用 EasyPermissions.requestPermissions 方法即可 ;

如果用户拒绝后 , 再次点击即可 ;

package kim.hsl.easypermissions

import android.Manifest
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import pub.devrel.easypermissions.EasyPermissions

class MainActivitySimple : AppCompatActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun onCLick(view : View){
        EasyPermissions.requestPermissions(
            this,
            "权限申请原理对话框 : 描述申请权限的原理",
            100,
            
			// 下面是要申请的权限 可变参数列表 
            Manifest.permission.CAMERA,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.READ_CONTACTS,
            Manifest.permission.READ_SMS,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
        )
    }

}




四、推荐使用的用法



推荐使用的用法 :

① 先判定是否有权限 : 调用 EasyPermissions.hasPermissions 判定是否有权限 ;

  • 如果有 : 直接执行相关逻辑 ;
  • 如果没有 : 调用 EasyPermissions.requestPermissions 执行申请权限相关逻辑 ;

② 权限授权完毕 : 执行完毕后再次调用相同的方法 , 这里需要使用 @AfterPermissionGranted 注解 ;


如果用户拒绝权限 , 就不让用户继续使用后续功能 , 不能处理永久拒绝的情况 ;


package kim.hsl.easypermissions

import android.Manifest
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import pub.devrel.easypermissions.AfterPermissionGranted
import pub.devrel.easypermissions.EasyPermissions

class MainActivitySimple2 : AppCompatActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun onCLick(view : View){
        doSomethingWithPermissions()
    }

    @AfterPermissionGranted( 100 )
    fun doSomethingWithPermissions(){
        if(EasyPermissions.hasPermissions(this,
                Manifest.permission.CAMERA,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.READ_CONTACTS,
                Manifest.permission.READ_SMS,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)){

            // 如果有上述权限, 执行该操作
            Toast.makeText(this, "权限申请通过", Toast.LENGTH_LONG).show()
        }else{
            // 如果没有上述权限 , 那么申请权限
            EasyPermissions.requestPermissions(
                this,
                "权限申请原理对话框 : 描述申请权限的原理",
                100,

                Manifest.permission.CAMERA,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.READ_CONTACTS,
                Manifest.permission.READ_SMS,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
            )
        }
    }
}




五、GitHub 地址



https://github.com/han1202012/EasyPermissions

本文地址:https://blog.csdn.net/han1202012/article/details/108679263