我正在开发一个应用程序,其中我有一个从内置联系人列表中检索到的联系人姓名的 ListView。我使用 ContentProvider 从内置联系人列表中获取姓名。另外,我将 ListView 中的名称存储到我的数据库表中。
我需要将内置联系人列表与数据库表同步。因此,当内置的 ContactsContract 中的 DISPLAY_NAME 与我的表中的名称不匹配时,我需要为用户触发一条警报消息。而且,用户必须手动更改名称,而我必须更改表中的名称。
我怎么做?我需要帮助。
我感谢提供的任何帮助。任何示例和教程也将不胜感激。
谢谢。!
更新
ContactsList.java - 这是从 android 手机的联系人中检索到的联系人的 ListView。
BuddyDBAdapter buddyDB = new BuddyDBAdapter(this);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts_list);
ListView list = getListView();
setListAdapter(new ArrayAdapter<String> (this, R.layout.contacts_list, R.id.contactName, buddiesList));
Uri allContacts = Uri.parse("content://contacts/people");
Cursor c = managedQuery(allContacts, null, null, null, null);
String[] columns = new String[] {ContactsContract.Contacts.DISPLAY_NAME};
int[] views = new int[] {R.id.contactName};
startManagingCursor(c);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contacts_list, c, columns, views);
this.setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id)
{
buddyDB.open();
long name_id;
super.onListItemClick(l, v, position, id);
/*String action = getIntent().getAction();
if(Intent.ACTION_VIEW.equals(action))
{
//startActivity(intent);
}*/
//startActivityForResult(new Intent(Intent.ACTION_PICK),PICK_CONTACT);
Cursor c = ((SimpleCursorAdapter)l.getAdapter()).getCursor();
TextView contactName = (TextView) v.findViewById(R.id.contactName);
String NameValue = contactName.getText().toString();
name_id = buddyDB.insertNames(NameValue);
Toast.makeText(getBaseContext(),
"Selected: " + buddiesList[position], Toast.LENGTH_SHORT).show();
buddyDB.close();