无法使用 sdcard 中的 webview 播放 html 中的视频

Posted

技术标签:

【中文标题】无法使用 sdcard 中的 webview 播放 html 中的视频【英文标题】:Unable to play video in html using webview from sdcard 【发布时间】:2012-01-07 17:56:18 【问题描述】:

我想从 sdcard 在 webview 中播放视频。我用谷歌搜索但无法得到解决方案。我尝试过这种方式:

public class WebActivity extends Activity 
private WebView mWebView;

@Override   
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);

    setContentView(R.layout.helpview);
    mWebView =(WebView) findViewById(R.id.webview);
    mWebView.getSettings().setjavascriptEnabled(true);
    mWebView.getSettings().setPluginsEnabled(true);
    mWebView.getSettings().setAllowFileAccess(true);
    mWebView.getSettings().setSupportZoom(true);
    mWebView.getSettings().setBuiltInZoomControls(true);

    String html ="<html><head></head><body>Playing Video<object width=\"550\" height=\"400\"> <param name=\"movie\" value=\"file://"+Environment.getExternalStorageDirectory()+"/test-embeded.swf\"> <embed src=\"file://"+Environment.getExternalStorageDirectory()+"/test-embeded.swf"+"\" width=\"550\" height=\"400\"> </embed> </object></body></html>";
    String mimeType = "text/html";
    String encoding = "utf-8";

    mWebView.loadDataWithBaseURL("null", html, mimeType, encoding, "");


   
 

我得到了一个空白屏幕的输出。

我什至安装了 Adope Flash Player 10.1.apk 但输出还是那样而已

有人知道解决办法吗?

【问题讨论】:

【参考方案1】:

我在 webview 中加载了一个 html 页面,其中包含视频标签,我得到了输出。 html 文件位于 \assets 文件夹中,这是我的代码,它可能会对您有所帮助,

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    WebView webView = (WebView) findViewById(R.id.webview);
    String html = "<embed src=\"file:///android_asset/" + "demo.html" + " \"play=\"true\" loop=\"true\" width=\"100%\" height=\"100%\"> <embed>";
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setPluginsEnabled(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", null);

    WebViewClient webViewClient = new WebViewClient();
    webView.setWebViewClient(webViewClient);

    webView.setWebViewClient(new WebViewClient()
        @Override
        public void onPageFinished(WebView view, String url) 
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
        


        @Override
        public void onLoadResource(WebView view, String url) 
              if (url.endsWith(".mp4")) 
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri
                        .parse(url));
                intent.setDataAndType(Uri.parse(url), "video/*");
                view.getContext().startActivity(intent);

            
            else
            
                super.onLoadResource(view, url);
            
        


    );

我的html页面是,

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset=utf-8>
<title>Sample HTML5 Structure</title>
<SCRIPT LANGUAGE="JavaScript">
        function playvideo(url)
        

                  window.location=url;

        
</SCRIPT>
</head>
<body>
<video src="file:///sdcard/video.mp4"  onclick="playvideo('file:///sdcard/video.mp4')"  controls>
<p>If you are reading this, it is because your browser does not support the HTML5 video element.</p>
</video>
</body>
</html>

【讨论】:

非常感谢...我会试试这个。 @nik431 可以从assets文件夹播放吗?【参考方案2】:

很多事情都可能出错。

首先,检查 AndroidManifest.xml。有没有加入

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

?

接下来,检查日志中的错误(adb logcat)并在此处发布

【讨论】:

以上是关于无法使用 sdcard 中的 webview 播放 html 中的视频的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 音乐播放器无法从 sdcard 读取,只能读取内存

如何使用android在webview中播放视频?

Android WebView 中的 HTML5 视频不一致

android中的媒体播放器播放存储在模拟器sdcard中的音频

使用 webview 显示来自 sdcard 的图像不起作用

WebView 中的 VideoView 不会播放视频?