0

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

我试过添加 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);
}

.

4

1 回答 1

2

您需要启用 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;
        }
    });`

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

    ` 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);

也删除它,它是导致您的问题的这一行。`

于 2016-06-16T11:27:30.430 回答