2

電話から特定の連絡先を削除しようとしています。連絡先全体を削除できます。連絡先IDを使用して特定の連絡先を削除する方法。名、名前、電話番号、メールアドレス、メモなどの完全なデータを削除したい...

4

4 に答える 4

7

contactIdがある場合は、Contacts.CONTENT_LOOKUP_URIを使用する必要はありません。実際、私はそれを使用していくつかの連絡先を削除する問題を実験しました。

contactIdがある場合の正しい方法は、ContactsContract.Contacts.CONTENT_URIを直接使用することです。

    Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI,contactId);
    int deleted = context.getContentResolver().delete(uri,null,null);
    return deleted>0;
于 2016-08-08T14:24:25.867 に答える
6

次のコードを試してください。

            final ArrayList ops = new ArrayList();
        final ContentResolver cr = getContentResolver();
        ops.add(ContentProviderOperation
                .newDelete(ContactsContract.RawContacts.CONTENT_URI)
                .withSelection(
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                + " = ?",
                        new String[] { selected_contact_IDfromlist })
                .build());
        AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("Delete This Contact!");
        alertDialog.setMessage("Are you Sure you want to delete this contact?");
        alertDialog.setButton(getString(R.string.callLog_delDialog_yes), new DialogInterface.OnClickListener() {    // DEPRECATED
          public void onClick(DialogInterface dialog, int which) {
            try {
                cr.applyBatch(ContactsContract.AUTHORITY, ops);
                background_process();
                ops.clear();
            } catch (OperationApplicationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

            } catch (RemoteException e) {
                // System.out.println(" length :"+i);
            }
                return;
        } }); 
        alertDialog.setButton2(getString(R.string.callLog_delDialog_no), (DialogInterface.OnClickListener)null);    // DEPRECATED
        try {
            alertDialog.show();
        }catch(Exception e) {
            //              Log.e(THIS_FILE, "error while trying to show deletion yes/no dialog");
        }
于 2012-10-03T16:13:16.960 に答える
2

これをマニフェストに追加

<uses-permission android:name="android.permission.WRITE_CONTACTS" />

IDコードで連絡先を削除する

private void deleteContactById(long id) {
    Cursor cur = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID + "="
            + id, null, null);
    if (cur != null) {
        while (cur.moveToNext()) {
            try {
                String lookupKey = cur.getString(cur
                        .getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
                Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI,
                        lookupKey);
                resolver.delete(uri, ContactsContract.Contacts._ID + "=" + id, null);
            } catch (Exception e) {
                Log.e(TAG, "deleteContactById: ", e);
            }
        }
        cur.close();
    }
}
于 2012-10-04T01:16:35.680 に答える
1
public void deleteContact(Context context, String localContactId)
{
    ContentResolver cr = context.getContentResolver();
    String rawWhere = ContactsContract.Contacts._ID + " = ? ";
    String[] whereArgs1 = new String[]{localContactId};
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null, rawWhere, whereArgs1, null);

    if(cur != null && cur.getCount() > 0) {
        while (cur.moveToNext()) {
            try{
                String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
                Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
                cr.delete(uri, null, null);

            }
            catch(Exception e)
            {
                System.out.println(e.getStackTrace());
            }
        }
    }
    if(cur != null)
        cur.close();
}
于 2016-07-01T06:32:16.460 に答える