Я создаю приложение на основе WebView для Android TV с использованием Flutter. Хотя большинство веб-сайтов работают нормально, приложение сталкивается с проблемой при попытке загрузить страницы, содержащие видеоконтент. В частности, при переходе к видео в журналах появляется следующая ошибка:
Журналы ошибок:
[AndroidInAppWebViewController] (android) WebView ID 0 calling "onReceivedError" using {request: {headers: {sec-ch-ua: "Android WebView";v="131", "Chromium";v="131", "Not_A Brand";v="24", sec-ch-ua-mobile: ?1, Accept: */*, sec-ch-ua-platform: "Android", User-Agent: Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Mobile Safari/537.36, Referer: https://lotusdm.com/template/animation-template/20, Accept-Encoding: identity;q=1, *;q=0, Range: bytes=0-}, isRedirect: false, method: GET, hasGesture: false, isForMainFrame: false, url: https://lotusdm.com/backend-assets/uplo ... 366607.mp4}, error: {description: net::ERR_FAILED, type: -1}}
[log] WebView request error: net::ERR_FAILED
url : https://lotusdm.com/backend-assets/uplo ... 366607.mp4
type : UNKNOWN
Наблюдения: •
Видео не загружается: WebView не отображает видео и выдает ошибку net::ERR_FAILED.• Работает невидеоконтент: обычные страницы загружаются без проблем.
• Работает в браузере: веб-сайт, включая видео, корректно работает в настольном или мобильном браузере. Я подозреваю, что проблема может быть связана с настройками WebView, протоколами потокового видео или совместимостью Android TV.
Код:
Ниже приведена соответствующая часть моей реализации:
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:get/get.dart';
class WebViewWidget extends StatelessWidget {
final HomeController homeController;
const WebViewWidget({super.key, required this.homeController});
@override
Widget build(BuildContext context) {
return InAppWebView(
initialSettings: _webViewSettings(),
initialUrlRequest: URLRequest(
url: WebUri(homeController.url.value),
),
onWebViewCreated: (controller) {
homeController.webViewController = controller;
homeController.setLoading(true);
},
onLoadStart: (controller, url) async {
homeController.setLoading(true);
log('WebView started loading: $url');
},
onLoadStop: (controller, url) {
homeController.setLoading(false);
log('WebView finished loading: $url');
},
onLoadError: (controller, url, code, description) {
homeController.setLoading(false);
log('WebView error [$code]: $description at $url');
},
);
}
InAppWebViewSettings _webViewSettings() {
return InAppWebViewSettings(
javaScriptEnabled: true,
mediaPlaybackRequiresUserGesture: false,
mixedContentMode: MixedContentMode.MIXED_CONTENT_ALWAYS_ALLOW,
userAgent:
"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Mobile Safari/537.36",
);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... err-failed
Приложению Android TV WebView не удается загрузить видео: net::ERR_FAILED ⇐ Android
Форум для тех, кто программирует под Android
1736534342
Anonymous
Я создаю [b]приложение на основе WebView для Android TV[/b] с использованием Flutter. Хотя большинство веб-сайтов работают нормально, приложение сталкивается с проблемой при попытке загрузить страницы, содержащие видеоконтент. В частности, при переходе к видео в журналах появляется следующая ошибка:
[b]Журналы ошибок:[/b]
[AndroidInAppWebViewController] (android) WebView ID 0 calling "onReceivedError" using {request: {headers: {sec-ch-ua: "Android WebView";v="131", "Chromium";v="131", "Not_A Brand";v="24", sec-ch-ua-mobile: ?1, Accept: */*, sec-ch-ua-platform: "Android", User-Agent: Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Mobile Safari/537.36, Referer: https://lotusdm.com/template/animation-template/20, Accept-Encoding: identity;q=1, *;q=0, Range: bytes=0-}, isRedirect: false, method: GET, hasGesture: false, isForMainFrame: false, url: https://lotusdm.com/backend-assets/uploads/asset/2081366607.mp4}, error: {description: net::ERR_FAILED, type: -1}}
[log] WebView request error: net::ERR_FAILED
url : https://lotusdm.com/backend-assets/uploads/asset/2081366607.mp4
type : UNKNOWN
Наблюдения: •
Видео не загружается: WebView не отображает видео и выдает ошибку net::ERR_FAILED.• Работает невидеоконтент: обычные страницы загружаются без проблем.
• Работает в браузере: веб-сайт, включая видео, корректно работает в настольном или мобильном браузере. Я подозреваю, что проблема может быть связана с настройками WebView, протоколами потокового видео или совместимостью Android TV.
[b]Код:[/b]
Ниже приведена соответствующая часть моей реализации:
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:get/get.dart';
class WebViewWidget extends StatelessWidget {
final HomeController homeController;
const WebViewWidget({super.key, required this.homeController});
@override
Widget build(BuildContext context) {
return InAppWebView(
initialSettings: _webViewSettings(),
initialUrlRequest: URLRequest(
url: WebUri(homeController.url.value),
),
onWebViewCreated: (controller) {
homeController.webViewController = controller;
homeController.setLoading(true);
},
onLoadStart: (controller, url) async {
homeController.setLoading(true);
log('WebView started loading: $url');
},
onLoadStop: (controller, url) {
homeController.setLoading(false);
log('WebView finished loading: $url');
},
onLoadError: (controller, url, code, description) {
homeController.setLoading(false);
log('WebView error [$code]: $description at $url');
},
);
}
InAppWebViewSettings _webViewSettings() {
return InAppWebViewSettings(
javaScriptEnabled: true,
mediaPlaybackRequiresUserGesture: false,
mixedContentMode: MixedContentMode.MIXED_CONTENT_ALWAYS_ALLOW,
userAgent:
"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Mobile Safari/537.36",
);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79346713/android-tv-webview-app-fails-to-load-videos-neterr-failed[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия