WebView无法正常工作,在浏览器中外部启动URL。在app中显示网页

时间:2014-02-06 11:14:30

标签: android xml facebook android-intent webview

我创建了一个家庭或主要活动,其中有一些图标,其中一个是facebook,点击它就可以通过意图启动facebook.xml

该xml页面的代码设置如下:

<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="10"
android:id="@+id/webView" >
</WebView>

我想加载网址:“http://www.j.mp/tkf4mApp

链接到此xml文件的Java文件如下所示:

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class Facebook extends Activity {

private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.facebookpage);

    webView=(WebView)findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://www.j.mp/tkf4mApp");


}
}

但是不是在facebook.xml中的应用程序内显示网页,而是在外部启动浏览器,但我希望它在应用程序内显示。

4 个答案:

答案 0 :(得分:14)

根据这个答案:How to load external webpage inside WebView您需要在致电loadUrl之前设置一个WebViewClient:

webView.setWebViewClient(new WebViewClient());

您被发送到浏览器的原因是,如果没有设置WebViewClient,则导航的默认操作是将它们转发到浏览器。

答案 1 :(得分:0)

package com.example.webview;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {


   private WebView browser;

   @Override        
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      browser = (WebView)findViewById(R.id.webView1);
      browser.setWebViewClient(new MyBrowser());
   }


   public void open(View view){
      String url = "http://www.j.mp/tkf4mApp";
      browser.getSettings().setLoadsImagesAutomatically(true);
      browser.getSettings().setJavaScriptEnabled(true);
      browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
      browser.loadUrl(url);

   }
   private class MyBrowser extends WebViewClient {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         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.main, menu);
      return true;
   }

}

此链接可以帮助您...... http://www.tutorialspoint.com/android/android_webview_layout.htm

答案 2 :(得分:0)

参考以下项目,这个工作

https://code.google.com/p/html5webview/

答案 3 :(得分:0)

这很晚了,但可能会对其他开发人员有所帮助。...

这是您在加载URL之前需要添加的代码。

webview.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    });

根据文档,文档用语如下所示

/*@return {@code true} if the host application wants to leave the current WebView
             *         and handle the url itself, otherwise return {@code false}.*/

所以它只是说,如果您从 shouldOverrideUrlLoading 方法返回 true ,它将要求设备的默认浏览器处理打开URL的请求,如果您返回 false ,则您的URL仅通过Webview加载。

现在,您可以在此 setWebViewClient 调用之后在 webview 中加载URL,或者还可以在 shouldOverrideUrlLoading 方法中加载URL,然后返回值。