2016-03-21 4 views
0

я использовал следующий код, который был там переполнение стека, чтобы проверить, включен ли GPS или отключена на устройствеGPS Service Check, чтобы проверить, включен ли GPS или отключена на устройстве

public static boolean isLocationEnabled(Context context) { 
    int locationMode = 0; 
    String locationProviders; 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     try { 
      locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE); 

     } catch (Settings.SettingNotFoundException e) { 
      e.printStackTrace(); 
     } 

     return locationMode != Settings.Secure.LOCATION_MODE_OFF; 

    } else { 
     locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
     return !TextUtils.isEmpty(locationProviders); 
    } 


} 

Он отлично работает на моем устройстве (Huawei G610), и у меня нет проблем с ним. Затем я подал заявку другу, который использует примечание Samsung Galaxy Note, он говорит, что он не уведомляет, включен ли сервис GPS.

Эта функция используется для запуска диалогового окна предупреждения, если GPS не включен, чтобы попросить пользователя включить его.

Я понятия не имею, почему он не работает на его устройстве, ваша помощь высоко ценится. Я спрашиваю, почему он не работает на некоторых устройствах и работает над некоторыми.

Спасибо.

+0

Возможный дубликат [Как я узнаю, если GPS для Android-устройства] (http://stackoverflow.com/questions/843675/how-do-i-find-out-if-the-gps-of-an-android-device-is-enabled) – Bharatesh

ответ

0

Вы можете проверить, включено ли местоположение или нет, используя следующий код. Я буду работать на всех устройствах

LocationManager location_manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
     LocationListener listner = new MyLocationListener(); 


     boolean networkLocationEnabled = location_manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
     boolean gpsLocationEnabled = location_manager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

     if (networkLocationEnabled || gpsLocationEnabled) { 

      if (location_manager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER) && networkLocationEnabled) { 
       location_manager.requestLocationUpdates(
         LocationManager.NETWORK_PROVIDER, 2000, 2000, listner); 
       location_manager 
         .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
      } else if (location_manager.getAllProviders().contains(LocationManager.GPS_PROVIDER) && gpsLocationEnabled) { 
       location_manager.requestLocationUpdates(
         LocationManager.GPS_PROVIDER, 2000, 2000, listner); 
       location_manager 
         .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
2

Попробуйте это.
частное лицо LocationManager lm;

lm = (LocationManager)   getActivity().getSystemService(getActivity().LOCATION_SERVICE); 
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){ 
    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
    startActivity(intent); 
} 

И файл манифеста следует установить разрешение основные права, которые вам нужны android.permission.ACCESS_COARSE_LOCATION или android.permission.ACCESS_FINE_LOCATION

 Смежные вопросы

  • Нет связанных вопросов^_^