0
我一直在開發一個聯繫人應用程序,它允許:呼叫,短信,刪除等...和編輯聯繫人。當用戶點擊並按住某個聯繫人時,會顯示一個上下文菜單(如下圖所示)。行動電話,短信,...已完成,但編輯不是。請給我一些代碼或建議。在此先感謝如何從上下文菜單編輯聯繫人
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.call:
//do something
String mPhoneNumber = "tel:" + getPhoneNumber(mRecordId);
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(mPhoneNumber));
startActivity(intent);
return true;
case R.id.message:
//do something
String mSmsNumber = getPhoneNumber(mRecordId);
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + mSmsNumber)));
return true;
case R.id.sendemail:
//do something
return true;
case R.id.edit:
//do something // need help???
return true;
case R.id.delete:
//do something
new AlertDialog.Builder(mContext).setMessage("Do you want to delete this contact?")
.setTitle("Delete").setCancelable(false).setPositiveButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
deleteContactEntry(mRecordId);
populateContactList();
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
}).show();
return true;
default:
return super.onContextItemSelected(item);
}
這裏有方法,我用:
/**
* Populate the contact list based on account currently selected in the account spinner.
*/
private void populateContactList() {
// Build adapter with contact entries
Cursor cursor = getContacts();
String[] fields = new String[] {
ContactsContract.Data.DISPLAY_NAME
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_entry, cursor,
fields, new int[] {R.id.contactEntryText});
mContactList.setAdapter(adapter);
}
/**
* Obtains the contact list for the currently selected account.
*
* @return A cursor for for accessing the contact list.
*/
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" +
(mShowInvisible ? "0" : "1") + "'";
// String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = 0";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
/**
* Launches the ContactAdder activity to add a new contact to the selected accont.
*/
protected void launchContactAdder() {
Intent i = new Intent(this, ContactAdder.class);
startActivity(i);
}
/**
* Get Phone Number
*/
private String getPhoneNumber(long contactId){
String mPhoneNumber = null;
String [] colums = new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER };
String where = ContactsContract.Data.RAW_CONTACT_ID + "=?";
String[] whereParameters = new String[]{Long.toString(contactId)};
Cursor contacts = getContentResolver().query(ContactsContract.Data.CONTENT_URI,colums,where, whereParameters, null);
if (contacts.moveToFirst()) {
mPhoneNumber = contacts.getString(0);
}
contacts.close();
return mPhoneNumber;
}
/**
* Delete Contact
*/
private void deleteContactEntry(long contactId){
//String [] projection = new String [] {ContactsContract.RawContacts._ID};
String mSelectionClause = ContactsContract.RawContacts._ID + "=?";
String [] mSelectionArgs = new String [] {Long.toString(contactId)};
getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI, mSelectionClause, mSelectionArgs);
}
你的問題的格式不適合SO。詳細說明爲什麼'編輯'不起作用。添加您當前的代碼或您的問題很快得到downvote和刪除。 –
我修改了我的帖子。請給我一些代碼或建議 –