2012-09-30 2 views
1

스프린트에서 실행중인 삼성 Galaxy S3 (Android 4.0.4)에서 'content : // mms-sms/conversations /'를 쿼리하려고하면 다음과 같은 충돌이 발생합니다. 회로망. 우리의 호출 코드 :MMS 콘텐츠 제공 업체 문제 (삼성 갤럭시 S3)

Uri uri = Uri.parse("content://mms-sms/conversations/"); 

    Log.e("IL", "CONTENT MIME " + context.getApplicationContext().getContentResolver().getType(uri)); 

    // The next call crashes... 
    Cursor cursor = context.getApplicationContext().getContentResolver().query(uri, null, null, null, null); 

흥미로운 사실은 예상대로 로그 위

CONTENT MIME vnd.android-dir/mms-sms 

를 반환한다는 것입니다. 아래

스택 추적 :

Caused by: java.lang.NullPointerException 
at android.os.Parcel.readException(Parcel.java:1333) 
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182) 
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136) 
at android.content.ContentProviderProxy.query(ContentProviderNative.java:358) 
at android.content.ContentProviderClient.query(ContentProviderClient.java:50) 
at com.ilyngo.sms.model.MessageCatalog.refresh(MessageCatalog.java:107) 
at com.ilyngo.sms.model.MessageCatalog.getSharedCatalog(MessageCatalog.java:58) 
at com.ilyngo.sms.model.ContactsManager.clearCaches(ContactsManager.java:31) 
at com.ilyngo.sms.app.bill_test.ThreadListActivity.onResume(ThreadListActivity.java:57) 
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1158) 
at android.app.Activity.performResume(Activity.java:4544) 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2448) 
... 12 more 
java.lang.NullPointerException 
at android.os.Parcel.readException(Parcel.java:1333) 
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182) 
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136) 
at android.content.ContentProviderProxy.query(ContentProviderNative.java:358) 
at android.content.ContentProviderClient.query(ContentProviderClient.java:50) 
at com.ilyngo.sms.model.MessageCatalog.refresh(MessageCatalog.java:107) 
at com.ilyngo.sms.model.MessageCatalog.getSharedCatalog(MessageCatalog.java:58) 
at com.ilyngo.sms.model.ContactsManager.clearCaches(ContactsManager.java:31) 
at com.ilyngo.sms.app.bill_test.ThreadListActivity.onResume(ThreadListActivity.java:57) 
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1158) 
at android.app.Activity.performResume(Activity.java:4544) 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2448) 
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2000) 
at android.app.ActivityThread.access$600(ActivityThread.java:128) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4514) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) 
at dalvik.system.NativeStart.main(Native Method) 

답변

0

이 컨텐트 프로는 널 투사을 허용하지 않습니다.

final String[] proj = {"*"}; 
Cursor cursor = context.getApplicationContext().getContentResolver().query(uri, proj, null, null, null); 

나는 이것이 일반적인 안드로이드 문제 추측 : 당신이 기본 SQL 쿼리 문에 전달되는 있도록 "*"를 사용하여 명시 적으로 제공해야합니다.

확인이 질문 : How to Read MMS Data in Android?

+2

원래 개발자는 ... 원래 { "*"} 투영법을 사용하여 똑같은 충돌을 받았습니다. (잠재적 인 원인으로이를 제거하기 위해 null 투영으로 되돌리기 전에 원래의 구현이었습니다. –

1

문제가 쿼리의 단순화 된 버전을 사용하여 해결할 수 있습니다

Uri.parse("content://mms-sms/conversations?simple=true"); 
Cursor cursor = context.getApplicationContext().getContentResolver().query(uri, null, null, null, null); 

키포인트는 여기 URI content://mms-sms/conversations?simple=true입니다.

관련 문제