我正在尝试获取用户的位置:
//获取GPS状态
isGPSEnabled = locationManage.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
Log.e(MyLogger.TAG, "Non providers are enabled");
我需要用户设置enable network location
或turn on GPS
。
我如何帮助用户执行这些选项?
打开设备设置页面并返回我的活动。
- 醇>
仅在我的应用程序中更改这两个设备设置?
表示打开一个启用这两个设置的确认对话框。
答案 0 :(得分:0)
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS),0);
答案 1 :(得分:0)
在4.1之后不能再在代码中更改这些设置了(它们可能是一个解决方法,因为在一个错误see here上打开它但是它不能在4.3或4.4上工作或者你需要扎根手机,你可以做的是向用户显示一个对话框,转到设置以启用GPS
public static void LocationAlertDialog(final Context context) {
AlertDialog.Builder d = new AlertDialog.Builder(context);
d.setTitle("No Providers");
d.setMessage("Unfortunately, you don't have any providers to get your location, would you like to turn on your GPS?");
d.setNegativeButton(context.getResources().getString(R.string.dialogCancel), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
d.setPositiveButton(context.getResources().getString(R.string.dialogAccept), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
context.startActivityForResult(i, 0);
}
});
d.show();
}
调用
中的上一个函数if (!isGPSEnabled && !isNetworkEnabled) {
LocationAlertDialog(this);
Log.e(MyLogger.TAG, "Non providers are enabled");
然后在你的onActivityResult
中,如果GPS已经打开,你可以检查代码0
答案 2 :(得分:0)
使用最新的位置api,您可以通过应用程序内的设置对话框提示用户动态更改位置设置。
https://developer.android.com/training/location/change-location-settings.html