引言截图源码
引言目前 Jetpack Compose 的权限申请方面还不太成熟,官方推荐的做法是使用 accompanist ,但该库尚处于 Experimental 阶段,且使用起来也不简单。这里记录一下我自己发现的一种非常简单优雅的权限申请方法。
截图
源码
小提示:别忘了在Manifest文件中先声明权限,如果是Android10以上的话,还得在 Manifest 的 application 中添加属性
...
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) requestPermissions( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE ) { setContent { if (it.isEmpty()) { Main() } else { RequestFailed(permissions = it) } } } } private fun requestPermissions(vararg permissions: String, onResult: (List) -> Unit) { registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { result -> val failed = result.filter { !it.value }.keys onResult(failed.toList()) }.launch(arrayOf(*permissions)) } } @Composable fun RequestFailed(permissions: List ) { LazyColumn { items(permissions) { Text(text = "权限 $it 获取失败。") } } } @Composable fun Main() { Text(text = "权限申请成功!") }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)