Android 如何检测添加到联系人数据库的新联系人
如何检测添加到联系人数据库的新联系人 我在互联网上找到了很多代码,但不起作用或包含错误 是否有一个想法,而不是一个代码来检测新的联系人添加 我知道我的问题很难回答,但只有一个想法或简单的答案:) 我测试了这段代码,但它返回了错误Android 如何检测添加到联系人数据库的新联系人,android,contacts,Android,Contacts,如何检测添加到联系人数据库的新联系人 我在互联网上找到了很多代码,但不起作用或包含错误 是否有一个想法,而不是一个代码来检测新的联系人添加 我知道我的问题很难回答,但只有一个想法或简单的答案:) 我测试了这段代码,但它返回了错误 ContentResolver cr = ctx.getContentResolver(); String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContrac
ContentResolver cr = ctx.getContentResolver();
String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME };
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, projection, null, null,
ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
Toast.makeText(this,cur.getString(cur.getColumnIndex(ContactsContract.Data._ID)), Toast.LENGTH_SHORT).show();
Toast.makeText(this,cur.getString(cur.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)), Toast.LENGTH_SHORT).show();
// System.out.println(cur.getString(cur.getColumnIndex(ContactsContract.Data._ID)));
// System.out.println(cur.getString(cur.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)));
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{ c.getId() }, null);
while (pCur.moveToNext()) {
Toast.makeText(this, "Start!", Toast.LENGTH_SHORT).show();
System.out.println(.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
pCur.close();
Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{ c.getId() }, null);
while (emailCur.moveToNext()) {
System.out.println((emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)));
}
}
}
cur.close();
首先,您需要在主活动中注册此接收器-- getContentResolver(); 之后
public class MyCOntentObserver extends ContentObserver {
public MyCOntentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.d("onChange1", "~~~~~~" + selfChange);
//getApplicationContext().startService(new Intent(MainActivity.this, SendContactService.class));
}
@Override
public boolean deliverSelfNotifications() {
Log.d("deliverSelfNotifications", "~~~~~~fg");
return true;
}
}
这只是一个想法,所以我不会将其作为答案发布,但我猜您可以使用Loader,因为它监视其数据,并在进行更改时自动更新,即创建新联系人。支持库提供了加载程序,因此您可以在许多Android版本上使用它。请我不理解它的权利,解释一个小Loader有任何android Loader的例子检查出我包括的链接。它包含你需要的一切。