androidgpsbroadcastreceiverlocation-provider

How to trigger broadcast receiver when gps is turn on/off?


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) {

    }
}

In my app , i need to trigger broadcast receiver when gps is turn on/off. look into the matter and suggest best one to implement in app.


Solution

  • This is useful when user want to trigger any action on turn On/Off location provides

    You should add this action in manifest

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

    and after add this action you can trigger your broadcast receiver

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

    And in your BroadcastReceiver class you have to implement LocationListener in that class which is given following below..

    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);
            }
        }
    }