Страница 1 из 1

Вылетает приложение при синхронизации по БТ списка контактов

Добавлено: 24 мар 2015, 18:26
Шпунтик
На портированной прошивке при соединении по Bluetooth с автомагнитолой, которая имеет функцию управления с руля вызовами и может подгружать телефонную книгу - происходит вылет приложения БлюПуп (на теле) - предварительно оба девайса друг друга видят и принимают пароли соединения - показывают - Есть Контакт. Но ... секунд через 20-30 идёт вылет приложения Блютууз.
При этом загрузки списка контактов не происходит.
ЛОГ ОШИБКИ

Код: Выделить всё

android.database.sqlite.SQLiteException: no such column: indicate_phone_or_sim_contact (code 1): ,
while compiling: SELECT _id, display_name, data1, data2 FROM view_data_restricted data LEFT OUTER JOIN (SELECT data_usage_stat.data_id, SUM(data_usage_stat.times_used) as times_used, MAX(data_usage_stat.last_time_used) as last_time_used FROM data_usage_stat GROUP BY data_id) as data_usage_stat ON (data_usage_stat.data_id=data._id) WHERE (1 AND mimetype_id=1) AND ((indicate_phone_or_sim_contact > 0)) ORDER BY data1 LIMIT 16384
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:181)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:413)
at android.content.ContentResolver.query(ContentResolver.java:462)
at android.content.ContentResolver.query(ContentResolver.java:405)
at com.android.bluetooth.hfp.AtPhonebook.queryPhonebook(AtPhonebook.java:443)
at com.android.bluetooth.hfp.AtPhonebook.getPhonebookResult(AtPhonebook.java:395)
at com.android.bluetooth.hfp.AtPhonebook.handleCpbsCommand(AtPhonebook.java:260)
at com.android.bluetooth.hfp.HeadsetStateMachine.processAtCpbs(HeadsetStateMachine.java:1802)
at com.android.bluetooth.hfp.HeadsetStateMachine.processUnknownAt(HeadsetStateMachine.java:1908)
at com.android.bluetooth.hfp.HeadsetStateMachine.access$6500(HeadsetStateMachine.java:79)
at com.android.bluetooth.hfp.HeadsetStateMachine$Connected.processMessage(HeadsetStateMachine.java:804)
at com.android.internal.util.StateMachine$SmHandler.processMsg(StateMachine.java:966)
at com.android.internal.util.StateMachine$SmHandler.handleMessage(StateMachine.java:789)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:61)
На стоковой прошивке - коннектится и передаёт список контактов нормально. На этом же кастоме нормально видит и соединяется с телефонами, планшетами, гарнитурами - даёт управление звонками(гарнитурам), обменивается файлами с другими телами и компом.
Пробовал заменять приложение БТ от стока (предварительно убрав проверку подписи в прошивке) - приложение запускается и нормально видит и работает со всеми девайсами кроме... автоголовы - ошибка при вылете таже самая. :evil:
Что смотреть и где - подскажите. Сам не програмист, но портирую прошивки давно - такое первый раз.
На автоголову не грешу - други прошивки коннектятся.

Re: Вылетает приложение при синхронизации по БТ списка конта

Добавлено: 24 мар 2015, 21:27
Foenix
Нет такой колонки в таблице. Почему ее нет по данному логу не ясно.

Re: Вылетает приложение при синхронизации по БТ списка конта

Добавлено: 24 мар 2015, 21:43
Шпунтик
Спасибо за ответ. Какой лог мне снять для лучшего понимания происходящего?
Колонки и правда нет в БД data\data\com.android.provider.contacts\contacts2.db - пробовал вставить БД из стока — но крашатся и контакты и диалер (ну они завязяны). Пробовал банально через SQLite Expert добавить колонку в родную базу прошивки (там постоянное значение "-1" во всей колонке на стоке) - тоже крашится- очень возможно я неправильно добавил!!!
Могу прислать БД - можете сделать корректнюу добавку столбца?

Как её создать чтоб не крашилась система? Чем/каким приложением вообще прописывается структура БД изначально - скорее всего надо прописывать там колонку indicate_phone_or_sim_contact
Что смотреть хоть?

З.Ы. в апк БлюПупа в файле smali (что упоминается в логе выше - hfp) нашел упоминание этой строки

Код: Выделить всё

.line 420
    const-string v3, "indicate_phone_or_sim_contact > 0"

    .restart local v3    # "where":Ljava/lang/String;
    goto :goto_0

    .end local v3    # "where":Ljava/lang/String;
    :cond_5
    move v0, v7
Пробовал его заккоментировать - NULL в итоге

Re: Вылетает приложение при синхронизации по БТ списка конта

Добавлено: 24 мар 2015, 22:14
Foenix
я думаю, это не поможет. Причем тут контакты? этой колонки нет в одной из таблиц из представленного запроса view_data_restricted или data_usage_stat
а раз у вас где-то что-то работает, то значит либо эта таблица создается временной или динамически или еще как-то, что данные (опять же это я философствую) может быть приходящие с сервера по какой-то причине приходят неполные (допустим) и она не создается или создается в ином виде.
И чуточку лексику меняй. БАЗА - это база данных - т.е. сущность содержащая ТАБЛИЦЫ (одну или несколько). Столбец мы можем добавить в таблицу, а не базу, иначе - я не пойму в какую таблицу вы пытаетесь его добавить.
Саму базу данных можно просмотреть любым менеджером sqlite (используйте гугл и скачайте оттуда). Посмотрите - что там происходит, сравните с базой данных с устройства, на котором работает код.

Re: Вылетает приложение при синхронизации по БТ списка конта

Добавлено: 24 мар 2015, 22:21
Foenix
В общем, судя по гуглению данной проблемы
http://stackoverflow.com/questions/1834 ... tetextview
беглым взглядом имхо там просто ваша программа использует какие-то depracated классы или методы, которые, возможно, уже не поддерживаются, или изменилась структура контактов. Требуется переписать код, вставка колонки не сработает, скорее всего. А раз кода у вас нету, то придется искать вам новую версию программы

Re: Вылетает приложение при синхронизации по БТ списка конта

Добавлено: 25 мар 2015, 10:09
Шпунтик
Foenix писал(а):...Причем тут контакты? ...
ну в принципе синхронизируется именно телефонная книга - а это и есть список контактов - следовал этой логике
Foenix писал(а):... может быть приходящие с сервера по какой-то причине приходят неполные (допустим) и она не создается или создается в ином виде....
данные приходят с одного аккаунта хранения при синхронизации - с гуглЯ - там не поменялось, т.к. работает и не работает на разных версиях одновременно (по времени получения данных из внешней БД)...
а вот то что создаётся не так таблица - именно в девайсе - я так думал с начала - отсюда вопрос - где прописана структура её создания ? Может там что подправить для создания в формате "под код запроса"
Foenix писал(а):...Саму базу данных можно просмотреть любым менеджером sqlite... Посмотрите - что там происходит...
вот и вопрос - раз не контакты (ну вызвало вопрос - почему они) - то какую базу смотреть. Где находится общая БД - en général так сказать (в общем виде) .... и возможно ли мне подправить алгоритм её создания?

Если что написал "глуповато" - прошу пардона ... :lol: