代码编织梦想

01. Compose 可组合组件之Row And Column

02. Compose 可组合组件之 属性 modifier

03. Compose 可组合组件之Card 图片

04. Compose 字体

05. Compose State

06. Compose SnackBar

07. Compose List

08. Compose ConstrainLayout

09. Compose Button

10. Compose CheckBox

11. Compose 对于复杂界面的尝试

12. Compose 之原生xml布局加入Compose代码

13. Compose 之Compose代码插入xml布局

14. Compose 之简易朋友圈列表

15. Compose 使用CameraX

16. Compose 权限申请Permission

@ExperimentalPermissionsApi
class PermissionActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            FeatureThatRequiresCameraPermission { startAppSettings() }
//            FeatureThatRequiresCameraPermission1 { startAppSettings() }
        }
    }

    private fun startAppSettings() {
        val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
        intent.data = Uri.parse("package:$packageName")
        startActivity(intent)
    }

    
    @Composable
    private fun FeatureThatRequiresCameraPermission(navigateToSettingsScreen: () -> Unit) {
        // Track if the user doesn't want to see the rationale any more.
        var doNotShowRationale by rememberSaveable { mutableStateOf(false) }

        val cameraPermissionState = rememberPermissionState(android.Manifest.permission.CAMERA)
        PermissionRequired(
            permissionState = cameraPermissionState,
            permissionNotGrantedContent = {
                if (doNotShowRationale) {
                    Text("Feature not available")
                } else {
                    Column {
                        Text("The camera is important for this app. Please grant the permission.")
                        Spacer(modifier = Modifier.height(8.dp))
                        Row {
                            Button(onClick = { cameraPermissionState.launchPermissionRequest() }) {
                                Text("Ok!")
                            }
                            Spacer(Modifier.width(8.dp))
                            Button(onClick = { doNotShowRationale = true }) {
                                Text("Nope")
                            }
                        }
                    }
                }
            },
            permissionNotAvailableContent = {
                Column {
                    Text(
                        "Camera permission denied. See this FAQ with information about why we " +
                                "need this permission. Please, grant us access on the Settings screen."
                    )
                    Spacer(modifier = Modifier.height(8.dp))
                    Button(onClick = navigateToSettingsScreen) {
                        Text("Open Settings")
                    }
                }
            }
        ) {
            Text("Camera permission Granted")
        }
    }

    @Composable
    private fun FeatureThatRequiresCameraPermission1(
        navigateToSettingsScreen: () -> Unit
    ) {
        // Track if the user doesn't want to see the rationale any more.
        var doNotShowRationale by rememberSaveable { mutableStateOf(false) }

        // Camera permission state
        val cameraPermissionState = rememberPermissionState(
            android.Manifest.permission.CAMERA
        )

        when {
            // If the camera permission is granted, then show screen with the feature enabled
            cameraPermissionState.hasPermission -> {
                Text("Camera permission Granted")
            }
            // If the user denied the permission but a rationale should be shown, or the user sees
            // the permission for the first time, explain why the feature is needed by the app and allow
            // the user to be presented with the permission again or to not see the rationale any more.
            cameraPermissionState.shouldShowRationale ||
                    !cameraPermissionState.permissionRequested -> {
                if (doNotShowRationale) {
                    Text("Feature not available")
                } else {
                    Column {
                        Text("The camera is important for this app. Please grant the permission.")
                        Spacer(modifier = Modifier.height(8.dp))
                        Row {
                            Button(onClick = { cameraPermissionState.launchPermissionRequest() }) {
                                Text("Request permission")
                            }
                            Spacer(Modifier.width(8.dp))
                            Button(onClick = { doNotShowRationale = true }) {
                                Text("Don't show rationale again")
                            }
                        }
                    }
                }
            }
            // If the criteria above hasn't been met, the user denied the permission. Let's present
            // the user with a FAQ in case they want to know more and send them to the Settings screen
            // to enable it the future there if they want to.
            else -> {
                Column {
                    Text(
                        "Camera permission denied. See this FAQ with information about why we " +
                                "need this permission. Please, grant us access on the Settings screen."
                    )
                    Spacer(modifier = Modifier.height(8.dp))
                    Button(onClick = navigateToSettingsScreen) {
                        Text("Open Settings")
                    }
                }
            }
        }
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010436867/article/details/120768978

android动态申请权限,rxpermissions_qq_36699930的博客-爱代码爱编程

android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户。 在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在运行时根据用户的需要动态授予。

rxpermission权限请求_峰雪轩的博客-爱代码爱编程

RxPermission权限请求 RxPermission源码地址 依赖库 implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'

android7.0以上动态权限申请 使用rxpermissions框架,让申请权限更加轻松。_苗文源manuel的博客-爱代码爱编程

 这里使用 的是 RxPermissions ,由RxJava2提供支持的Android运行时权限 ,让代码简洁,申请权限更加方便。  该库允许将RxJava与新的Android M权限模型一起使用。   使用时候导入依赖: allprojects { repositories { ... maven { ur

rxpermissions——权限申请库_快乐肥柴的博客-爱代码爱编程_rxpermissions

RxPermissions——权限申请库 在Android基础知识(十六):Android运行时权限中,介绍了关于Android的系统权限分类,以及在Android6.0之后申请运行时权限的官方使用的方法。 而RxPerm

rxpermission权限申请-爱代码爱编程

一、RxPermission使用 1、引用依赖: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.tbru

基于Jetpack的LiveData动态权限申请-爱代码爱编程

  在以前,我们项目框架通常使用Rxjava+Retrofit+okhttp,所以使用RxPermissions进行动态权限申请就顺理成章了。随着Google新技术的推出,kotlin、jetpack成为大势所趋,如果项目中没有使用Rxjava,那么依赖于Rxjava的RxPermissions也就无法适用了。   RxPermissions 利用了Rxj

RxPermissions:动态权限申请-爱代码爱编程

参考: tbruyelle / RxPermissions RxPermission权限申请 依赖导入 allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { impl

Android 6.0(权限申请)RxPermission2源码解析-爱代码爱编程

Android 6.0(权限申请)RxPermission2源码解析 为什么需要申请动态权限原生权限申请方式RxPermission2权限申请方式request和 requestEach的区别源码解析总结 为什么需要申请动态权限 Android在6.0之前申请权限是在manifest中配置的,但在6.0版本了保护用户隐私引入了一种新的权限模式

java 权限申请三方库,RxPermissions-简单明了的权限申请库-爱代码爱编程

简单明了的权限申请库,再结合rxjava的话,用起来,一个字:爽简单明了的权限申请库,再结合rxjava的话,用起来,一个字:爽RxView.clicks(findViewById(R.id.enableCamera)) .compose(rxPermissions.ensure(Manifest.permission.CAMERA)) .subs

android动态注册服务器,Android 6.0动态权限申请教程-爱代码爱编程

PermissionManage 介绍 如果设备运行的是 Android 6.0(API 级别 23)或更高版本,并且应用的 targetSdkVersion 是 23 或更高版本,则应用在运行时向用户请求权限。 如果设备运行的是 Android 5.1(API 级别 22)或更低版本,并且应用的 targetSdkVersion 是 22 或更

android rx申请权限,RxPermission权限申请-爱代码爱编程

一、RxPermission使用 1、引用依赖: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.tbruyelle:rxpermissions:0.10.

android链接权限申请,android 权限动态申请 RxPermissions使用-爱代码爱编程

git地址点击打开连接html 引用java compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar' 使用方法以下,直接使用不须要判断是否在6.0之上,这是kotlin的语法跟java没区别git val rxPermissions = RxPermissions(this)

17. Compose 时钟Clock的绘制-爱代码爱编程

01. Compose 可组合组件之Row And Column 02. Compose 可组合组件之 属性 modifier 03. Compose 可组合组件之Card 图片 04. Compose 字体 05. Compose State 06. Compose SnackBar 07. Compose List 08. Compose

Jetpack Compose 动态权限申请(Permission Request)-爱代码爱编程

在 Jetpack Compose 动态申请权限可以使用两种方法 rememberLancherForActivityResultAccompanist 的 Permissions接下来分贝展示一下两种用法 代码环境如下: Kotlin 1.5.2Jetpack Compose 1.0.2Android Studio Chipmunk | 202

#Android开发杂记--Jetpack Compose 中的权限申请-爱代码爱编程

#Android开发杂记--Jetpack Compose 中的权限申请 引言截图源码 引言         目前 Jetpack Compose 的权限申请方面还不太成熟,官方推荐的做法是使用 accompanist ,但该库尚处于 Experimental 阶段,且使用起来也不简单。这里记录一下我自己发现的一种非常简单优雅的权限申请方法。