Skip to content

动态权限申请,Activity、Fragment、单个权限、多个权限一起申请

License

Notifications You must be signed in to change notification settings

CraftsmanHyj/SimplePermission

Repository files navigation

SimplePermission

处理需要动态申请的用户权限:

  • 对于拒绝、不再询问有做再次调起的逻辑封装,支持国产定制系统。
  • 支持一次申请单个、多个动态权限;
  • 支持拒绝后弹窗询问再次请求及提示语自定义;

更新日志;  动态权限列表;  下载Demo体验效果

添加依赖

Step 1. 在项目的根目录build.gradle文件中加入JitPack仓库

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Step 2. 在当前APPDemo/build.gradle文件中加入库的依赖

version:

dependencies {
    implementation 'com.github.CraftsmanHyj:SimplePermission:${version}'
}

使用示例

class MainActivity : AppCompatActivity() {
    private val gpsLauncher = registerForGpsResult {
        onDenied { showToast("拒绝打开GPS") }
        onGranted { showToast("已经打开GPS") }
        onRequestTip { "测试逻辑,测试是否可以准确检查GPS状态!" }
    }
	
    //需要在lifeCycleOwner start状态前创建Register对象
    private val multiPermissionLauncher = registerForPermissionResult {
        onGranted { showToast("多权限:同意了权限请求") }
        onDenied { showToast("多权限:拒绝了权限") }
        onPermanentlyDeniedTip { "多权限:运行APP需要这几个权限,请授权。" }
    }
	
	......

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(mBinding.root)

        initListener()
    }

    private fun initListener() = mBinding.run {
        btnCheckGPSStatus.setOnClickListener { gpsLauncher.launch() }

        btnMultiPermission.setOnClickListener {
            val multiplePermission = arrayOf(CAMERA, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)
            multiPermissionLauncher.launchP(this@MainActivity, *multiplePermission)
        }
		
		......
    }
}

优秀权限库:XXPermissions

About

动态权限申请,Activity、Fragment、单个权限、多个权限一起申请

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages