【发布时间】:2014-05-09 14:29:17
【问题描述】:
我试图通过 LocationClient 接收我当前的位置,但由于某种原因它返回 null。我不想使用 GPS,因此我在我的 Manifest 中删除了良好的位置访问权限。
清单:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
主活动:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
mLocationClient = new LocationClient(this, this, this);
....
}
@Override
protected void onStart() {
super.onStart();
// Connect the client.
mLocationClient.connect();
}
@Override
protected void onStop() {
// Disconnect the client.
mLocationClient.disconnect();
super.onStop();
}
@Override
public void onConnected(Bundle dataBundle) {
location = mLocationClient.getLastLocation();
// do something with the current location
}
由于某种原因,除非我打开手机上的设置并启用 GPS,否则它总是返回 null 位置。启用 GPS 后,我就可以获取我的位置。它确实通过网络获取位置。我不想使用 GPS,也不想启用它。但是,如果没有启用 GPS,它根本无法获得位置。 任何想法我做错了什么?
【问题讨论】:
-
这是粗略的功能,你必须从你的手机激活GPS服务。如果您不想使用 GPS 服务,则需要激活您的罚款权限。
-
哇,谢谢,现在它似乎真的可以工作了......我一直认为最好的位置应该是 GPS ......这就是我删除此权限的原因
-
我刚开始时也做了同样的事情,在你意识到一切实际在做什么之前似乎违反直觉。
-
@zgc7009 这充其量是一个非常不准确的陈述。粗略返回网络位置。罚款返回 GPS。 developer.android.com/reference/android/… 。 LocationService 返回 null 的原因可能是没有可用的粗略位置。该服务不会将精细位置返回给没有该权限的应用。
标签: android gps location-client