2012-03-12 120 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,如果操作成功。

相關問題