0

在 Html 文件中,始终在以下行中显示错误,

<video src="file:///sdcard/kummar.m4v" width="300" onclick="playvideo('file:///sdcard/ku<p>testing of video element.</p>

这是我的 Java 代码。在这里,我将视频文件保存在名为“kummar.m4v”的 SD 卡上,下面是我的 HTML 文件。我将 Html 文件保存在 assets -> New-> file->test.html 中。

当我调试代码时,我发现了错误;在这一行它抛出空指针异常

 webView.getSettings().setPluginState(WebSettings.PluginState.ON);

完整的 Java 代码:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    WebView webView = (WebView) findViewById(R.id.webView1);
    String html = "<embed src=\"file:///android_asset/" + "test.html" + " \"play=\"true\" loop=\"true\" width=\"100%\" height=\"100%\"> <embed>";
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    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(".m4v")) {
                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);
            }
        }
    });
}

Test.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/kummar.m4v" width="300" onclick="playvideo('file:///sdcard/ku<p>testing of video element.</p></video>
    </body>
</html>

我不知道 HTML 是对还是错(由于我缺乏 HTML 知识)。

这是我的 Logcat 错误:

03-20 20:35:51.911: E/AndroidRuntime(9222): FATAL EXCEPTION: main
03-20 20:35:51.911: E/AndroidRuntime(9222): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.videoManager/com.videoManager.VideoManagerActivity}: java.lang.NullPointerException
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.os.Looper.loop(Looper.java:123)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.app.ActivityThread.main(ActivityThread.java:4627)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at java.lang.reflect.Method.invokeNative(Native Method)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at java.lang.reflect.Method.invoke(Method.java:521)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at dalvik.system.NativeStart.main(Native Method)
03-20 20:35:51.911: E/AndroidRuntime(9222): Caused by: java.lang.NullPointerException
03-20 20:35:51.911: E/AndroidRuntime(9222):     at com.videoManager.VideoManagerActivity.onCreate(VideoManagerActivity.java:44)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-20 20:35:51.911: E/AndroidRuntime(9222):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
03-20 20:35:51.911: E/AndroidRuntime(9222):     ... 11 more
4

1 回答 1

1

如果它正在崩溃

webView.getSettings().setPluginState(WebSettings.PluginState.ON);

那么您的 webView 对象可能为 null 或 getSettings() 返回 null。

检查是否

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

真的找到了webView,如果findViewById返回“null”,可能是R.id.webView1所在的xml布局没有设置为当前Activity的内容。

于 2013-03-20T09:17:10.777 回答