Как выясняется, проблема заключается не в моем коде и не в турболинках, а напрямую связана с пользователями, у которых установлен браузер Chrome.
Я запустил бесчисленные журналы данных и тесты для подтверждения, но в результате получилось следующее:
Турболинки не будут работать должным образом, если устройство :
1) Не установлено Chrome
2) Имеется Chrome Отключено
3) Имеет устаревший версия Chrome, которая требует обновления (без указания c минимальная версия из того, что я мог найти, больше всего просто c, обновление должно произойти после версий X).
В любом из в 3 ситуациях этот Bridge Injection Error
сработает, и это, несомненно, является причиной.
Решение состоит в том, чтобы перенаправить пользователя в магазин Play через его устройство и дать ему указание загрузить, включить или обновить Chrome.
/**
* Open the Google Play store app URL Link
*/
void openChromeAppPlayStoreLink() {
//Try catch logic pulled from - https://stackoverflow.com/a/11753070/2480714
String chromeStr = "com.android.chrome";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + chromeStr));
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(intent);
} catch (android.content.ActivityNotFoundException anfe) {
//Will fail if play store is disabled or uninstalled for some reason
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=" + chromeStr));
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
Почему это требуется, когда ни Turbolinks и моя разветвленная версия используют WebChromeClient - это не то, что я полностью понимаю.
Как быстрый отказ от ответственности : Я уверен, что вы можете заставить Turbolink работать нормально в некоторых ситуациях, которые не делают всего, что мы делали на стороне сервера, но в нашей ситуации это было Линч, который вызывал проблемы.