android - Webview 不会在 Webview 中打开链接

标签 android webview

我有一个 Webview,它可以通过单击按钮打开一个 URL,但是当我在我打开的网站上按下一个链接时,它会在我的默认浏览器中打开该链接。这不是我想要它做的。谁能帮我解决这个问题?

这是我的 web.java

public class Web extends Activity {
    private static final String LOG_TAG = "Web";
    private WebView mWebView;
    public static final String URL = "";
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.web);
        mWebView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setSavePassword(false);
        webSettings.setSaveFormData(false);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setSupportZoom(false);
        String turl = getIntent().getStringExtra(URL);
        mWebView.loadUrl(turl);
        Button btnGoback = (Button) findViewById(R.id.btngoback);

        // Listening to button event
        btnGoback.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                finish();
            }
        });
    }

    @Override
    public void onBackPressed() {
        finish();
    }

    /**
     * Provides a hook for calling "alert" from javascript. Useful for debugging
     * your javascript.
     */
    final class MyWebChromeClient extends WebChromeClient {
        @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            Log.d(LOG_TAG, message);
            result.confirm();
            return true;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.web, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_back:
            // Single menu item is selected do something
            // Ex: launching new activity/screen or show alert message
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);}
        }
}

最佳答案

这是默认行为。

要捕获所有 future 的点击,您需要将 shouldOverrideUrlLoading 设置为 true

的自定义 WebViewClient
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
});

阅读更多相关信息 here .

关于android - Webview 不会在 Webview 中打开链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16980241/

相关文章:

android - Android 版 Facebook SDK 中的 "Facebook cannot be resolved to a type"

android - 为什么 Messenger 应用程序会在应用程序强制停止时收到消息?

Android studio Kotlin 将函数调用参数放在同一行

android - 在android中加载webview后隐藏进度条

ios - 以编程方式关注 web View 中的表单 (WKWebView)

android - Webview 第一次没有加载

android - 当文本超过一行时换行 TextView

java - 在 Android 应用程序上存储每条记录或一列的 BLOBS

android - 什么时候 IPFS 到 safari、chrome 和 firefox mobile 和 webview?

pdf - 在 React Native 中查看 PDF