Android 权限和 API 调用

Posted

技术标签:

【中文标题】Android 权限和 API 调用【英文标题】:Android Permissions and API Calls 【发布时间】:2014-12-20 01:39:43 【问题描述】:
    两个不同的 api 调用是否可以产生相同的结果? 例如要从 android 文档中获取设备粗略位置,它是从网络位置派生的大致位置。应用程序可以使用另一个不需要 ACCESS_COARSE_LOCATION 权限的 api 调用来检索网络位置吗?

换句话说,根据 Android 文档,关于 LocationManager,“位置提供程序提供有关设备地理位置的定期报告……一些提供程序需要 GPS 硬件和对许多卫星的可见性;其他提供程序需要使用蜂窝无线电,或访问特定运营商的网络或互联网”,所有这些都需要 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。 如果应用程序不要求这些权限,但它要求 ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE 和 INTERNET,应用程序可以推断位置吗?如果是这样,哪些 API 调用会导致这种情况发生,我阅读了 API 指南、连接部分,并搜索了 android.net.wifi 下的类,但找不到会造成这种情况的原因。

    是否有任何工作或资源按所需权限对 Android api 调用进行分组?例如ACCESS_COARSE_LOCATION权限下所有api调用列表,ACCESS_FINE_LOCATION权限下所有api调用列表等等!

希望我清楚地提出了我的问题,并提前致谢!

【问题讨论】:

你的问题对我来说没有意义。你能澄清一下你想要达到的目标吗?关于第 1 点,如果您可以通过另一个 API 调用在没有权限的情况下检索相同的信息,那为什么还要有权限呢? 我添加了更多细节! 【参考方案1】:
    根据文档:

Note: If you are using both NETWORK_PROVIDER and GPS_PROVIDER, then you need to request only the ACCESS_FINE_LOCATION permission, because it includes permission for both providers. (Permission for ACCESS_COARSE_LOCATION includes permission only for NETWORK_PROVIDER.)

您应该考虑到粗略位置(电池友好型)不如精细位置(电池友好型)那么精确,而且通常它们都是必需的,因为用户可以决定从设备网络位置启用和禁用 GPS,它是你有责任优化你的应用程序,这样它就不会耗尽电池。上面的信息(以及更多关于位置的信息)可以在这里找到http://developer.android.com/guide/topics/location/strategies.html

    上一个链接对位置进行了一些解释,并附有一些示例。

为了将来参考,您可能会发现此表很有用http://developer.android.com/guide/topics/manifest/uses-feature-element.html#features-reference

【讨论】:

关于第 1 点,我很好奇这种情况是否真的存在,两个 api 调用每个由不同的权限保护可能会产生相似的结果!关于第二点,第二个链接真的很有帮助!非常感谢! 不能说我对Android开发一无所知,但这个问题的答案大概是No

以上是关于Android 权限和 API 调用的主要内容,如果未能解决你的问题,请参考以下文章

Android发布者权限被拒绝仅检查付款(其他api成功)

未授予 Android 权限

Java Android调用需要权限,用户可能会拒绝[重复]

Android 6.0+ 运行时权限——EasyPermissions源码解析

NR - iOS / Android 相机/相册/日历/定位 等权限 检测+申请代码

NR - iOS / Android 相机/相册/日历/定位 等权限 检测+申请代码