Android获取经纬度的时候只有在6.0的手机上才能获取到,6.0以下都不行,求各位大神帮忙,感激不尽!

fly_xzh 2016-07-18 02:44:08
我是把获取经纬度的代码放在一个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 求大神帮忙
...全文
119 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
PandaCoder 2016-09-28
  • 打赏
  • 举报
回复
我的程序是6.0上不行,6.0上需要调用checkselfpermission()和requestPermission()这两个方法。。
Android–使用手机GPS获取经纬度
标签:

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧