删除短信会给出异常

时间:2014-05-12 14:00:42

标签: android android-4.4-kitkat

我正在尝试删除这样的短信:

getActivity().getContentResolver().delete(ContentUris.withAppendedId(Telephony.Sms.Inbox.CONTENT_URI, Long.valueOf(smsId)), null, null);

这给了我:

05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ 

java.lang.IllegalArgumentException: Unknown URL
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.content.ContentProviderProxy.delete(ContentProviderNative.java:536)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.content.ContentResolver.delete(ContentResolver.java:1282)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at com.test.Fragments.ConversationFragment.deleteSms(ConversationFragment.java:98)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at com.test.Fragments.ConversationFragment.onListItemClick(ConversationFragment.java:78)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.app.ListFragment$2.onItemClick(ListFragment.java:160)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.widget.AdapterView.performItemClick(AdapterView.java:299)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.widget.AbsListView$3.run(AbsListView.java:3638)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5017)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-12 09:51:39.646    5141-5141/com.test W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)

删除整个线程工作正常(所以我有正确的权限)。我也是默认的应用程序。

1 个答案:

答案 0 :(得分:0)

我发现了问题。 contentUri必须是content:// sms / id,而我用于Uri的是收件箱uri,就像内容:// sms / inbox。这就是它无法正常工作的原因。

android的官方内容uri是Telephony.Sms.CONTENT_URI。

然后你可以这样做:

getActivity().getContentResolver().delete(ContentUris.withAppendedId(smsUri, Long.valueOf(smsId)), null, null);