【问题标题】:Is it possible to make application to adapt for accepted permissions?是否可以使应用程序适应接受的权限?
【发布时间】:2014-05-07 05:45:22
【问题描述】:

我的应用程序需要很多权限。
让我们考虑以下内容:互联网、相机、Fine_location。
互联网许可是唯一需要的。例如,我知道只有 10% 的客户使用相机,只有 2% 的客户使用 GPS。我也知道,在引入 gps 功能后,我的 20% 的客户拒绝使用我的应用程序。
据我所知,一种选择是制作具有不同功能的单独版本的应用程序。
但是,是否可以让用户选择他想接受哪些权限?需要拒绝权限的功能将被禁用。如果调用此类功能,则会弹出解释,建议接受所需的许可或在没有此类功能的情况下继续。

【问题讨论】:

  • Google 有 AppOps,但他们在 4.4.2 的最新更新中删除了它,但我觉得必须有一个窗口,用户可以更新应用程序要求的权限,但这可能会像以前一样增加开发人员的工作使用任何 API,他们必须检查是否授予了权限
  • @Neji true,在我的回答中添加了评论。谢谢指出

标签: android android-permissions android-version


【解决方案1】:

除非你有ROOT权限......

是否可以给用户一个选择? 他想接受的权限?

... 答案是“”,而不是现有的 Android。

如果调用此类功能,则会弹出解释建议 接受所需的许可或在没有此类功能的情况下继续。

这会带来安全风险 - 它会更容易诱骗用户接受新权限。

这个网站上有一些类似的问题,答案都说同样的话:


更新 #1

先前的答案表明这是可能的,但没有提供任何代码。它已被删除,表明它还不能完成。


更新 #2

@Neji 关于App Ops 在再次被删除之前曾短暂投入生产(显然是意外)。

但是,这允许限制某些应用程序、用户的权限。 IIRC 这不允许您向未在清单中声明的​​应用授予额外权限。

【讨论】:

  • @Yarh 哪个 Trulia 应用程序? Real Estate & Homes by Trulia 请求 Your location 就在权限列表的顶部。在为您研究这个答案时,我在某处读到 Play Store 应用程序在某些时候存在权限错误(但无法再次找到链接)
  • 是的,它现在就在那里。我将删除之前的评论,因为我无法提供支持
  • @Yarh - 真遗憾 - 我希望能找到一些例外情况
【解决方案2】:

您可以使用以下 sn-p 检查您的应用程序是否已获得特定权限。 (下面我给出了例子)

if (context
    .checkCallingOrSelfPermission(permission.ACCESS_COARSE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED
    ||
    context
    .checkCallingOrSelfPermission(permission.ACCESS_FINE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED

) {
    // we have been granted above permission.Lets do the task

}

对于系统功能,您可以在清单中指定以下内容。

<uses-feature android:name="android.hardware.telephony" android:required="false" />


PackageManager packageManager = this.getPackageManager();
if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY))

{
    Log.d("TEST", "TELEPHONY IS AVAILABLE");
} else {
    Log.d("TEST", "TELEPHONY IS NOT AVAILABLE");
}

【讨论】:

  • 看起来不错。然而,当用户从谷歌商店安装应用程序时,他被要求接受清单中列出的all 权限。他只是没有勇气不接受其中的一些,或者有可能给用户这样的选择?
  • @vipul 你说的是哪个最新版本? android 不授予任何权限来禁用应用程序要求的任何权限!
  • @VipulShah 来自developer.android.com/guide/topics/manifest/…,据我了解 仍然要求权限。它允许在设备上安装应用程序,这会丢失一些硬件,而丢失的硬件对应用程序并不重要
  • @Yarh @Vipul 也许反对票是因为这不能回答问题:is it possible to give a choice to the user, which permissions he wants to accept?
  • "但是,是否可以让用户选择他想接受哪些权限?" - 当然,应用程序可以询问用户是否要允许某些事情,但是他们必须信任应用程序来尊重该选择。 Stock Android 不提供对权限的行项目否决权,但我相信一些替代版本会提供。如果此处提供的代码与这些代码交互良好,那将会很有趣。
猜你喜欢
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多