Skip to content

cczhr/EPermission

Repository files navigation

一行代码实现申请android应用权限

使用说明

在Project 的 build.gradle 加上

repositories {
    ...
	maven { url 'https://jitpack.io' }
}
 dependencies {
    ...
	classpath "com.github.cczhr.EPermission:epermission-plugin:1.0.1"
}

在Module的 build.gradle 加上

plugins {
    ...
    id 'com.cczhr.epermission'
}
dependencies {
    ...
	implementation 'com.github.cczhr.EPermission:epermission:1.0.1'
}

在一个Activity上写一个任意名称的方法 加上@EPermission 并调用它即可

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

    @EPermission(true)//传ture会自动申请权限和弹出拒绝权限提示框
    fun requestPermissions() {
    }
    
 /*  @EPermission//只负责申请权限
    fun requestPermissions() {
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode == EPermission.REQUEST_CODE) {
            //自己处理权限回调
        }
    }*/
    
    
}

原理

Gradle Plugin + ASM 获取合并后的Manifest文件再 通过ASM写入字节码到标记的class文件中

1.0.1 获取权限的方式从 使用合并后的Manifest文件 改为代码的形式

String[] permissions = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS).requestedPermissions;

注意

只支持使用 androidx 的项目

About

一行代码实现申请android应用权限

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages