如何允许 Webview 使用 Android 视频播放器应用程序访问在线视频?

How to Allow Webview Accessing Online Video Using Android Video Player Application?

所以,我有一个带有链接视频的网络服务器,我可以访问我的网络视图,我可以使用 HTML5 播放器播放视频,但问题是,视频必须由安装在我的 phone 上的视频播放器应用程序播放... 我该如何实现?

我试过搜索,人们似乎喜欢使用 Youtube 视频播放器或 HTML5 播放器,而不是使用他们的视频播放器应用程序,所以我一无所获...

更新

所以,在我尝试实施 @EricHo

建议的方法之后
webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.contains("mp4")) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(Uri.parse(url), "video/mp4");
                    startActivity(intent);
                    return true;
                }
                return false;
            }
        });

我得到的是,播放视频的播放器是 Chrome 内置的播放器,而不是 Android 视频播放器本身 Photo 1, besides what I expect is The video will be played by gallery instead of Chrome player

如有必要,这是我的index.html源代码

<!DOCTYPE HTML>
<!DOCTYPE html>
<html>
<head>
    <title>video</title>
    <script type="text/javascript" src="src.js"></script>
    <link rel="stylesheet" type="text/css" href="src.css"> 
</head>
<body bgcolor="#333">
<center>
<video controls preload="metadata" style=" width:px;  height:px;">
    <source src="video-url" type="video/mp4">
</video><br />

</body>
</html>

一种方法是拦截来自 Webview 的 HTTP 请求。 refer to this

然后检查请求 URL 是否是视频 url。如果是,使用 Intent

打开 url
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(videoPath), "video/mp4");
startActivity(intent);

编辑: 下面是我的工作示例,当您单击以 "mp4" 结尾的 link 时,android 将使用默认媒体播放器打开 url。

    webView.webViewClient = object : WebViewClient() {
        override fun shouldOverrideUrlLoading(
            view: WebView?,
            request: WebResourceRequest?
        ): Boolean {
            println("shouldOverrideUrlLoading")
            println(request?.url.toString())
            val url :String = request?.url.toString()
            if (url.endsWith("mp4")) {
                val intent = Intent(Intent.ACTION_VIEW)
                intent.setDataAndType(Uri.parse(url), "video/mp4")
                startActivity(intent)
                return true
            }
            return false
        }
    }
    val videoPath = "http://techslides.com/sample-webm-ogg-and-mp4-video-files-for-html5"
    webView.loadUrl(videoPath)

Manifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ecl.webtest">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

我可能是错的,但您的默认 android 播放器会播放下载到您 phone 上的 tmp 文件夹或其他文件夹中的视频。您似乎可以使用 html 视频控件在您的页面上播放 linked 视频,但它不会用您的 android 播放器播放,因为它没有被下载并被识别为视频文件。您可以在页面上创建一个 hyperlink,将视频的 link 作为 url,让我们看看默认播放器是否会播放它