在service
中请求位置更新时,我收到此错误。授予位置权限,LocationManager
不为空,Provider
不为空。
LocationManager: [LocationManager] requestLocationUpdates(),
java.lang.RuntimeException
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:1013)
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:595)
at com.trackinglibrary.service.DataService.createAndRequestLocationUpdates(DataService.java:759)
at com.trackinglibrary.service.DataService.onStartCommand(DataService.java:252)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3694)
at android.app.ActivityThread.access$1600(ActivityThread.java:202)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:198)
at android.app.ActivityThread.main(ActivityThread.java:6729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
我在内部调用的位置代码onStartCommand()
:
@SuppressLint("MissingPermission")
private void createAndRequestLocationUpdates() {
try {
if (!TrackThatUtils.isLocationEnabled(getApplicationContext())) {
Log.e(TAG, "Location is disable.");
return;
}
if (locationManager == null) {
locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
addProximityAlert();
}
if (locationManager == null || !locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Log.e(TAG, "Location provider is disable.");
return;
}
// getting GPS status
boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
Log.e(TAG, "Location provider is: " + isGPSEnabled);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
Log.e(TAG, "== Error On onConnected() Permission not granted");
//Permission not granted by user so cancel the further execution.
return;
}
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
criteria.setAltitudeRequired(false);
criteria.setSpeedRequired(true);
//setCostAllowed(true): This flag enables LocationManager to exchange “data packet” with
// 3G/4G network base stations in order to get better location
criteria.setCostAllowed(true);
criteria.setBearingRequired(false);
//API level 9 and up
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
criteria.setVerticalAccuracy(Criteria.ACCURACY_HIGH);
String provider = locationManager.getBestProvider(criteria, true);
// locationManager.requestLocationUpdates(gpsFreqInMillis, gpsFreqInDistance, criteria, locationListener, null);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, this);
Log.i(TAG, "request for location updates..");
} catch (SecurityException | IllegalArgumentException e) {
Log.e(TAG, "Exception inside createAndRequestLocationUpdates(): " + e);
}
}
不要在共享首选项中存储Location类在我的情况下,这就是问题所在
根据文档,当调用线程没有循环器时,会调用RuntimeException
。尝试调用Looper。调用
LocationManager
CLLocationManager 是使用 Swift 编写的,使用 Apple 和 Google 服务进行位置更新,地理编码和反向地理编码。
我已经厌倦了发现这个问题,但无法理解为什么没有调用Location Manager的委派方法或。我在我的iPhone上测试了这个,但它不起作用。请告诉我我错过了什么。我的源代码是: 有人能找出问题出在哪里吗??我已经搜索了很多演示和源代码,但大多数都以结尾,在我的例子中调用了它,但是我对和有问题。我还实现了,但它没有做到这一点。请给出不调用这两个方法的任何线索。或者给我任何调用这些方法的链接,我没
有LocationManager类来获取位置,但您也可以将Google Apis与LocationServices一起使用。API。 现在我只想知道,使用低电量时,哪个国家是用户。 我应该使用哪一个,什么时候?
我想通过Android LocationManager API使用fused location provider,因为: 我不想让应用程序Phonelocator依赖于google play服务 现有的实现已经在工作和测试 看起来这是可能的。只需将字符串“融合”作为安装了google play服务的手机上的位置提供程序传递即可。 我想选择使用优先级高精度配置文件。我怀疑,默认情况下,它没有被使用。
JNI绑定 Android上的Java资源 WebView代码组织
Native.js for Android封装一条通过JS语法直接调用Native Java接口通道,通过plus.android可调用几乎所有的系统API。 方法: currentWebview: 获取当前Webview窗口对象的native层实例对象 newObject: 创建实例对象 getAttribute: 获取对象(类对象/实例对象)的属性值 setAttribute: 设置对象(类对