相关疑难解决方法(0)

在Android M的运行时权限中,我们如何区分永不问及停止请求?

根据Google的说法,当谈到M Developer Preview运行时权限时:

  1. 如果您之前从未要求过某种许可,那就请求它

  2. 如果您之前询问过,并且用户说"不",然后用户尝试执行需要被拒绝权限的操作,则应该在再次请求权限之前提示用户解释您需要权限的原因

  3. 如果您之前曾多次询问,并且用户已经说"不,并且停止询问"(通过运行时权限对话框上的复选框),您应该停止打扰(例如,禁用需要权限的UI)

但是,我们只有一个方法,shouldShowRequestPermissionRationale()返回a boolean,我们有三个状态.我们需要一种方法来区分从未问过的状态和停止询问状态,就像我们falseshouldShowRequestPermissionRationale()两者中得到的那样.

对于首次运行应用程序时请求的权限,这不是一个大问题.有很多方法可以确定这可能是您的应用程序的第一次运行(例如,booleanSharedPreferences),因此您假设如果它是您的应用程序的第一次运行,那么您处于从未问过的状态.

但是,运行时权限的一部分愿景是您可能不会事先要求所有这些权限.当用户点击需要该权限的内容时,您可能仅在稍后要求的边缘功能上绑定权限.在这里,应用程序可能已运行多次,持续数月,之后我们突然需要再次请求权限.

在这些情况下,我们是否应该跟踪我们是否自己要求获得许可?或者Android M API中是否有我遗漏的东西告诉我们之前是否询问过?

android android-permissions android-6.0-marshmallow

62
推荐指数
3
解决办法
2万
查看次数

如何在 Jetpack Compose 中获取上下文

fun createListItem(itemIndex: Int) {
Padding(left = 8.dp, right = 8.dp, top = 8.dp, bottom = 8.dp) {
    FlexRow(crossAxisAlignment = CrossAxisAlignment.Center) {
        expanded(1.0f) {
            Text("Item $itemIndex")
        }
        inflexible {
            Button(
                "Button $itemIndex",
                style = ContainedButtonStyle(),
                onClick = {
                    Toast.makeText(
                        this@MainActivity,
                        "Item name $itemIndex",
                        Toast.LENGTH_SHORT
                    ).show()
                })

        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试以正常方式制作 Toast。但我得到了错误我尝试了很多倍数来源但失败了。

android kotlin android-jetpack android-jetpack-compose

46
推荐指数
10
解决办法
1万
查看次数

在android jetpack中使用伴奏权限时如何检测用户是否撤销权限即拒绝权限两次

我想知道如何检测用户何时在伴奏者权限库中撤销权限(两次拒绝权限),我还检查了该库的 GitHub 存储库并且示例是旧的。

我在用,

compose_version = '1.2.0-alpha03'

accompanist_version = '0.24.2-alpha'

这是我的代码片段,

@ExperimentalMaterial3Api
@ExperimentalPermissionsApi
@Composable
fun CameraPermission() {
    /* Camera permission state.*/
    val cameraPermissionState = rememberPermissionState(permission = Manifest.permission.CAMERA)

    val context = LocalContext.current
    val intent =Intent(
        Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
        Uri.fromParts("package", BuildConfig.APPLICATION_ID, null))

    when (cameraPermissionState.status) {

        /* If the camera permission is granted, then show screen with the feature enabled.*/
        PermissionStatus.Granted -> {
            Text("Camera permission Granted")
        }

        is PermissionStatus.Denied -> {
            /*
            * This is a rationale explaining why we need the …
Run Code Online (Sandbox Code Playgroud)

android android-permissions android-camerax android-jetpack-compose jetpack-compose-accompanist

5
推荐指数
1
解决办法
3276
查看次数