Intereting Posts
Java.lang.NullPointerException: попытка вызвать метод интерфейса «java.util.Iterator java.lang.Iterable.iterator ()» при запуске уведомления Я хочу передать изображение из одной активности в другую InfoWindow (Google Maps), улавливающее событие закрытия окна Как отправлять электронные письма с большими вложениями с помощью API-интерфейсов gmail на Android Как я могу опубликовать, чтобы воспроизвести x86 и ARM apks моего приложения для кордоны-кроссворда? Android Custom Component View с закругленными углами Контрольные суммы MD5 файлов Android APK различаются. Зачем? Как можно получить доступ к методу NotificationListenerService? Несколько приложений с разными именами для одной и той же базы кода Что означает верхнее, левое, правое и нижнее значение в объекте Android Rect Далвик еще больше голоден, чем HotSpot с точки зрения размеров объектов? Создание целевой и минимальной версии SDK в Android Форумы Wi-Fi Direct и «обычный» Wi-Fi – разные MAC-адреса? Является ли использование общих настроек Android для хранения больших объемов данных хорошей идеей?

Как запустить широковещательный приемник при включении / выключении gps?

public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) { Toast.makeText(context, "in android.location.PROVIDERS_CHANGED", Toast.LENGTH_SHORT).show(); Intent pushIntent = new Intent(context, LocalService.class); context.startService(pushIntent); } else { Toast.makeText(context, "not in android.location.PROVIDERS_CHANGED", Toast.LENGTH_SHORT).show(); Intent pushIntent = new Intent(context, LocalService.class); context.startService(pushIntent); } } @Override public void onLocationChanged(Location arg0) { } } 

В моем приложении мне нужно запустить широковещательный приемник, когда gps включается / выключается. Изучите этот вопрос и предложите лучший вариант для реализации в приложении.

Solutions Collecting From Web of "Как запустить широковещательный приемник при включении / выключении gps?"

Это полезно, когда пользователь хочет активировать любое действие при включении / выключении

Вы должны добавить это действие в манифест

 <action android:name="android.location.PROVIDERS_CHANGED" /> 

И после добавления этого действия вы можете активировать свой широковещательный приемник

 <receiver android:name=".GpsLocationReceiver"> <intent-filter> <action android:name="android.location.PROVIDERS_CHANGED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

И в вашем классе BroadcastReceiver вам необходимо реализовать LocationListener в этом классе, который приведен ниже.

 public class GpsLocationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) { Toast.makeText(context, "in android.location.PROVIDERS_CHANGED", Toast.LENGTH_SHORT).show(); Intent pushIntent = new Intent(context, LocalService.class); context.startService(pushIntent); } } } 

Я хочу добавить ответ @Deepak Gupta . Я хочу добавить код для использования приемника в вашем фрагменте или действии, когда статус GPS изменился.

Зарегистрируйте свой широковещательный приемник, как показано ниже, в своей деятельности или фрагменте.

 private BroadcastReceiver gpsReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) { //Do your stuff on GPS status change } } }; 

Для фрагмента :

 getContext().registerReceiver(gpsReceiver, new IntentFilter("android.location.PROVIDERS_CHANGED")); 

Для деятельности :

 registerReceiver(gpsReceiver, new IntentFilter("android.location.PROVIDERS_CHANGED")); 

Я надеюсь, что это поможет.

Вы можете попробовать этот код, как отметил пользователь @DanielNugent:

  ContentResolver contentResolver = getContext().getContentResolver(); // Find out what the settings say about which providers are enabled int mode = Settings.Secure.getInt( contentResolver, Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF); if (mode != Settings.Secure.LOCATION_MODE_OFF) { if (mode == Settings.Secure.LOCATION_MODE_HIGH_ACCURACY) { locationMode = "High accuracy. Uses GPS, Wi-Fi, and mobile networks to determine location"; } else if (mode == Settings.Secure.LOCATION_MODE_SENSORS_ONLY) { locationMode = "Device only. Uses GPS to determine location"; } else if (mode == Settings.Secure.LOCATION_MODE_BATTERY_SAVING) { locationMode = "Battery saving. Uses Wi-Fi and mobile networks to determine location"; } }