sqliteexception нет такого столбца на galaxy s2, даже если столбцы присутствуют - PullRequest
0 голосов
/ 07 февраля 2012

на эмуляторе, этот код работает без ошибок или исключений:

getContentResolver().delete(Uri.parse("content://sms/"), "body = ? and date = ?", new String[]{body,date)});

смс правильно удален.

Но когда я пытаюсь сделать это на galaxy s2, у меня исключение sqlite, такого столбца нет.

Я проверил:

Cursor columns = getContentResolver().query(Uri.parse("content://sms"), null,null,null,null);
    for (int i=0;i<columns.getColumnCount();i++){
        Log.i("name", columns.getColumnName(i));
    }

Если колонны были там, и это было так, они все присутствовали. Он должен был хорошо работать на Galaxy S2, как на эмуляторе. Я не знаю, работает ли это или то же самое на других устройствах. но откуда это исключение?

вот журнал исключений:

02-07 20:44:32.364: E/AndroidRuntime(14658): 
android.database.sqlite.SQLiteException: no such column: body: , 
while compiling: SELECT _id FROM threads WHERE _id IN (SELECT DISTINCT thread_id FROM
sms WHERE (body = ? and date = ?) UNION SELECT DISTINCT thread_id FROM wpm WHERE 
(body = ? and date = ?) UNION SELECT DISTINCT thread_id FROM pdu WHERE ( locked = 1 
AND body = ? and date = ?))

и здесь возвращаемые столбцы для «content: // sms» с курсором:

02-07 20:53:21.045: W/KeyCharacterMap(14961): No keyboard for id 0
02-07 20:53:21.060: W/KeyCharacterMap(14961): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
02-07 20:53:26.045: I/ApplicationPackageManager(14961): cscCountry is not German : FTM
02-07 20:53:26.320: I/name(14961): _id
02-07 20:53:26.320: I/name(14961): thread_id
02-07 20:53:26.320: I/name(14961): address
02-07 20:53:26.320: I/name(14961): person
02-07 20:53:26.320: I/name(14961): date
02-07 20:53:26.320: I/name(14961): protocol
02-07 20:53:26.320: I/name(14961): read
02-07 20:53:26.320: I/name(14961): status
02-07 20:53:26.320: I/name(14961): type
02-07 20:53:26.320: I/name(14961): reply_path_present
02-07 20:53:26.320: I/name(14961): subject
02-07 20:53:26.320: I/name(14961): body
02-07 20:53:26.320: I/name(14961): service_center
02-07 20:53:26.320: I/name(14961): locked
02-07 20:53:26.320: I/name(14961): error_code
02-07 20:53:26.320: I/name(14961): seen
02-07 20:53:26.325: I/name(14961): deletable
02-07 20:53:26.325: I/name(14961): hidden
02-07 20:53:26.325: I/name(14961): group_id
02-07 20:53:26.325: I/name(14961): group_type
02-07 20:53:26.325: I/name(14961): delivery_date

1 Ответ

2 голосов
/ 13 марта 2012

У меня тот же сценарий, что сообщение удаляется на эмуляторе, My Htc Desire, Galaxy Mini, но выдает исключение на Galaxy S, Galaxy SL

Это то, что я сделал сейчас .. Улучшу / обновлю мой ответ .. как текущая реализация работает нормально

try
            {

                Uri deleteUri = Uri.parse("content://sms");
                int i= getContentResolver().delete(deleteUri, "address=? and date=?", new String[] {Phone, Time});
                Log.d("*****GE *********", Phone +" "+ Time + "  ^^"+i);

            }
            catch(Exception ex)
            {
                Log.d("deleteEx", ex.toString());
                Uri deleteUri = Uri.parse("content://sms");
                int i= getContentResolver().delete(deleteUri, "address=? and date=?", new String[] {Phone, Time});
                Log.d("*****GE *********", Phone +" "+ Time + "  ^^"+i);
            }
            finally
            {

                finish();
                overridePendingTransition(R.anim.nothing, R.anim.animout);}

Я поместил код в try catch .. Я пробую его в первый раз, если он выдает исключение, я делаю то же самое в catch, и он работает. Надеюсь, поможет. Я не профессионал .. поэтому я не знаю причину, по которой это происходит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...