Html按钮OnClick在Android中移动另一个活动

时间:2015-08-18 04:44:06

标签: android android-webview

我在addJavascriptInterface方法中遇到None of the methods in the added interface @android.webkit.JavascriptInterface.They will not be visible in Api level 17.编译错误。

我在下面的代码中指出了错误行:

WebView代码:

import android.webkit.JavascriptInterface;

webView = (WebView) findViewById(R.id.load_url);
webView.getSettings().setJavaScriptEnabled(true);

 if (new File(url).exists()) {
            webView.loadUrl(FILENAME_PREFIX + url);
            Log.d("fileurl", "" + FILENAME_PREFIX + url);

        }

        webView.addJavascriptInterface(new Object() { --->None of the methods in the added interface @android.webkit.JavascriptInterface.They will not be visible in Api level 17.

            @JavascriptInterface
            public void performClick() {
                Intent intRef=new Intent(FirstActivity.this,SecondActivity.class);
                startActivity(intRef);
            }
        }, "ok");

Html代码:

<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>

         <div>
            <button type="button" onclick="ok.performClick();">OK</button>
        </div>
  </body>
</html>

我正在使用minSdkVersion 11和targetSdkVersion 22.我在方法之前调用了@JavascriptInterface。你可以在上面的代码中看到。

任何人都可以帮助我。谢谢。

2 个答案:

答案 0 :(得分:2)

Html页面:

<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="style.css" />

        <script type="text/javascript">

        function moveToScreenTwo() {
        Android.moveToNextScreen();
        }
        </script>

    </head>

  <body>
     <div>
            <input type="button" value="Locate" onClick="moveToScreenTwo()" />
        </div>
  </body>
  </html>

<强> FirstACtivity.java:

import android.webkit.JavascriptInterface;

webView = (WebView) findViewById(R.id.load_url);
webView.getSettings().setJavaScriptEnabled(true);

 if (new File(url).exists()) {
            webView.loadUrl(FILENAME_PREFIX + url);
            Log.d("fileurl", "" + FILENAME_PREFIX + url);
  webView.addJavascriptInterface(new WebAppInterface(this), "Android");
        }
  //Class to be injected in Web page
    public class WebAppInterface {
        Context mContext;

        /**
         * Instantiate the interface and set the context
         */
        WebAppInterface(Context c) {
            mContext = c;
        }

        @JavascriptInterface
        public void moveToNextScreen() {

            Intent i = new Intent(FirstActivity.this,SecondActivity.class);
            startActivity(i);

        }
     }

更多参考:请检查this tutorial

答案 1 :(得分:1)

从Android 4.2文档:

  

警告:如果您已将targetSdkVersion设置为17或更高,那么您   必须将@JavascriptInterface注释添加到您的任何方法   想要提供您的网页代码(该方法也必须是公开的)。如果   如果没有提供注释,则无法访问该方法   在Android 4.2或更高版本上运行时,通过您的网页。

您必须在班级中使用@JavascriptInterface注释您希望从Javascript访问的每个方法。

修改 我在我的代码中实现了这种方式:

webView.addJavascriptInterface(new WebAppInterface(this), "ok");
public class WebAppInterface {
        Context mContext;

        /** Instantiate the interface and set the context */
        WebAppInterface(Context c) {
            mContext = c;
        }

        @JavascriptInterface
        public void performClick() {
            Intent intRef=new Intent(FirstActivity.this,SecondActivity.class);
            startActivity(intRef);
        }
    }

我希望它有所帮助!