【问题标题】:Open Android activity on HTML button click in web view在 Web 视图中单击 HTML 按钮打开 Android 活动
【发布时间】:2015-03-26 10:06:29
【问题描述】:

我有一个 Android 程序可以在 Web 视图中显示 HTML 页面。 HTML 页面本地存在于“asset/www/index.html”中。

我想在 HTML 页面上放置一个按钮,并在单击该按钮时打开一个新活动。

这是Java代码:

public class HelloWebApp extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WebView webView = (WebView)findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new WebChromeClient());
        webView.loadUrl("file:///android_asset/www/index.html");
    }
}

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    您必须在按钮点击时从 html 中传递 url,如下所示,

    index.html

    <html>
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width; user-scalable=0;" />
    <script type="text/javascript" charset="utf-8" src="jquery-2.0.0.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="quantize.js"></script>
    
    <title>My HTML</title>
    </head>
    <body>
    <h1>My HTML</h1>
    <INPUT TYPE="button" value="Test" onClick="window.location='Navigation://OpenNativeScreen'">
    </body>
    </html>
    

    现在您将在单击按钮时在网页视图的 shouldOverrideUrlLoading 方法中获取该 url。请参阅下面的代码,

    MainActivity.java

    public class MainActivity extends Activity {
    
    WebView myBrowser;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dropdown_html);
        myBrowser = (WebView) findViewById(R.id.mybrowser);
        myBrowser.setWebViewClient(new MyBrowser());
        myBrowser.getSettings().setJavaScriptEnabled(true);
        myBrowser.loadUrl("file:///android_asset/www/index.html");
    }
    
    private class MyBrowser extends WebViewClient {
    
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.equals("Navigation://OpenNativeScreen")) {
                startActivity(new Intent(MainActivity.this,SecondActivity.class));
                finish();
                return true;
            }
            return false;
        }       
       }
     }
    

    【讨论】:

    • LogCat:打开跟踪文件时出错:没有这样的文件或目录。在模拟器中:网页不可用...
    • 你的 html 文件放在哪里了?
    • 把你的文件放在 asstes 文件夹中,写 url file:///android_asset/index.html 而不是 file:///android_asset/www/index.html
    • 这样做了...还是一样的结果。 “网页无法显示”。它没有从 webview 中退出。它应该退出 webview 并打开一个新的活动。
    • 您是否从网址中删除了 WWW ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2015-02-25
    • 1970-01-01
    相关资源
    最近更新 更多