2015-02-04 1 views
0

연락처를 의도적으로 편집하려고합니다. 내 코드는 다음과 같습니다 mContact.str 접촉의 Contacts._ID입니다Android가 의도 한 연락처 목록을 편집합니다.

Uri mUri = ContentUris.withAppendedId(Phone.CONTENT_URI, 
          Long.parseLong(mContact.str)); 
Intent intent = new Intent(Intent.ACTION_EDIT); 
intent.setDataAndType(mUri, Contacts.CONTENT_ITEM_TYPE); 
intent.putExtra("finishActivityOnSaveCompleted", true); 
mActivity.startActivityForResult(intent, EDIT_CONTACT_RESULT); 

. 이 코드는 Android 버전이 다른 여러 기기에서 작동합니다. 그러나 나는 어떤 충돌없이 화웨이 4.2.2에 아래 오류 : 내 매니페스트 파일에 READ_CONTACTSWRITE_CONTACTS 권한을 사용하고

또한
02-04 14:01:23.024: E/ContactLoader(8190): Error loading the contact: content://com.android.contacts/data/phones/22127 
02-04 14:01:23.024: E/ContactLoader(8190): java.lang.IllegalArgumentException: uri format is unknown 
02-04 14:01:23.024: E/ContactLoader(8190): at com.android.contacts.util.ContactLoaderUtils.ensureIsContactUri(ContactLoaderUtils.java:64) 
02-04 14:01:23.024: E/ContactLoader(8190): at com.android.contacts.model.ContactLoader.loadInBackground(ContactLoader.java:425) 
02-04 14:01:23.024: E/ContactLoader(8190): at com.android.contacts.model.ContactLoader.loadInBackground(ContactLoader.java:82) 
02-04 14:01:23.024: E/ContactLoader(8190): at android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:303) 
02-04 14:01:23.024: E/ContactLoader(8190): at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:68) 
02-04 14:01:23.024: E/ContactLoader(8190): at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:56) 
02-04 14:01:23.024: E/ContactLoader(8190): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
02-04 14:01:23.024: E/ContactLoader(8190): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
02-04 14:01:23.024: E/ContactLoader(8190): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
02-04 14:01:23.024: E/ContactLoader(8190): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
02-04 14:01:23.024: E/ContactLoader(8190): at java.lang.Thread.run(Thread.java:838) 

.

답변

0
Uri mUri = ContentUris.withAppendedId(Phone.CONTENT_URI, 
          Long.parseLong(mContact.str)); 
    Intent intent = new Intent(Intent.ACTION_EDIT); 
    intent.setDataAndType(mUri, Contacts.CONTENT_ITEM_TYPE); 
    intent.putExtra("finishActivityOnSaveCompleted", true); 
    //add the below line 
    intent.addFlag(intent.FLAG_ACTIVITY_CLEAR_TOP); 
    mActivity.startActivityForResult(intent, EDIT_CONTACT_RESULT); 
+0

답을 주셔서 감사하지만 여전히 같은 오류가 점점 :/ – Rudi

+0

@SAM : 어쩌면 당신은 무엇을 설명 할 수를

Uri mUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.parseLong(mContact.str)); 

또한 mContact.str은 다음과 같이해야한다 일하는 OP가 이것을 시도해야합니까? 또한 여기의 문제는 Activities 스택에는 문제가되지 않지만 URI가있는 것 같습니다. – mithrop

0

오케이 결국 해결책을 찾았습니다! URI는 다음과 같이해야합니다 :

mContact.str = phones.getString(phones 
          .getColumnIndex(Phone._ID)); 
관련 문제