- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
Google 正在通过电子邮件通知 Android 位置权限的更改:
We’re making a change on October 15th, 2016 that will affect appstargeting API version 21 (Android 5.0, Lollipop) or higher that useACCESS_FINE_LOCATION but don't explicitly have the"android.hardware.location.gps" uses-feature. Going forward, theseapps will be available to install on devices that don't have GPShardware. In most cases this won't be an issue since Wi-Fi and Cell-IDbased location provides high enough fidelity for the typical operationof these apps. However, any apps that require GPS hardware, such asGPS navigators, should explicitly add the"android.hardware.location.gps" uses-feature to their manifest.
If your app requires GPS to function properly and you do not includein your manifest declaration, your users may have a poor appexperience.
Also, if you’re using the fused location provider and wish to receivethe most accurate location samples from GPS (i.e. withPRIORITY_HIGH_ACCURACY), you must include the"android.hardware.location.gps" feature in your app’s manifest toensure that Google Play only distributes your app to devices with GPSsensors.
You can read more about this change in the Android Developers HelpCenter.
来自 Android Developers Help Center
In order to receive location updates from NETWORK_PROVIDER or GPS_PROVIDER, you must request the user's permission by declaring either the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission, respectively, in your Android manifest file. Without these permissions, your application will fail at runtime when requesting location updates.
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 allows access only to NETWORK_PROVIDER.
Caution: If your app targets Android 5.0 (API level 21) or higher, you must declare that your app uses the android.hardware.location.network or android.hardware.location.gps hardware feature in the manifest file, depending on whether your app receives location updates from NETWORK_PROVIDER or from GPS_PROVIDER. If your app receives location information from either of these location provider sources, you need to declare that the app uses these hardware features in your app manifest. On devices running verions prior to Android 5.0 (API 21), requesting the ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION permission includes an implied request for location hardware features. However, requesting those permissions does not automatically request location hardware features on Android 5.0 (API level 21) and higher.
我正在使用融合位置提供程序,以 API 21 为目标,并使用 ACCESS_FINE_LOCATION
。我并不特别关心 GPS 是否可用,只关心报告最准确的位置。
android.hardware.location.gps
和 android.hardware.location.network
。还是这仅适用于 LocationManager
而不是融合位置?我是否需要 android.hardware.location.gps
和 android.hardware.location.network
?
最佳答案
第二个引用告诉你你需要android.hardware.location.network
或 android.hardware.location.gps
,如果您特别需要一个或另一个位置提供程序。
如果您想通过 GPS 进行更新,您需要 android.hardware.location.gps
.如果您想通过 WiFi 和蜂窝网络进行更新,您需要 android.hardware.location.network
.
如果您想同时获得网络和 GPS 的更新,您应该同时包含 <uses-feature>
元素。
如果您没有指定,您的设备可能安装在没有该提供程序的设备上。例如,它可能安装在没有 GPS、蜂窝网络或 Wi-Fi 芯片的设备上。
换句话说,获取位置需要网络位置功能或 GPS 功能。如果您不声明您的应用程序需要其中之一,您可能根本无法获得位置更新。
API 21 与 20 及以下
请注意,以上仅适用于 API 21 及更高版本。在 API 21 之前,请求 ACCESS_COARSE_LOCATION
许可暗示 location.network
功能,而请求 ACCESS_FINE_LOCATION
暗示location.gps
功能(见 <uses-feature>
)。
目前唯一的变化是,对于 API 21+,任何应用请求 ACCESS_FINE_LOCATION
很快就可以安装在没有 GPS 的设备上。如果您的应用程序之前假设 GPS 可用(并且需要 GPS),您需要确保您有对 android.hardware.location.gps
的明确请求.
Google 表示,网络位置提供商现在已经可以提供良好的位置,因此发生了变化。
关于android - 我什么时候需要 android.hardware.location.gps 和 android.hardware.location.network?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39603270/
我正在尝试用 C 语言编写一个使用 gstreamer 的 GTK+ 应用程序。 GTK+ 需要 gtk_main() 来执行。 gstreamer 需要 g_main_loop_run() 来执行。
我已经使用 apt-get 安装了 opencv。我得到了以下版本的opencv2,它工作正常: rover@rover_pi:/usr/lib/arm-linux-gnueabihf $ pytho
我有一个看起来像这样的 View 层次结构(基于其他答案和 Apple 的使用 UIScrollView 的高级 AutoLayout 指南): ScrollView 所需的2 个步骤是: 为 Scr
我尝试安装 udev。 udev 在 ./configure 期间给我一个错误 --exists: command not found configure: error: pkg-config and
我正在使用 SQLite 3。我有一个表,forums,有 150 行,还有一个表,posts,有大约 440 万行。每个帖子都属于一个论坛。 我想从每个论坛中选择最新帖子的时间戳。如果我使用 SEL
使用 go 和以下包: github.com/julienschmidt/httprouter github.com/shwoodard/jsonapi gopkg.in/mgo.v2/bson
The database仅包含 2 个表: 钱包(100 万行) 事务(1500 万行) CockroachDB 19.2.6 在 3 台 Ubuntu 机器上运行 每个 2vCPU 每个 8GB R
我很难理解为什么在下面的代码中直接调用 std::swap() 会导致编译错误,而使用 std::iter_swap 编译却没有任何错误. 来自 iter_swap() versus swap() -
我有一个非常简单的 SELECT *用 WHERE NOT EXISTS 查询条款。 SELECT * FROM "BMAN_TP3"."TT_SPLDR_55E63A28_59358" SELECT
我试图按部分组织我的 .css 文件,我需要从任何文件访问文件组中的任何类。在 Less 中,我可以毫无问题地创建一个包含所有文件导入的主文件,并且每个文件都导入主文件,但在 Sass 中,我收到一个
Microsoft.AspNet.SignalR.Redis 和 StackExchange.Redis.Extensions.Core 在同一个项目中使用。前者需要StackExchange.Red
这个问题在这里已经有了答案: Updating from Rails 4.0 to 4.1 gives sass-rails railties version conflicts (4 个答案) 关
我们有一些使用 Azure DevOps 发布管道部署到的现场服务器。我们已经使用这些发布管道几个月了,没有出现任何问题。今天,我们在下载该项目的工件时开始出现身份验证错误。 部署组中的节点显示在线,
Tip: instead of creating indexes here, run queries in your code – if you're missing any indexes, you
你能解释一下 Elm 下一个声明中的意思吗? (=>) = (,) 我在 Elm architecture tutorial 的例子中找到了它 最佳答案 这是中缀符号。实际上,这定义了一个函数 (=>
我需要一个 .NET 程序集查看器,它可以显示低级详细信息,例如元数据表内容等。 最佳答案 ildasm 是 IL 反汇编程序,具有低级托管元数据 token 信息。安装 Visual Studio
我有两个列表要在 Excel 中进行比较。这是一个很长的列表,我需要一个 excel 函数或 vba 代码来执行此操作。我已经没有想法了,因此转向你: **Old List** A
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
我正在学习 xml 和 xml 处理。我无法很好地理解命名空间的存在。 我了解到命名空间帮助我们在 xml 中分离相同命名的元素。我们不能通过具有相同名称的属性来区分元素吗?为什么命名空间很重要或需要
我搜索了 Azure 文档、各种社区论坛和 google,但没有找到关于需要在公司防火墙上打开哪些端口以允许 Azure 所有组件(blob、sql、compute、bus、publish)的简洁声明
我是一名优秀的程序员,十分优秀!