【问题标题】:Expo Permissions returns status of 'undetermined' in ProductionExpo Permissions 在生产中返回“未确定”状态
【发布时间】:2020-09-17 23:34:54
【问题描述】:

在我在 Google Play 商店上发布的 react 本机应用程序中,我需要相机胶卷权限。这在测试期间有效,但在应用的已发布版本中无效。

  getPermissionAsync = async () => {
    const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
    if (status !== "granted") {
      alert("Sorry, we need camera roll permissions to make this work!");
    }
    await this.setState({ permission: status === "granted" });
  };

  _pickMedia = async () => {
    if (this.state.permission != true) {
      await this.getPermissionAsync();
    }
    if (this.state.permission == true) {
        // get image
    }
  };

在测试中,它按预期工作,每次用户尝试上传图片时都请求访问相机胶卷的权限,直到给出。然而在生产中,用户会被提示一次允许使用相机胶卷,无论他们是否允许,都会出现警告框并且用户无法选择图像。如果他们再次尝试添加媒体,则不会提示他们授予权限,只会再次发出警报。

根据博览会文档,我已在 app.json 中将 READ_EXTERNAL_STORAGE 添加到我的权限中:

    "android": {
      "permissions": ["READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"],
    }

有人能告诉我为什么这在生产中不起作用吗?

【问题讨论】:

    标签: android react-native permissions expo


    【解决方案1】:

    因为您没有添加 CAMERA 权限,所以它在生产中不起作用。所以,添加 CAMERA permission

    "android": {
          "permissions": ["CAMERA","READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"],
     }
    

    【讨论】:

      【解决方案2】:

      我没有意识到expo publish 不会为已发布的应用程序更新app.json 的部分内容,您需要改为运行expo build。问题是我最初没有将WRITE_EXTERNAL_STORAGE 添加到权限中,后来我使用expo publish 来更新应用程序。这意味着发布的版本实际上并未更新。现在运行expo build 并生成新的应用程序包后,权限开始正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-13
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-20
        • 1970-01-01
        • 2022-12-12
        相关资源
        最近更新 更多