Как программно включить GPS в Android Cupcake - PullRequest
27 голосов
/ 27 июня 2009

Я сейчас пишу приложение для Android, которое работает с GPS. На данный момент я могу определить, включен ли GPS. Моя проблема в том, что я хочу включить GPS при запуске приложения, если оно отключено. Как я могу сделать это программно?

Ответы [ 7 ]

51 голосов
/ 27 июня 2009

Нельзя, начиная с Android 1.5. Максимум, что вы можете сделать, - это открыть задание, чтобы пользователь мог включить или выключить его. Используйте действие, удерживаемое в android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS, чтобы создать Намерение, чтобы открыть это действие.

15 голосов
/ 23 июля 2010
if(!LocationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER ))
{
    Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS );
    startActivity(myIntent);
}
6 голосов
/ 29 сентября 2011

Этот код метода может помочь вам

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();
  }
}
3 голосов
/ 29 апреля 2011

Вы можете использовать следующее:

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

но это будет работать, только если у вас есть уровень защиты подписи системы. Так что вам нужно приготовить свой собственный образ, чтобы использовать его: /

1 голос
/ 04 марта 2016

Сначала проверьте, включена ли служба определения местоположения или нет ??

Проверка службы определения местоположения включена или нет

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();
                }
0 голосов
/ 15 июня 2015

Вы должны использовать Диалог настроек местоположения в Play Services, который предлагает пользователю включить службы определения местоположения (при необходимости) одним щелчком мыши.

0 голосов
/ 25 января 2011

если ваш вопрос на уровне пользователя android, эти свойства находятся в: "Settings -> Location -> Use wireless networks" -> "Settings -> Location -> Use GPS satellites".

Но у разработчика можно использовать класс "android.provider.Settings.Secure" с соответствующими разрешениями.

...