项目推进中遇到需要检查GPS状态,如果没有打开则跳转至打开GPS页面的问题。
其原理是通过LocationManager判断GPS打开,如果没有则使用dialog提示其中设置跳转打开页面的方式。给出实现代码:
/* 检查gps状态并引导用户打开gps */
private void initGPS() {
LocationManager locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
// 判断GPS模块是否开启,如果没有则跳转至设置开启界面,设置完毕后返回到当前页面
if (!locationManager
.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
AlertDialog.Builder da = new AlertDialog.Builder(this);
da.setTitle("提示:");
da.setMessage("为了更好的为您服务,请您打开您的GPS!");
da.setCancelable(false);
//设置左边按钮监听
da.setNeutralButton("确定",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// 转到手机设置界面,用户设置GPS
Intent intent = new Intent(
Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 0); // 设置完成后返回到原来的界面
}
});
//设置右边按钮监听
da.setPositiveButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
arg0.dismiss();
}
});
da.show();
} else {
}
}
需要注意的是使用locationmanager需要添加权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
效果如下:
特记下,以备后日回顾。