Приложению Android TV WebView не удается загрузить видео: net::ERR_FAILEDAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Приложению Android TV WebView не удается загрузить видео: net::ERR_FAILED

Сообщение Anonymous »

Я создаю приложение на основе 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
Ответить

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

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

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

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

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