2012-10-17 16 views
5

Tôi đang phát triển ứng dụng SMS và cần liệt kê cuộc trò chuyện SMS. Tôi đã gặp sự cố khi cố gắng truy cập vào nhà cung cấp nội dung bằng cách sử dụng uri content://mms-sms/conversations/. Đó là chạy tốt trên Android 2.3 nhưng khi chạy ở Android 4.0.3 Samsung galaxy tab 2 nó trả về lỗi:nội dung: // mms-sms/conversation/return NullPointerException tại Android ICS Samsung

10-17 09:04:51.035: E/AndroidRuntime(22600): FATAL EXCEPTION: main 
10-17 09:04:51.035: E/AndroidRuntime(22600): 
java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.yooi/com.yooi.ui.MainActivity}: 
android.view.InflateException: Binary XML file line #6: Error 
inflating class fragment 10-17 09:04:51.035: E/AndroidRuntime(22600): 
    at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.app.ActivityThread.access$600(ActivityThread.java:128) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.os.Handler.dispatchMessage(Handler.java:99) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.os.Looper.loop(Looper.java:137) 10-17 09:04:51.035: 
E/AndroidRuntime(22600): at 
android.app.ActivityThread.main(ActivityThread.java:4514) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
java.lang.reflect.Method.invokeNative(Native Method) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
java.lang.reflect.Method.invoke(Method.java:511) 10-17 09:04:51.035: 
E/AndroidRuntime(22600): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
dalvik.system.NativeStart.main(Native Method) 10-17 09:04:51.035: 
E/AndroidRuntime(22600): Caused by: android.view.InflateException: 
Binary XML file line #6: Error inflating class fragment 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.view.LayoutInflater.inflate(LayoutInflater.java:489) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.view.LayoutInflater.inflate(LayoutInflater.java:396) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.view.LayoutInflater.inflate(LayoutInflater.java:352) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:273) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.app.Activity.setContentView(Activity.java:1835) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
com.yooi.ui.MainActivity.onCreate(MainActivity.java:17) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.app.Activity.performCreate(Activity.java:4465) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 
10-17 09:04:51.035: E/AndroidRuntime(22600): ... 11 more 10-17 
09:04:51.035: E/AndroidRuntime(22600): Caused by: 
java.lang.NullPointerException 10-17 09:04:51.035: 
E/AndroidRuntime(22600): at 
android.os.Parcel.readException(Parcel.java:1334) 10-17 09:04:51.035: 
E/AndroidRuntime(22600): at 
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:181) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.content.ContentProviderProxy.query(ContentProviderNative.java:358) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.content.ContentResolver.query(ContentResolver.java:311) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
com.yooi.ui.SmsThreadListActivity.getThreadListCursor(SmsThreadListActivity.java:146) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
com.yooi.ui.SmsThreadListActivity.onCreateView(SmsThreadListActivity.java:95) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.app.FragmentManagerImpl.moveToState(FragmentManager.java:806) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1010) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1108) 
10-17 09:04:51.035: E/AndroidRuntime(22600): at 
android.app.Activity.onCreateView(Activity.java:4243) 10-17 
09:04:51.035: E/AndroidRuntime(22600):  at 
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673) 
10-17 09:04:51.035: E/AndroidRuntime(22600): ... 21 more 

Tôi đã dành thời gian tìm kiếm của tôi nó trên google nhưng vẫn không tìm thấy câu trả lời. Bất cứ ai biết xin hãy giúp tôi, tôi bị mắc kẹt cho vấn đề này gây phiền nhiễu :(

+0

Có vẻ như thẻ "Samsung galaxy tab 2' thay đổi đường dẫn URI. Mã của tôi hoạt động tốt trên NexusS đang chạy 4.1.2. Bởi vì nhà cung cấp dịch vụ nhắn tin trực tiếp không phải là sdk công cộng nên bạn phải chịu đựng nó. 'msssms.db' –

+2

Chỉ cần lưu ý: Bạn không bao giờ nên * dựa vào 'nội dung: // sms' hoặc bất kỳ điều gì tương tự như hành vi của họ không được ghi lại và do đó có thể bị thay đổi hoặc bị xóa giữa các thiết bị hoặc phiên bản. – Eric

+0

Cảm ơn Eric, nhưng đây là cách duy nhất để truy cập cơ sở dữ liệu SMS ngay bây giờ, phải không? đường dẫn uri hoạt động tốt khi tôi thêm threadID như: 'content: // mms-sms/conversation/xxx', nhưng nó trở thành con trỏ null khi không có threadID được đề cập – Jevrier

Trả lời

5

Danh sách các cuộc hội thoại có thể được lấy thông qua truy vấn này:.

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

Keypoint đây là URI content://mms-sms/conversations?simple=true

Look here

+0

khi tôi chạy truy vấn này trên phiên bản hệ điều hành 4.0 ở trên, nó chỉ trả về 11 cột [_id, ngày, message_count, readcount, recipient_ids, snippet, snippet_cs, read, type, error, has_attachment, status] Tôi cần thread_id mà tôi có thể dễ dàng chạy nội dung: // mms-sms/conversation/truy vấn này trên phiên bản 2.3.6 OS, bạn có thể vui lòng cho tôi biết cần phải làm gì để có được cột đầy đủ ở trên 4.0 nhờ sự quan tâm của bạn không .. –

+1

@kamal_tech_view '_id' là 'thread_id' :) – barmaley

+0

cảm ơn tôi đã nhận nó và giải quyết vấn đề của tôi quá ... –