当我们有多个活动时,如何集中运行时权限

时间:2016-10-03 10:52:39

标签: java android android-activity runtime-permissions

抱歉我的英语不好。

我的应用中有多个Activity,我需要集中运行时应用权限。

我需要使用BaseActivity吗?

如果是,请建议我如何在应用中使用Activity的情况下处理它。

如果不是,请建议更好的方法来处理它。

我想减少代码冗余。不想每次Activity一次又一次地编写相同的代码。

我正在寻找负面情况,其中用户拒绝了权限,我必须显示理性,而不是继续要求允许。并基于我必须提供消息或我必须更新UI

2 个答案:

答案 0 :(得分:-2)

引入了运行时权限以控制危险资源

理想情况下,每次使用资源时都必须检查权限。不得删除此代码。

然后,当涉及请求权限时,它是单行代码。我认为你一定不会遇到麻烦。

现在是棘手的部分。处理给定的权限。你绝对可以有一个基类(不推荐),但理想上不同的权限用于不同的目的。

例如位置许可:
在同一活动中说Location.java,我可能需要位置权限来获取使用LatLon值的人的地址,并且在同一活动中我使用位置权限来实时跟踪用户。

现在要处理相同权限的不同实现,您必须具有基于目的的唯一权限代码,但不能基于您正在访问权限的资源。处理基类中的所有这些事情可能很棘手。理想情况下,您必须在其所属的活动中处理权限。它将确保您的代码安全,并防止与其他代码混淆。

始终建议您阅读official docs

  

在某些情况下,您可能会对代码冗余和多种实现感到困惑。为此,Android作为程序员最终处理大部分代码,最不希望的是检查权限并在使用危险资源的任何地方执行适当的操作。

答案 1 :(得分:-2)

如果您有10项活动,并且所有活动都需要位置许可。那么我认为这对您的申请非常重要。

对于关键权限,如果用户不允许,您可以关闭应用程序,因此在第一个活动本身上执行此操作。像facebook一样获得各种许可。这对用户来说可能是糟糕的体验,但对您的应用程序来说是必要的许可。

只需在第一个活动中写入一次,如果用户不允许,则停止应用程序。许多旗舰应用程序都是这样做的。