【问题标题】:how to know if a contact is added, changed or deleted in android如何知道联系人是否在android中添加、更改或删除
【发布时间】:2015-09-11 02:13:21
【问题描述】:

我正在开发一个应用程序,我需要在该应用程序中监听本地联系人数据库中的更改,例如编辑/删除联系人或添加新联系人。

我知道我可以在 contentobservers 的帮助下实现这一目标。但是,我发现 android SDK 没有提供一种方法来知道添加/删除了哪个联系人或更改了哪个联系人,这很奇怪。这会导致大量手动工作,例如遍历整个联系人列表并检查更改了哪一个。

我想知道是否有更好的方法来实现这一点。我知道这个问题会被问很多次,但我想知道为什么 Android SDK 没有这样的机制?

谢谢。

【问题讨论】:

  • android.database.ContentObserver+android.database.CursorJoiner,谷歌大叔教你如何使用

标签: android android-contacts contentobserver


【解决方案1】:

This interesting thread from the early days of Android 表示ContentObserver 确实用于告诉您发生了什么变化,但提供该信息太难了。它继续说明为什么(至少在当时)重新查询被认为足够好和更安全。

【讨论】:

    【解决方案2】:

    此服务类提供从后台更改联系人添加、更新、删除操作的唤醒呼叫。不知道这段代码对你有没有用。

    public class ContactOberverService extends Service {
        private static final String TAG = "ContactOberverService";
    
    
        @Nullable
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    
        public class MyContactContentObserver extends ContentObserver {
            public MyContactContentObserver() {
                super(null);
                Log.d(":-> Service Called","in construcrtor ");
            }
            @Override
            public void onChange(boolean selfChange) {
                super.onChange(selfChange);
                Log.d(":-> Service Called","In onChange");
                ContactsDbOprations.getAllContacts();
            }
    
            @Override
            public boolean deliverSelfNotifications() {
                return true;
            }
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI,
                    true, new MyContactContentObserver());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      相关资源
      最近更新 更多