【问题标题】:What happens while we change permission manually from outside app in Android当我们从 Android 的外部应用程序手动更改权限时会发生什么
【发布时间】:2019-06-28 05:25:39
【问题描述】:

最近,当应用处于后台时,我在应用外部手动更改权限时遇到了一个问题。这会导致错误并丢失其状态。

我在 S/O 中搜索了解决此问题的完美策略,但找不到关于此问题的丰富答案。有人说该过程正在重新创建。

谁能告诉我这个问题?

我想确切地知道在这种情况下会发生什么,以及如何在用户手动更改权限并返回应用程序时保留状态和数据。

谢谢。

【问题讨论】:

  • 你能在场景中遮遮掩掩吗?哪些权限,您正在获取哪些数据以及数据如何丢失。如何捕获数据。
  • 我认为处理这种情况的最佳方法是在每次执行关键操作时检查权限。通过说关键让我们假设例如请求位置或拍照。现在,无论您的 Activity 是否请求了该权限,并且您已经显示了与快乐路径相对应的 UI(当用户授予权限时),您仍然必须用 if(permissionsGranted) 案例包围关键块。
  • 我也面临同样的问题。活动是在现有活动的基础上重新创建。你有什么解决办法吗?

标签: android android-intent android-activity android-lifecycle


【解决方案1】:

如果您的应用在运行时需要权限,具体取决于权限和使用位置,如果手动撤销权限,它将崩溃,因为应用需要授予的权限。您可以在任何用于防止崩溃的地方检查权限。

【讨论】:

    【解决方案2】:

    当从 android 应用设置中手动删除权限时,如果在应用执行期间未正确处理权限检查,则应用将崩溃。

    在访问需要权限的功能时,您应该为每个功能创建一个入口点,以便在您的代码中启动,您首先检查是否授予权限,并根据结果访问该功能或再次提示权限。

    【讨论】:

      【解决方案3】:

      最近我在手动更改权限时遇到了一个问题 当应用程序在后台时,在应用程序之外。这会导致错误 并失去它的状态。

      问题是什么,您遇到了什么错误? Next- 状态丢失 - 丢失了什么状态?您是否丢失了保存在共享首选项或其他内容中的数据?

      我在 S/O 中搜索了解决这个问题的完美策略,但是 找不到关于此的丰富答案。有人说流程是 正在重新创建。

      Android 官方documentation 为这类场景推荐的方法非常简单 -

      您必须在更广泛的条件下测试您的应用。

      在 Android 6.0 之前,您可以合理地假设,如果您的应用正在运行,它就拥有它在应用清单中声明的​​所有权限。从 Android 6.0 开始,用户可以打开或关闭任何应用的权限。您应该测试以确保您的应用程序正常运行,无论它是否具有任何权限。

      长话短说 - 彻底测试应用 - 特别注意
      1. 您的应用的当前权限和相关代码路径 &
      2. 用户在受权限保护的服务和数据中流动。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多