Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AndroidManifest.xml隐含权限vs显式权限(使用功能vs使用权限)_Android_Sdk_Permissions_Android Manifest_Filtering - Fatal编程技术网

AndroidManifest.xml隐含权限vs显式权限(使用功能vs使用权限)

AndroidManifest.xml隐含权限vs显式权限(使用功能vs使用权限),android,sdk,permissions,android-manifest,filtering,Android,Sdk,Permissions,Android Manifest,Filtering,我在我的应用程序中有一些权限,例如 <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_L

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

<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
涵盖了很多
功能。没有
android.hardware.location.ACCESS\u MOCK\u location
android.hardware.location.CONTROL\u location\u更新
,只有
android.hardware.location

这里有几个假设,但是android开发者文档并没有详细说明,只是揭示了那些单独的
使用权限
意味着需要一个
使用功能
。当它不一定是必需的,我只是想确保我的android sdk调用有运行的权限

问题:

1) 如果我从三个
使用权限中拿出两个
,那么我所有与A-GPS相关的呼叫是否仍会像我设置了所有这些单独权限一样工作

2)
android.hardware.location
是否变得更具体?我看过安卓、硬件、位置、网络,但我在哪里可以看到所有的可能性

比如说,如果我从三个命令中拿出两个,我所有的A-GPS相关的呼叫仍然会以完全相同的方式工作

那么,这三个权限中的两个应该是不必要的<代码>访问模拟位置与GPS无关,但与您自己的模拟位置提供商有关。引述:

伙计们,请在发布应用程序之前从清单中删除访问\u模拟\u位置权限。遗忘使你成为业余爱好者

普通SDK应用程序无法保存
控制位置更新
——这仅适用于使用固件签名密钥签名的应用程序或安装在固件本身中的应用程序

因此,一个普通的SDK应用程序可以删除这两个用于生产的应用程序,也可以删除
CONTROL\u LOCATION\u UPDATES
用于开发。如果你没有在应用程序中使用模拟位置提供者,你也可以在开发中删除
ACCESS\u mock\u location
。最有可能的是,你根本不应该将这两个权限添加到你的应用程序中

但这一切都与
无关

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

当然。在处理
LocationManager
之前,您可以使用
PackageManager
上的
hasSystemFeature()
查看是否有
android.hardware.location

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

动词“cover”在这里对我来说毫无意义,或者在某种程度上,你的方向颠倒了<代码>元素可能意味着
元素,但不是相反

如果我从三个使用权限中拿出两个,那么我所有与A-GPS相关的呼叫是否仍能像我设置了所有这些单独权限一样工作

见上文

我看过android.hardware.location.NETWORK

您可能已经看到了
android.hardware.location.network

我看过android.hardware.location.NETWORK


的文档中:

谢谢,关于
android.permission.ACCESS_LOCATION\u EXTRA_COMMANDS呢?
@CQM:这是一个正常的权限(即,一个普通的SDK应用程序可以保存它),尽管我不知道它在SDK中控制什么。感谢您的洞察力,我正在修复一个其他人编写的应用程序,由于清单过滤,很多设备在市场上找不到该应用程序,但在我疯狂更改它们之前,我没有识别出它们使用的所有权限。但是我不想让
访问\u位置\u额外的\u命令
权限仅仅成为
android.hardware.LOCATION
的必要条件,但我不知道它控制着什么either@CQM:由于我从未见过使用
ACCESS\u LOCATION\u EXTRA\u命令,因此我只需删除它并测试你的应用程序,以确认它仍然有效。