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

Java 如何允许Webview使用Android视频播放器应用程序访问在线视频?,java,android,video,android-webview,android-videoview,Java,Android,Video,Android Webview,Android Videoview,所以,我有一个网络服务器,上面有一个链接视频,我让它访问我的网络视图,我可以使用HTML5播放器播放视频,但问题是,视频必须由安装在我手机上的视频播放器应用程序播放。。。 我如何做到这一点 我尝试过搜索,人们似乎喜欢使用Youtube视频播放器或HTML5播放器,而不是使用他们的视频播放器应用程序,所以我一无所获 更新 所以,在我尝试实现 webView.setWebViewClient(新的WebViewClient(){ @凌驾 公共布尔值shouldOverrideUrlLoading(W

所以,我有一个网络服务器,上面有一个链接视频,我让它访问我的网络视图,我可以使用HTML5播放器播放视频,但问题是,视频必须由安装在我手机上的视频播放器应用程序播放。。。 我如何做到这一点

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

更新

所以,在我尝试实现

webView.setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
如果(url.contains(“mp4”)){
意向意向=新意向(意向.行动\视图);
intent.setDataAndType(Uri.parse(url),“video/mp4”);
星触觉(意向);
返回true;
}
返回false;
}
});
我得到的是,播放视频的播放器是Chrome内置的,而不是Android视频播放器本身,除此之外,我期望的是

如果需要,这里是我的index.html源代码


视频


一种方法是拦截来自Webview的HTTP请求

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

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(videoPath), "video/mp4");
startActivity(intent);
编辑: 下面是我的工作示例,当您单击以“mp4”结尾的链接时,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播放器下载到tmp文件夹或手机上的其他文件夹中,它会播放视频。您似乎可以使用html视频控件在页面上播放链接的视频,但无法使用android播放器播放,因为它未下载并标识为视频文件。您可以在页面上创建一个超链接,将指向视频的链接作为url,让默认播放机查看是否会从您的网站拾取该链接,并启动操作意图
intent。操作视图
将url作为数据。您的意思是我需要列出youtube链接之类的链接吗,vimeo链接或其他要比较的链接?也许您可以检查链接是否以“.mp4”结尾,然后将链接传递到
Intent(Intent.ACTION\u VIEW)
以在AndroidLight中使用视频播放器打开,让我先尝试一下,我会更新它是否工作正常或我在这里卡住了,声明WebViewClient.shouldInterceptRequest(webview,url)后,如何显示HTTP请求?我建议你试试这段代码,url可以通过覆盖
#shouldOverrideUrlLoading()
方法来访问。问题是视频可能是任何互联网视频,因此不能使用静态超链接