Android Webview EvaluateJavascript иногда не возвращает ответAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android Webview EvaluateJavascript иногда не возвращает ответ

Сообщение Anonymous »

Я пытался исправить это несколько недель и понятия не имел, что является причиной проблемы. В моем проекте я использую метод AssessmentJavascript() Android Webview следующим образом:

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

    this.runOnUiThread(new Runnable() {
@Override
public void run() {
webView.evaluateJavascript(command, new ValueCallback() {
@Override
public void onReceiveValue(String value) {
//Parsing and taking action here
Log.d("Response", value);
}
});
}
});
Пример строки JavaScript, который я отправляю, будет выглядеть так:

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

document.getElementById("message").value="Stuff worked!";
или

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

document.getElementById("some-awesome-button").click();
Хотя в 9 случаях из 10 эти вызовы возвращают значение в методе onReceiveValue(), время от времени я просто никогда не получаю ответа вообще .

Отсутствие реакции превратило последовательность событий в кошмар, и я понятия не имею, почему это происходит.

Еще немного данных, чтобы избежать дополнительных вопросов:
  • Минимальный SDK для этого проекта — 21, а я нацелен на 28.
  • Я не использую какие-либо javascriptInterface на данный момент и не собираюсь для этого проекта по нескольким причинам, связанным с бизнесом.
  • Когда я получаю ответ от веб-просмотра в методе onReceiveValue(), обычно это значение, которое я только что установил, или «нулевое», если это было событие щелчка. В любом случае, проблема не в том, что я иногда получаю нули или другие значения, а в явном отсутствии ответа иногда.
  • Как показано в примере кода, я определенно запускаю это в потоке пользовательского интерфейса согласно документации.
  • Я попросил разработчика сервера добавить некоторый код в журнал консоли всякий раз, когда я нажимаю кнопку, и когда я возвращаю успешное значение в методе onReceiveValue(), консоль регистрирует работают и отвечают, но когда я нахожусь в ситуации, когда не получаю ответа, журналы веб-консоли никогда не срабатывают и никогда не обнаруживают взаимодействие с кнопкой.
  • У меня тоже есть попробовал добавить таймер с логикой, которая прослушивает ответ от веб-просмотра и, если он его не получает, пытается повторить тот же вызов до 10 раз. Если первый вызов не удался, ни одна из последующих попыток не сработает.
  • Это настройки моего веб-просмотра:

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

    webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAllowFileAccess(true);
Похоже, что проблема связана с Javascript Bridge, но я не уверен.

Сводный вопрос, который у меня есть: что может привести к тому, что вызов AssessmentJavascript() Android WebView не вызовет обратный вызов и не вернет значение в onReceiveValue()?

Подробнее здесь: https://stackoverflow.com/questions/575 ... a-response
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»