Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中停止Webview视频_Java_Android_Android Webview - Fatal编程技术网

Java 如何在android中停止Webview视频

Java 如何在android中停止Webview视频,java,android,android-webview,Java,Android,Android Webview,在我使用webview的项目中,使用iframe概念加载视频url,但调用下一个inten无法停止播放声音或暂停视频。或用于在webview中放置视频的任何其他编码 我的代码: public class Webviewfullscreen extends Activity { WebView webview; LinearLayout webViewPlaceholder; @Override protected void onCreate(Bundle sav

在我使用webview的项目中,使用iframe概念加载视频url,但调用下一个inten无法停止播放声音或暂停视频。或用于在webview中放置视频的任何其他编码

我的代码:

public class Webviewfullscreen extends Activity {

    WebView webview;
    LinearLayout webViewPlaceholder;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webviewfull);
        webViewPlaceholder=(LinearLayout) findViewById(R.id.webViewholder);
        String VideoUrl=this.getIntent().getExtras().getString("url");
        webview = (WebView) findViewById(R.id.webView1);
        webViewDisplay(VideoUrl, webview);
    }
    private void webViewDisplay(final String weburl, final WebView www) {
        new Handler().post(new Runnable() {
            @SuppressWarnings("deprecation")
            @Override
            public void run() {

                WebSettings settings = www.getSettings();
                String Url = "<html> <head> <style type=text/css> iframe {height:100%;width:100%;margin:0;padding:0;overflow:scroll;} body {background-color:#000; margin:0;}</style> </head> <body> <iframe width=240px height=220px src="
                        + weburl
                        + " frameborder=0 webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></body></html>";

                settings.setLightTouchEnabled(true);

                www.getSettings().setJavaScriptEnabled(true);
                if (Build.VERSION.SDK_INT < 8) {
                    www.getSettings().setPluginsEnabled(true);
                } else {
                    www.getSettings().setPluginState(PluginState.ON);
                }
                www.setWebChromeClient(new WebChromeClient());

                www.loadDataWithBaseURL(null, Url, "text/html", "utf-8", null);
            }
        });
    }
    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();

    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            // do something on back.
            System.out.println("on finish");
            webViewPlaceholder.removeView(webview);
            webview.loadUrl("");
            webview.removeAllViews();
            webview.destroy();

            webview = null;
            finish();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }

}
公共类Webviewfullscreen扩展活动{
网络视图;
线性布局webViewPlaceholder;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.webviewfull);
webViewPlaceholder=(LinearLayout)findViewById(R.id.webViewholder);
String VideoUrl=this.getIntent().getExtras().getString(“url”);
webview=(webview)findViewById(R.id.webView1);
webViewDisplay(视频URL、webview);
}
私有void WebView显示(最终字符串weburl,最终WebView www){
new Handler().post(new Runnable()){
@抑制警告(“弃用”)
@凌驾
公开募捐{
WebSettings=www.getSettings();
String Url=“iframe{height:100%;width:100%;margin:0;padding:0;overflow:scroll;}body{background color:#000;margin:0;}”;
设置。setLightTouchEnabled(真);
www.getSettings().setJavaScriptEnabled(true);
if(Build.VERSION.SDK_INT<8){
www.getSettings().setPluginsEnabled(true);
}否则{
www.getSettings().setPluginState(PluginState.ON);
}
www.setWebChromeClient(新WebChromeClient());
www.loadDataWithBaseURL(null,Url,“text/html”,“utf-8”,null);
}
});
}
@凌驾
受保护的空onDestroy(){
//TODO自动生成的方法存根
super.ondestory();
}
@凌驾
公共布尔onKeyDown(int-keyCode,KeyEvent事件){
if(keyCode==KeyEvent.keyCode\u BACK&&event.getRepeatCount()==0){
//在背后做点什么。
System.out.println(“完成时”);
webViewPlaceholder.removeView(webview);
webview.loadUrl(“”);
removeallview();
destroy();
webview=null;
完成();
返回true;
}
返回super.onKeyDown(keyCode,event);
}
}

请帮助如何停止视频

这有点粗糙,但如果您想在活动开始/开始时暂停/播放视频,请在活动中使用此选项:

@Override
public void onPause()
{
    super.onPause();
    toggleWebViewState(true);
}

@Override
public void onResume()
{
    super.onResume();
    toggleWebViewState(false);
}

private void toggleWebViewState(boolean pause)
{           
    try
    {
        Class.forName("android.webkit.WebView")
        .getMethod(pause
                ? "onPause"
                : "onResume", (Class[]) null)
        .invoke(webview, (Object[]) null);
    }
    catch (Exception e){}
}

花了很多时间后,我得出结论,暂停正在播放WebView iframe HTML概念的视频

只需重写Activity或Fragment上的onPause()方法,您可以在其中使用webView并调用webView onPause()方法。它对我有用

@Override
public void onPause() {
    super.onPause();
    mWebView.onPause();
}
将此答案延迟发布,但可能对其他人有所帮助。

onPause()
方法中,将webview设置为空白url,如下所示

webview.loadurl("");

它对我很有用,试试看。

为什么不使用VideoView?@Enrichman,因为有时候WebView是首选。你的应用程序版本是什么??它为我工作,minSdk=14。