Android获取经纬度的时候只有在6.0的手机上才能获取到,6.0以下都不行,求各位大神帮忙,感激不尽!
我是把获取经纬度的代码放在一个Util类里面的,Activity代码如下:
public class MainActivity extends ActionBarActivity {
@SuppressLint("ShowToast")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.tv).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(getApplicationContext(), TimeUtil1.getLoc(MainActivity.this), 1000).show();
}
});
Log.i("Main", TimeUtil1.getLoc(this));
}
}
Util类的代码如下:
public class TimeUtil1 {
private static Context mContext;
private static double latitude = 0.0;
private static double longitude = 0.0;
private static LocationManager locationManager;
private static String locationProvider;
private static Location location;
public static String getLoc(Context context) {
locationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
//获取所有可用的位置提供器
List<String> providers = locationManager.getProviders(true);
if(providers.contains(LocationManager.GPS_PROVIDER)){
//如果是GPS
locationProvider = LocationManager.GPS_PROVIDER;
}else if(providers.contains(LocationManager.NETWORK_PROVIDER)){
//如果是Network
locationProvider = LocationManager.NETWORK_PROVIDER;
}
// if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if (locationProvider != null) {
location = locationManager
.getLastKnownLocation(locationProvider);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
} else {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 1000, 0,
new LocationListener() {
// Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
@Override
public void onStatusChanged(String provider,
int status, Bundle extras) {
}
// Provider被enable时触发此函数,比如GPS被打开
@Override
public void onProviderEnabled(String provider) {
}
// Provider被disable时触发此函数,比如GPS被关闭
@Override
public void onProviderDisabled(String provider) {
}
// 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
@Override
public void onLocationChanged(Location location) {
if (location != null) {
latitude = location.getLatitude(); // 经度
longitude = location.getLongitude(); // 纬度
}
}
});
}
}
// }else{
// return "请打开GPS";
// }
return "维度:"+latitude + "¥" +"纬度:"+ longitude;
}
权限如下:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>
现在的问题是在6.0的手机上可以获取到经纬度,但是其他的都不行,都是0,0 求大神帮忙