2012-03-12 77 views
0

我写了一个应用程序,以删除android中的联系人列表中的联系人。它在模拟器中工作正常,但不会删除设备中的联系人。可能是什么问题呢?我张贴我的code.please帮助我。删除在仿真程序上工作,但不在设备上的联系人

ArrayList ops = new ArrayList();

String [] args = new String [] {contactId};

  // if id is raw contact id 
     ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).withSelection(RawContacts._ID + "=?", args) .build()); 

     // if id is contact id 
     //ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).withSelection(RawContacts.CONTACT_ID + "=?", args) .build()); 
     try { 
      getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } catch (RemoteException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (OperationApplicationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

这一发现接触使用此代码完成

字符串get_Number(字符串名称) {

字符串数= NULL;

String where= "DISPLAY_NAME like ?"; 
    Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, where, new String[]{name}, null); 
     people.moveToFirst(); 

       try{ 
        contactId = people.getString(people.getColumnIndex(ContactsContract.Contacts._ID)); //this is the ID used to delete contact 
        String hasPhone = people.getString(people.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
        if (hasPhone.equalsIgnoreCase("1")) 
         hasPhone = "true"; 
        else 
         hasPhone = "false" ; 
        if (Boolean.parseBoolean(hasPhone)) 
        { 
         Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); 
         while (phones.moveToNext()) 
         { 
          number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
          // mConno.add(position,phoneNumber); 

         } 
         phones.close(); 
        } 

       }  
       catch(Exception e) 
       { 

       } 



    return number; 


} 

,并在清单中设置的权限是

<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.WRITE_CONTACTS"/> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 
<uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.WRITE_SMS" /> 

刚才我发现这个程序,我已经开发的怪异行为。在删除联系人应用之前,我开发了一个“添加联系人”应用。

所以发生了什么是它不能删除“添加联系人”应用程序添加的联系人,但删除手动添加的联系人。为什么这个奇怪的事情发生。

但它在模拟器中工作正常。但不在移动设备上。哪里出问题了?

+0

当您尝试删除联系人时发生了什么?你有任何错误等? – 2012-03-12 17:13:04

+0

它是在移动呐,我看不到任何错误。它说“联系已删除”。但实际上并未删除联系人。 – siva 2012-03-12 17:17:26

+0

你使用哪些Android版本?在设备上?在模拟器中? – PKeidel 2012-03-12 17:26:57

回答

0

您正在尝试删除原始联系人使用联系人 ID。 这是行不通的。

联系人由多个原始联系人组成,删除联系人时,所有原始联系人也会被删除。

这样做:

long contactId = 12345; 
Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(contactId)); 
int deleted = getContentResolver().delete(contactUri, null, null); 

删除将是1,如果操作成功。

相关问题