2016-02-26 7 views
0

Я создаю приложение для Android, для которого необходимо, чтобы службы местоположения были активны. Есть ли способ, которым я могу включить службу определения местоположения в android. Я не хочу, чтобы пользователь перешел на страницу настроек и включил его.Есть ли способ принудительно установить местоположение в android, чтобы включить приложение vai

PS: Приложение не предназначено для публичного использования, и при необходимости приложение root может быть предоставлено приложению.

ответ

0

Попробуйте это:

public static void locationChecker(GoogleApiClient googleApiClient, final Activity activity) { 
     LocationRequest locationRequest = LocationRequest.create(); 
     locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
     locationRequest.setInterval(30 * 1000); 
     locationRequest.setFastestInterval(5 * 1000); 
     LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() 
       .addLocationRequest(locationRequest); 
     builder.setAlwaysShow(true); 
     PendingResult<LocationSettingsResult> result = 
       LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build()); 
     result.setResultCallback(new ResultCallback<LocationSettingsResult>() { 
            @Override 
            public void onResult(LocationSettingsResult result) { 
             final Status status = result.getStatus(); 
             final LocationSettingsStates state = result.getLocationSettingsStates(); 
             switch (status.getStatusCode()) { 
              case LocationSettingsStatusCodes.SUCCESS: 
               // All location settings are satisfied. The client can initialize location 
               // requests here. 
               break; 
              case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: 
               // Location settings are not satisfied. But could be fixed by showing the user 
               // a dialog. 
               try { 

                // Show the dialog by calling startResolutionForResult(), 
                // and check the result in onActivityResult(). 
                status.startResolutionForResult(
                  activity, 1000); 
               } catch (IntentSender.SendIntentException e) { 
                // Ignore the error. 
               } 
               break; 
              case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: 
               // Location settings are not satisfied. However, we have no way to fix the 
               // settings so we won't show the dialog. 
               break; 
             } 
            } 
           } 

     ); 
    } 

Внутри вашего места активность следующий код в onActivityResult():

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == 1000) { 
      if (resultCode == Activity.RESULT_CANCELED) { 
       finish(); 
      } else { 
       // this should not be needed, but apparently is in 8.1 
       //user granted the permission 
      } 
     } 

    } 
+0

Так вот, если настройки местоположения не включена, то пользователь получает диалоговое окно, которое запрашивает у пользователя для изменения разрешения. Я прав @Mayank – Shuddh

+0

Да, правильно. Пользователь может включить или отключить местоположение в контексте приложения. –

+0

нет. Я не хочу, чтобы пользователь взаимодействовал с этим диалоговым окном. – Shuddh