0

Htmlファイルでは、常に次の行にエラーが表示されます。

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

これは私のJavaコードです。ここでは、SDカードに「kummar.m4v」という名前のビデオファイルを保存しました。以下は私のHTMLファイルです。Htmlファイルをアセット->新規->ファイル->test.htmlに保存しました。

コードをデバッグすると、エラーが見つかりました。この行で、 NullPointerExceptionがスローされます

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

「null」がfindViewByIdによって返された場合、R.id.webView1が配置されているxmlレイアウトが現在のアクティビティのコンテンツとして設定されていない可能性があります。

于 2013-03-20T09:17:10.777 に答える