Kar*_*ana 11 android contacts contentobserver
如果联系人数据库中有任何更改(添加,删除),我想在手机上收到通知.现在我正在使用ContentObserver获得通知.以下是我的代码.问题是我无法知道哪个联系人改变了.任何人都可以帮忙???
public class ContentObserverActivity extends Activity {
Button registerbutton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
registerbutton=(Button)findViewById(R.id.button1);
registerbutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getContentResolver()
.registerContentObserver(
ContactsContract.Contacts.CONTENT_URI, true,
new MyCOntentObserver());
}
});
}
public class MyCOntentObserver extends ContentObserver{
public MyCOntentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.e("","~~~~~~"+selfChange);
}
@Override
public boolean deliverSelfNotifications() {
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Observer不提供添加/更新/删除联系人的信息.要了解这一点,请保存您自己的数据库表中的联系人,当观察者发送更改通知时,请使用系统的联系人进行检查.
小智 6
我已将onChange代码更改为此.
@Override
public void onChange (boolean selfChange)
{
this.onChange(selfChange, null);
}
@Override
public void onChange (boolean selfChange,Uri uri)
{
Cursor cursor = mCntxt.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null,ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP + " Desc");
if (cursor.moveToNext()) {
String id = cursor.getString(
cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(
cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Log.w("Contact ID", id);
Log.w("Person Name",name);
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助..
| 归档时间: |
|
| 查看次数: |
7698 次 |
| 最近记录: |