在 FusedLocationProviderClient 中以编程方式设置模拟位置
Setting a mock location programmatically in 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" />
因为我收到错误 "Permission is only granted to system apps"(我也在调试模式下尝试过)
所以我尝试了以下代码,但它不起作用:
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 清单的权限有效,即使 Android Studio 说 "Permission is only granted to system apps"。
所以解决方案是,在添加它之后,运行 应用程序,然后转到设置/开发人员选项/Select 模拟位置应用程序 -> 此处出现我的应用程序,我可以 select它。
希望其他人能够确认并使用这个!
我正在尝试在我的应用程序中使用模拟位置进行测试。为了接收位置更新,我在此处使用了最新的 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" />
因为我收到错误 "Permission is only granted to system apps"(我也在调试模式下尝试过)
所以我尝试了以下代码,但它不起作用:
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 清单的权限有效,即使 Android Studio 说 "Permission is only granted to system apps"。
所以解决方案是,在添加它之后,运行 应用程序,然后转到设置/开发人员选项/Select 模拟位置应用程序 -> 此处出现我的应用程序,我可以 select它。
希望其他人能够确认并使用这个!