2012-03-12 3 views
0

나는 안드로이드의 연락처 목록에서 연락처를 삭제하는 응용 프로그램을 작성했습니다. 그것은 에뮬레이터에서 정상적으로 작동하지만 장치의 접촉을 삭제하지는 않습니다. 무엇이 문제 일 수 있겠습니까? 나는 내 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" /> 

그냥 지금 내가 개발 한이 응용 프로그램의 이상한 행동을 발견했다입니다. 이 연락처 앱을 삭제하기 전에 "연락처 추가"앱을 개발했습니다.

무슨 일이 일어나고 있습니다. "연락처 추가"응용 프로그램에서 추가 한 연락처를 삭제할 수는 없지만 수동으로 추가 한 연락처는 삭제할 수 없습니다.이 이상한 일이 발생합니다.

하지만 에뮬레이터에서는 정상적으로 작동합니다. 하지만 mobile.what에 잘못되어가는거야 ??

+0

연락처를 삭제하려고하면 어떻게됩니까? 오류가 있습니까? –

+0

모바일 NA입니다. 오류가 표시되지 않았습니다. "연락처가 삭제되었습니다"라고 말하고 있습니다. 실제로는 연락처를 삭제하지 않습니다. – siva

+0

어떤 Android 버전을 사용하십니까? 기기에서? 그리고 에뮬레이터에서? – PKeidel

답변

0

생 연락처 id를 삭제하려고합니다. 그럴 수 없습니다.

연락처는 여러 개의 원시 연락처로 구성되며 연락처를 삭제할 때 모든 원시 연락처도 삭제됩니다.

는이 작업을 수행합니다 : 작업이 성공했을 경우 1이됩니다 삭제

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

.

관련 문제