可选权限,以便应用可以在所有设备上显示并在某些设备上启用可选功能?

时间:2012-02-15 19:32:21

标签: android android-permissions

Android中的许多功能都需要在清单中设置使用权限。然后,这些值确定哪些设备将在市场中看到它们。但是,如果该功能是可选的,应该怎么办...如果它可以在许多设备上运行,但只需要几个许可?

一个例子:让我们说一个具有多种功能和大量内容的应用程序 - 它提供了一个按钮来呼叫公司。这是一个很好的方便功能,而不是写下数字或将其复制并粘贴到手机应用程序中。然而,这并不重要。

如果使用该功能并且将电话权限添加到应用程序中,那么这对于手机来说一切都很好 - 但是平板电脑不会在市场中看到该应用程序。

这个问题的一般解决方案是什么?

可以使用不同的权限制作多个应用程序,但这种方法存在一些问题(额外的开发时间,难以保持维护一致,评论和评级分散在不同的应用程序中,以及是否有多种不同类型的可选权限每种组合可能需要不同的应用程序。)

应用程序可以通过编程方式检查该功能是否可用,并根据设备启用或禁用该功能。问题是如果应用程序没有权限,那么如果它尝试使用该功能它将崩溃 - 如果它确实拥有权限,某些设备将无法在该应用程序中找到该应用程序。市场。

在某些情况下,可以完全从应用程序中删除不重要的功能以避免此问题。这也不是一个很好的解决方案,因为这些功能在支持它的设备上“很高兴”。

是的,我知道Is it possible to have "optional" permissions in Android?是一个类似的问题。我希望有更新的信息以及人们发现的其他解决方法,如果有的话...这个问题的解决方案是什么?除了我上面列出的那些之外,还有其他方法吗?

1 个答案:

答案 0 :(得分:78)

  

这个问题的一般解决方案是什么?

对于该特定问题,请在清单中添加<uses-feature android:name="android.hardware.telephony" android:required="false"/>,以表明this feature is optional。然后,您可以使用PackageManagerhasSystemFeature()来确定设备是否在运行时具有非必需功能。