android - 在 FusedLocationProviderClient 中以编程方式设置模拟位置
问题描述
我正在尝试在我的应用程序中使用模拟位置进行测试。为了接收位置更新,我在这里使用了最新的 android 开发者文档: https ://developer.android.com/training/location/receive-location-updates
本教程使用 FusedLocationProviderClient 和 locationClient.requestLocationUpdates(createLocationRequest(), locationCallback, null) 作为示例。
问题是我不能再使用权限:
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
因为我收到错误“仅授予系统应用程序权限”(我也在调试模式下尝试过)
所以我尝试了以下代码,但它不起作用:
locationClient.setMockMode(true);
String[] tokens = location.split(",");
Location newLocation = new Location(LocationManager.GPS_PROVIDER);
newLocation.setLatitude(Float.parseFloat(tokens[0]));
newLocation.setLongitude(Float.parseFloat(tokens[1]));
newLocation.setAccuracy(3.0f);
newLocation.setTime(System.currentTimeMillis());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
newLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
}
locationClient.setMockLocation(newLocation);
有谁知道如何解决这个问题?
解决方案
似乎添加
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
即使 Android Studio 说“权限仅授予系统应用程序”,调试 android 清单的权限仍然有效。
所以解决方案是,添加后,运行应用程序,然后转到设置/开发人员选项/选择模拟位置应用程序->这里出现我的应用程序,我可以选择它。
我希望其他人可以确认并使用它!
推荐阅读
- wordpress - 如何在 YITH MULTI VENDOR 和 YITH AFFILIATE 中添加产品类别明智佣金
- asp.net-core-mvc - 在 .NET Core MVC 上创建模糊路由
- javascript - 如何使复选框用作多选选项?
- javascript - Typescript 属性 'property' 不存在于类型 'void | 示例
- go - 过滤具有与 GORM 的 has_many 关系的查询?
- asynchronous - 在 Flutter 中创建异步验证器
- python - 如何解决瓶鼻获取空对象的错误:预期的字符串或类似字节的对象
- c - 两个函数同时执行
- dynamics-crm - 自定义总金额
- c# - 如何将 TimeSpan 值的总和显示为 hh:mm:ss 格式的文本框