42

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

举个例子:假设一个具有多种功能和大量内容的应用程序——它提供了一个呼叫公司的按钮。这是一个非常方便的功能,而不是写下号码或将其复制并粘贴到手机应用程序中。然而,这不是必需的。

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

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

可以使用不同的权限制作多个应用程序,但是这种方法存在很多问题(额外的开发时间、难以保持维护一致、评论和评级在不同的应用程序之间存在差异,以及如果有几种不同类型的可选权限而不是不同的每个组合可能都需要应用程序)。

该应用程序可以以编程方式检查该功能是否可用,并根据设备启用或禁用它。这样做的问题是,如果应用程序没有权限,那么如果它尝试使用该功能就会崩溃——如果它确实有权限,一些设备将无法在市场。

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

是的,我知道在 Android 中是否可以拥有“可选”权限?是一个类似的问题。我希望获得更新的信息和人们发现的其他解决方法,如果有的话......这个问题的解决方案是什么?除了我上面列出的方法之外,还有其他方法吗?

4

1 回答 1

82

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

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

于 2012-02-15T19:35:35.173 回答