【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限
【摘要】 一、添加依赖在 Module 级别的 build.gradle 中进行如下配置 :dependencies { // 使用 Android X 的应用添加该依赖 implementation 'pub.devrel:easypermissions:3.0.0' // 使用 Android Support Library 支持库 , 添加该依赖 implementat...
一、添加依赖
在 Module 级别的 build.gradle 中进行如下配置 :
dependencies {
// 使用 Android X 的应用添加该依赖
implementation 'pub.devrel:easypermissions:3.0.0'
// 使用 Android Support Library 支持库 , 添加该依赖
implementation 'pub.devrel:easypermissions:2.0.1'}1234567
注意 使用不同的支持库 , 需要配置不同的 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>123456789101112131415161718192021222324252627
三、权限申请最简单用法
只需要在需要权限的时候调用 EasyPermissions.requestPermissions 方法即可 ;
如果用户拒绝后 , 再次点击即可 ;
package kim.hsl.easypermissionsimport android.Manifestimport android.os.Bundleimport android.util.Logimport android.view.Viewimport androidx.appcompat.app.AppCompatActivityimport pub.devrel.easypermissions.EasyPermissionsclass 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 )
}}1234567891011121314151617181920212223242526272829303132
四、推荐使用的用法
推荐使用的用法 :
① 先判定是否有权限 : 调用 EasyPermissions.hasPermissions 判定是否有权限 ;
如果有 : 直接执行相关逻辑 ;
如果没有 : 调用 EasyPermissions.requestPermissions 执行申请权限相关逻辑 ;
② 权限授权完毕 : 执行完毕后再次调用相同的方法 , 这里需要使用 @AfterPermissionGranted 注解 ;
如果用户拒绝权限 , 就不让用户继续使用后续功能 , 不能处理永久拒绝的情况 ;
package kim.hsl.easypermissionsimport android.Manifestimport android.os.Bundleimport android.view.Viewimport android.widget.Toastimport androidx.appcompat.app.AppCompatActivityimport pub.devrel.easypermissions.AfterPermissionGrantedimport pub.devrel.easypermissions.EasyPermissionsclass 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 )
}
}}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
五、GitHub 地址
https://github.com/han1202012/EasyPermissions
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)