2013-09-08 2 views
0

Я нашел какую-то тему, но они не помогли мне решить мою проблему. Я хочу удалить свой проект sms. Пытались с этим Uri так много времени:Удалить sms из черновой коробки

contentResolver.delete("content://sms/draft", " ", null); //this is line 173 

Он бросает этот Exeption:

09-09 00:43:43.454: E/AndroidRuntime(2933): Caused by: java.lang.IllegalArgumentException: Unknown URL 
09-09 00:43:43.454: E/AndroidRuntime(2933): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java) 
09-09 00:43:43.454: E/AndroidRuntime(2933): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java) 
09-09 00:43:43.454: E/AndroidRuntime(2933): at android.content.ContentProviderProxy.delete(ContentProviderNative.java) 
09-09 00:43:43.454: E/AndroidRuntime(2933): at android.content.ContentResolver.delete(ContentResolver.java) 
09-09 00:43:43.454: E/AndroidRuntime(2933): at com.haanz.smsbackup.SmsProvider.query(SmsProvider.java:173) 
09-09 00:43:43.454: E/AndroidRuntime(2933): at android.content.ContentProvider.query(ContentProvider.java) 
09-09 00:43:43.454: E/AndroidRuntime(2933): at android.content.ContentProvider$Transport.query(ContentProvider.java) 
09-09 00:43:43.454: E/AndroidRuntime(2933): at android.content.ContentResolver.query(ContentResolver.java) 
09-09 00:43:43.454: E/AndroidRuntime(2933): at android.content.ContentResolver.query(ContentResolver.java) 

Кто-нибудь, пожалуйста, скажите мне, где сделал я не так?

ответ

2

Попробуйте это:

Uri deleteUri = Uri.parse("content://sms"); 
getContentResolver().delete(deleteUri, "type=?", new String[] {String.valueOf(3)}); 
+0

Спасибо, это сработало. – user1593800

+0

У меня есть другой вопрос. Я новичок в Android и пытаюсь использовать Content Provider для приложения о SMS. Мне интересно, почему, когда-то, UriMatcher не соответствует шаблону uri, например, в моем коде: 'private static final int RETRIEV_SMS = 15; uriMatcher.addURI (ДНУ, "/ retriev_data/*/восстановление/#", RETRIEV_SMS); ' В' запросе() 'метод, который я дал ' курсора = contentResolver.query (Uri.parse (CONTENT_URI + "/retriev_data/"+ box_index +"/restore/"+ backup_id), null, null, null, null);' и ожидать, что он перейдет в 'case RETRIEV_SMS:', но это не так. :( – user1593800

0

сделал просто сделать образец проекта и тестировал ..

Добавить в манифесте:

<uses-permission android:name="android.permission.READ_SMS"/> 
<uses-permission android:name="android.permission.WRITE_SMS"/> 

И попробуйте код из SO

private void deleteDrafts() { 
    /* 
    * This will delete all drafts from Messaging App. 
    */ 
    try { 
     Uri uriSms = Uri.parse("content://sms/draft"); 
     Cursor c = getContentResolver().query(uriSms, 
       new String[] { "_id", }, null, null, null); 

     if (c != null && c.moveToFirst()) { 
      do { 
       long id = c.getLong(0); 
       Log.d("Delete Draft ID", "" + id); 
       getContentResolver().delete(
         Uri.parse("content://sms/" + id), null, null); 
      } while (c.moveToNext()); 
     } 
    } catch (Exception e) { 
     Log.d("error", "" + e.getMessage()); 
    } 
} 

Надеюсь, это поможет:)

Между его дубликат от: Delete draft SMS in android

Но сделал тест и проверить его работу.

+0

Спасибо за ответ, тоже! :) Также ожидайте, что ваши идеи прояснят мой взгляд на комментарий выше. – user1593800