use of android.database.ContentObserver in project platform_frameworks_base by android.
the class ValidateNotificationPeople method initialize.
public void initialize(Context context, NotificationUsageStats usageStats) {
if (DEBUG)
Slog.d(TAG, "Initializing " + getClass().getSimpleName() + ".");
mUserToContextMap = new ArrayMap<>();
mBaseContext = context;
mUsageStats = usageStats;
mPeopleCache = new LruCache<String, LookupResult>(PEOPLE_CACHE_SIZE);
mEnabled = ENABLE_PEOPLE_VALIDATOR && 1 == Settings.Global.getInt(mBaseContext.getContentResolver(), SETTING_ENABLE_PEOPLE_VALIDATOR, 1);
if (mEnabled) {
mHandler = new Handler();
mObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange, Uri uri, int userId) {
super.onChange(selfChange, uri, userId);
if (DEBUG || mEvictionCount % 100 == 0) {
if (VERBOSE)
Slog.i(TAG, "mEvictionCount: " + mEvictionCount);
}
mPeopleCache.evictAll();
mEvictionCount++;
}
};
mBaseContext.getContentResolver().registerContentObserver(Contacts.CONTENT_URI, true, mObserver, UserHandle.USER_ALL);
}
}
use of android.database.ContentObserver in project platform_frameworks_base by android.
the class TelecomLoaderService method registerDefaultAppNotifier.
private void registerDefaultAppNotifier() {
final PackageManagerInternal packageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
// Notify the package manager on default app changes
final Uri defaultSmsAppUri = Settings.Secure.getUriFor(Settings.Secure.SMS_DEFAULT_APPLICATION);
final Uri defaultDialerAppUri = Settings.Secure.getUriFor(Settings.Secure.DIALER_DEFAULT_APPLICATION);
ContentObserver contentObserver = new ContentObserver(new Handler(Looper.getMainLooper())) {
@Override
public void onChange(boolean selfChange, Uri uri, int userId) {
if (defaultSmsAppUri.equals(uri)) {
ComponentName smsComponent = SmsApplication.getDefaultSmsApplication(mContext, true);
if (smsComponent != null) {
packageManagerInternal.grantDefaultPermissionsToDefaultSmsApp(smsComponent.getPackageName(), userId);
}
} else if (defaultDialerAppUri.equals(uri)) {
String packageName = DefaultDialerManager.getDefaultDialerApplication(mContext);
if (packageName != null) {
packageManagerInternal.grantDefaultPermissionsToDefaultDialerApp(packageName, userId);
}
updateSimCallManagerPermissions(packageManagerInternal, userId);
}
}
};
mContext.getContentResolver().registerContentObserver(defaultSmsAppUri, false, contentObserver, UserHandle.USER_ALL);
mContext.getContentResolver().registerContentObserver(defaultDialerAppUri, false, contentObserver, UserHandle.USER_ALL);
}
use of android.database.ContentObserver in project sqlbrite by square.
the class BriteContentResolver method createQuery.
/**
* Create an observable which will notify subscribers with a {@linkplain Query query} for
* execution. Subscribers are responsible for <b>always</b> closing {@link Cursor} instance
* returned from the {@link Query}.
* <p>
* Subscribers will receive an immediate notification for initial data as well as subsequent
* notifications for when the supplied {@code uri}'s data changes. Unsubscribe when you no longer
* want updates to a query.
* <p>
* Since content resolver triggers are inherently asynchronous, items emitted from the returned
* observable use the {@link Scheduler} supplied to {@link SqlBrite#wrapContentProvider}. For
* consistency, the immediate notification sent on subscribe also uses this scheduler. As such,
* calling {@link Observable#subscribeOn subscribeOn} on the returned observable has no effect.
* <p>
* Note: To skip the immediate notification and only receive subsequent notifications when data
* has changed call {@code skip(1)} on the returned observable.
* <p>
* <b>Warning:</b> this method does not perform the query! Only by subscribing to the returned
* {@link Observable} will the operation occur.
*
* @see ContentResolver#query(Uri, String[], String, String[], String)
* @see ContentResolver#registerContentObserver(Uri, boolean, ContentObserver)
*/
@CheckResult
@NonNull
public QueryObservable createQuery(@NonNull final Uri uri, @Nullable final String[] projection, @Nullable final String selection, @Nullable final String[] selectionArgs, @Nullable final String sortOrder, final boolean notifyForDescendents) {
final Query query = new Query() {
@Override
public Cursor run() {
long startNanos = nanoTime();
Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder);
if (logging) {
long tookMillis = NANOSECONDS.toMillis(nanoTime() - startNanos);
log("QUERY (%sms)\n uri: %s\n projection: %s\n selection: %s\n selectionArgs: %s\n " + "sortOrder: %s\n notifyForDescendents: %s", tookMillis, uri, Arrays.toString(projection), selection, Arrays.toString(selectionArgs), sortOrder, notifyForDescendents);
}
return cursor;
}
};
OnSubscribe<Query> subscribe = new OnSubscribe<Query>() {
@Override
public void call(final Subscriber<? super Query> subscriber) {
final ContentObserver observer = new ContentObserver(contentObserverHandler) {
@Override
public void onChange(boolean selfChange) {
subscriber.onNext(query);
}
};
contentResolver.registerContentObserver(uri, notifyForDescendents, observer);
subscriber.add(Subscriptions.create(new Action0() {
@Override
public void call() {
contentResolver.unregisterContentObserver(observer);
}
}));
// Trigger initial query.
subscriber.onNext(query);
}
};
final Observable<Query> queryObservable = //
Observable.create(subscribe).onBackpressureLatest().observeOn(//
scheduler).compose(// Apply the user's query transformer.
queryTransformer).onBackpressureLatest();
// TODO switch to .to() when non-@Experimental
return new QueryObservable(new OnSubscribe<Query>() {
@Override
public void call(Subscriber<? super Query> subscriber) {
queryObservable.unsafeSubscribe(subscriber);
}
});
}
use of android.database.ContentObserver in project squidb by yahoo.
the class UriNotifierTest method setUp.
@Override
protected void setUp() throws Exception {
super.setUp();
database.unregisterAllDataChangedNotifiers();
for (ContentObserver observer : observers) {
ContextProvider.getContext().getContentResolver().unregisterContentObserver(observer);
}
}
use of android.database.ContentObserver in project squidb by yahoo.
the class UriNotifierTest method listenTo.
private AtomicBoolean listenTo(Uri uri, boolean notifyForDescendants) {
final AtomicBoolean gotUriNotification = new AtomicBoolean(false);
ContentObserver observer = new ContentObserver(null) {
@Override
public void onChange(boolean selfChange) {
gotUriNotification.set(true);
super.onChange(selfChange);
}
};
observers.add(observer);
ContextProvider.getContext().getContentResolver().registerContentObserver(uri, notifyForDescendants, observer);
return gotUriNotification;
}
Aggregations