如何在我的应用程序中启用网络和GPS位置?

时间:2014-04-27 07:19:58

标签: java android gps geolocation android-location

我正在尝试获取用户的位置:

//获取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 locationturn on GPS

我如何帮助用户执行这些选项?

  
      
  1. 打开设备设置页面并返回我的活动。

  2.   
  3. 仅在我的应用程序中更改这两个设备设置?

  4.   

表示打开一个启用这两个设置的确认对话框。

3 个答案:

答案 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