안드로이드 개발 질문/답변
(글 수 45,052)
public void addNumber(Cursor cursor){
ContentValues values = new ContentValues();
Log.d("u","Create Values");
values.put(ContactsContract.RawContacts.CONTACT_ID, 0);
Log.d("u","put1");
values.put(ContactsContract.RawContacts.AGGREGATION_MODE, ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED);
Log.d("u","put2");
Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
Log.d("u","inserting...");
long rawContactId = ContentUris.parseId(rawContactUri);
Log.d("u","Create ID");
(후략)커서는 데이터베이스를 가리키고 있는 거구요.
그런데 문제는 Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values); 에서
발생하는 것 같아요.
Logcat
02-22 02:28:28.500: ERROR/AndroidRuntime(1800): Uncaught handler: thread main exiting due to uncaught exception
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): java.lang.SecurityException: Permission Denial: writing com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/raw_contacts from pid=1800, uid=10029 requires android.permission.WRITE_CONTACTS
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.os.Parcel.readException(Parcel.java:1218)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.content.ContentProviderProxy.insert(ContentProviderNative.java:445)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.content.ContentResolver.insert(ContentResolver.java:629)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at pe.hcj.ushs.PhoneList.addNumber(PhoneList.java:89)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at pe.hcj.ushs.PhoneList$1.onClick(PhoneList.java:71)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:884)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.widget.ListView.performItemClick(ListView.java:3285)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.os.Handler.handleCallback(Handler.java:587)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.os.Handler.dispatchMessage(Handler.java:92)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.os.Looper.loop(Looper.java:123)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at android.app.ActivityThread.main(ActivityThread.java:4363)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at java.lang.reflect.Method.invokeNative(Native Method)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at java.lang.reflect.Method.invoke(Method.java:521)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-22 02:28:28.541: ERROR/AndroidRuntime(1800): at dalvik.system.NativeStart.main(Native Method)
권한 문제인가 싶어서 권한도 줘봤는데 안되네요 ㅠㅠ WRITE_CONTACTS랑 READ_CONTACTS 둘 다 줘봤는데;;
참고로 메인 엑티비티는 따로 있구요, 이건 서브 엑티비티 속 메서드에서 문제가 발생하는데;;
왜 그런걸까요 ㅠㅠ




권한을 줬는데도 권한 문제가 발생하면 어플 인스톨시 다음과 같은 메세지가 올라오는지 확인해보세요.
Not granting permission android.permission.XXXXXXXXX
일부 권한은 시스템에서 허락하지 않는듯 하더군요.