1

我使用 WebView 做了一个示例应用程序,在该 Web 视图中,URL 来自 Web 服务。它工作正常,但如果我单击该 WebView 中的任何链接,它会自动转到默认 Web 浏览器。但我只想在我的应用程序 Web 视图中打开。这是我的代码:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String url ="http://www.cementegypt.com/m/";
        WebView view =(WebView) this.findViewById(R.id.webView1);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
4

3 回答 3

12

尝试:

WebView view =(WebView)findViewById(R.id.webView1);
view.getSettings().setJavaScriptEnabled(true);
view.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
});

资料来源:@ momo对非常相似的问题的回答:链接应该在 Android 的同一个网页视图中打开。希望这可以帮助。

于 2013-07-26T03:13:17.557 回答
0

这是因为 WebView.loadUrl 仅用于查看网页,而您似乎就像创建自己的浏览器一样,这是另一个问题。尝试使用这样的东西:

WebView w;    

w.setWebViewClient(新的 WebViewClient(){

        @Override
        public void onLoadResource(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onLoadResource(view, url);
        }

        @Override
        public void onReceivedError(WebView view, int errorCode,
                String description, String failingUrl) {
            // TODO Auto-generated method stub
            super.onReceivedError(view, errorCode, description, failingUrl);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            return super.shouldOverrideUrlLoading(view, url);
        }

    });
于 2013-07-26T04:11:15.887 回答
0

您应该覆盖 WebViewClient 类的 shouldOverrideUrlLoading() ,这里会像 -

    w.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
        {
            super.shouldOverrideUrlLoading(view, url);

            if(url!=null&&(URLUtil.isHttpsUrl(url)||URLUtil.isHttpUrl(url)))
            {
                view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                return true;
            }
return false;
}});
于 2013-07-26T05:08:44.400 回答