在 Android Studio (WebView) 中制作新闻阅读应用。但是当我点击所选文章中的视频时,它无法播放

Making a News reading app in Android Studio (WebView). but when ever i click a video in a selected article it does not play

他们是我做错了什么吗?我必须包含一些库吗?

我试过添加 Youtube Api 但没有用。

编辑#1:这是 WebView 代码

在某些情况下,音频播放有效,但它只是一个试图加载视频的旋转圆圈动画,而不是视频。

package com.PAKGN.Mizzy;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import android.webkit.WebSettings;

private WebView webView1;
private Toolbar toolbar;
private String title;
private String url;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_webview);
    //  this.getWindow().requestFeature(Window.FEATURE_PROGRESS);

    WebView myWebView = (WebView) findViewById(R.id.webView1);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    title = getIntent().getExtras().getString("title");
     url = getIntent().getExtras().getString("url");


    getSupportActionBar().setTitle(title);

    if (savedInstanceState != null) {
        ((WebView) findViewById(R.id.webView1)).restoreState(savedInstanceState);
    } else {

        webView1 = (WebView) findViewById(R.id.webView1);

        webView1.getSettings().setJavaScriptEnabled(true);

        webView1.setLayerType(View.LAYER_TYPE_SOFTWARE, null);


        final Activity activity = this;


        webView1.setWebViewClient(new WebViewClient()

        {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view,
                                                    String url) {
                // TODO Auto-generated method stub
                view.loadUrl(url);
                return true;
            }
        });

        webView1.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                // Activities and WebViews measure progress with different scales.
                // The progress meter will automatically disappear when we reach 100%
                activity.setProgress(progress * 1000);
            }
        });

        webView1.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
            }
        });



        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                // Code for WebView goes here
                webView1.loadUrl(url);
            }
        });



    }


}



@Override
protected void onSaveInstanceState(Bundle outState ){
    ((WebView) findViewById(R.id.webView1)).saveState(outState);
}





@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // Check if the key event was the Back button and if there's history
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView1.canGoBack()) {
        webView1.goBack();
        return true;
    }
    // If it wasn't the Back key or there's no web page history, bubble up to the default
    // system behavior (probably exit the activity)
    return super.onKeyDown(keyCode, event);
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // Respond to the action bar's Up/Home button
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
}

.

您需要启用 javaScript.WebView myWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true);

编辑: 您正在为 webview 设置 WebClient 两次。

   `webView1.setWebViewClient(new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view,
                                                String url) {
            // TODO Auto-generated method stub
            view.loadUrl(url);
            return true;
        }
    });`

你在这里并没有真正做任何与原始实现不同的事情,而且这段代码甚至都不是 运行 因为你用另一个 webclient 替换了 webview,所以删除它。

    ` runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // Code for WebView goes here
            webView1.loadUrl(url);
        }
    });

`

这个也删掉,只需要输入webview1.loadUrl(url),不需要runOnUiThread。

    ` webView1.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

也删除这行,这是导致您出现问题的行。 `