8

我的应用程序中有一些权限,例如

<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

我怀疑它们实际上并不是必需的。

根据Android文档,它们都暗示

<uses-feature
    android:name="android.hardware.location"/>

是真实的和必需的。

所以,例如,如果我取出三个命令中的两个,我所有与 A-GPS 相关的调用仍然会以完全相同的方式工作吗?

除了人们重复 android 文档之外,似乎并没有太多关于此的文献。

最终,我认为对这么多代码元素暗示 android:required = true 限制了我可以访问的设备数量。

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

将向更多设备开放应用程序,我可以在应用程序中使用条件逻辑来允许执行某些功能。

但我的主要问题是它android.hardware.location涵盖了很多<uses-permission/>功能。没有android.hardware.location.ACCESS_MOCK_LOCATIONandroid.hardware.location.CONTROL_LOCATION_UPDATES,只有android.hardware.location

这里有几个假设,但 android 开发人员文档并没有详细说明,只是表明这些单独的uses-permissions意味着需要一个uses-feature。当它不一定是必需的时,我只想确保我的 android sdk 调用有权运行

问题:

1) 如果我取出其中三个中的两个uses-permissions,我的所有与 A-GPS 相关的调用是否仍会像我设置了所有这些单独的权限一样以完全相同的方式工作?

2) 是否android.hardware.location变得更具体?我已经看到android.hardware.location.NETWORK了,但是我在哪里可以看到所有的可能性?

4

1 回答 1

5

所以,例如,如果我取出三个命令中的两个,我所有与 A-GPS 相关的调用仍然会以完全相同的方式工作吗?

那么,这三个权限中的两个应该是不必要的。ACCESS_MOCK_LOCATION与 GPS 无关,而是与您自己的模拟位置提供商有关。引用Cyril Mottier 的话

伙计们,在发布您的应用程序之前,请从您的清单中删除 ACCESS_MOCK_LOCATION 权限。遗忘使你成为业余爱好者。

并且普通的 SDK 应用程序无法保存CONTROL_LOCATION_UPDATES——这仅适用于使用固件签名密钥签名或安装在固件本身中的应用程序。

因此,一个普通的 SDK 应用程序可以删除这两个用于生产,也可以删除CONTROL_LOCATION_UPDATES用于开发。如果您没有在您的应用程序中使用模拟位置提供程序,您也可以ACCESS_MOCK_LOCATION在开发中删除。最有可能的是,您一开始就不应该将这两个权限添加到您的应用程序中。

不过,这一切都与此无关<uses-feature>

我可以在应用程序中使用条件逻辑来允许执行某些功能。

绝对地。你可以用hasSystemFeature()onPackageManager看看你有没有android.hardware.location,再麻烦处理LocationManager

但我的主要问题是 android.hardware.location 涵盖了很多功能。

动词“cover”在这里对我来说毫无意义,或者在某种程度上,你的方向颠倒了。<uses-permission>元素可能暗示<uses-feature>元素,但不能反过来。

如果我取消了其中三个使用权限中的两个,我所有与 A-GPS 相关的调用是否仍会像我设置了所有这些单独的权限一样工作?

往上看。

我见过 android.hardware.location.NETWORK

你可能见过android.hardware.location.network

我见过 android.hardware.location.NETWORK

在文档中:http <uses-feature>: //developer.android.com/guide/topics/manifest/uses-feature-element.html

于 2012-09-28T17:04:52.427 回答