Reputation: 145
ContentObserver works fine in android 4.0.4 where it detects changes made in settings app. But when under android 4.3 it doesnt detect the change and the service doesnt start
SettingsContentObserver.java:
public class SettingsContentObserver extends ContentObserver
{
private Context context;
public SettingsContentObserver(Handler handler, Context applicationContext) {
// TODO Auto-generated constructor stub
super(handler);
this.context = applicationContext;
}
@Override
public boolean deliverSelfNotifications()
{
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
System.out.println("Change detected");
Intent i = new Intent(context, MyService.class);
context.startService(i);
}
}
MyService.java:
public void onCreate() {
SettingsContentObserver mSettingsContentObserver = new SettingsContentObserver(new Handler(), getApplicationContext());
getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, mSettingsContentObserver);
System.out.println("Observer registered");
}
public void onStart(Intent intent, int startId) {
System.out.println("Service works");
}
Thanks, Sahil
Upvotes: 2
Views: 1187
Reputation: 8828
Some of these settings have been moved to Settings.Global
as of Android 4.2 - so listen to the content Uri provided there as well.
Upvotes: 2