28

我目前正在编写一个适用于 GPS 的 Android 应用程序。目前我能够确定是否启用了 GPS。我的问题是,如果 GPS 被禁用,我想在应用程序启动时启用它。我怎样才能以编程方式做到这一点?

4

7 回答 7

51

你不能,从 Android 1.5 开始。您最多可以做的是弹出活动以允许用户打开/关闭它。使用保存的操作android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS来制作一个 Intent 以打开此活动。

于 2009-06-27T00:33:48.010 回答
15
if(!LocationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER ))
{
    Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS );
    startActivity(myIntent);
}
于 2010-07-23T02:22:54.827 回答
6

此方法代码可以为您提供帮助

private void turnGPSOnOff(){
  String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
  if(!provider.contains("gps")){
    final Intent poke = new Intent();
    poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
    poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
    poke.setData(Uri.parse("3")); 
    sendBroadcast(poke);
    //Toast.makeText(this, "Your GPS is Enabled",Toast.LENGTH_SHORT).show();
  }
}
于 2011-09-29T12:34:44.397 回答
3

您可能会使用以下内容:

try {
  Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true);
} catch (Exception e) {
  logger.log(Log.ERROR, e, e.getMessage());
}

但它只有在您具有系统签名保护级别时才有效。因此,您需要自己制作图像才能实际使用它:/

于 2011-04-29T19:45:45.593 回答
1

首先检查定位服务是否已经开启??

检查位置服务是否启用

public boolean isLocationServiceEnabled(){
    LocationManager locationManager = null;
    boolean gps_enabled= false,network_enabled = false;

    if(locationManager ==null)
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    try{
        gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    }catch(Exception ex){
        //do nothing...
    }

    try{
        network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    }catch(Exception ex){
        //do nothing...
    }

    return gps_enabled || network_enabled;

}

如果之前关闭了位置服务,那么最后打开

  if (isLocationServiceEnabled())) {
          //DO what you need...
     } else {
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setMessage("Seems Like location service is off,   Enable this to show map")
      .setPositiveButton("YES", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
                             Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                                    startActivity(intent);
                                }
                            }).setNegativeButton("NO THANKS", null).create().show();
                }
于 2016-03-04T18:02:37.503 回答
0

您应该使用 Play Services 中的位置设置对话框,它会提示用户一键启用位置服务(如有必要)。

于 2015-06-15T17:10:16.833 回答
-5

如果您的问题是在 android 的用户级别,这些属性位于:"Settings -> Location -> Use wireless networks" -> "Settings -> Location -> Use GPS satellites".

但是在开发人员可以使用"android.provider.Settings.Secure"具有适当权限的类。

于 2011-01-25T09:03:49.263 回答