如何在我的应用程序中打开网页?

时间:2015-10-07 06:12:39

标签: android webview

这是我的第一个问题。我知道之前已经问过这个问题,但我没有找到真正解释像我这样的全新手的答案的答案/解决方案。

我正在创建一个具有大量按钮的线性布局的应用程序,每个按钮应该将用户驱动到不同的网页。按钮效果很好,每个按钮都会进入特定的网页,但在默认浏览器中,不在应用程序内。

这是我的webview.xml文件:

<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

这是WebViewActivity.java文件:

public class WebViewActivity extends Activity {

private WebView webView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(
            "http://egy-tech-droid.blogspot.com.eg/search/label/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA%20%D8%AD%D8%B5%D8%B1%D9%8A%D8%A9");

}

我在清单文件中添加了互联网权限:

 <uses-permission android:name="android.permission.INTERNET" />

这将打开网页,但在设备的默认浏览器中,我希望它在我的应用程序内打开。有帮助吗? (请给我详细的解答/解释)

7 个答案:

答案 0 :(得分:9)

将此添加到您的代码中

webView.setWebViewClient(new WebViewClient(){

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
      view.loadUrl(url);
      return true;
    }
});

答案 1 :(得分:1)

您需要设置WebViewClient才能覆盖该行为(使用Web浏览器打开链接)。

使用此功能;

webview.setWebViewClient(new WebViewClient());

Android文档说:

  

public void setWebViewClient(WebViewClient客户端)

     

设置将接收各种通知的WebViewClient   要求。这将替换当前的处理程序。

答案 2 :(得分:1)

享受完整代码:

Oncreate():

        webView = (WebView) findViewById(R.id.webView1);

        if(Constants.isNetworkAvailable(mContext)){
            webView.setWebViewClient(new MyWebViewClient());
            webView.setWebChromeClient(new WebChromeClient() );

            webView.getSettings().setJavaScriptEnabled(true);     
            webView.getSettings().setPluginState(PluginState.ON);
            webView.getSettings().setBuiltInZoomControls(true);
            webView.getSettings().setSupportZoom(true); 

            webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
            webView.setScrollbarFadingEnabled(false);

            webView.setInitialScale(30);
            webView.loadUrl(url);

        }else{
            Toast.makeText(mContext, Constants.msgNoInternet, Toast.LENGTH_LONG).show();
        }

MyWebViewClient:

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);

            if (!pDialog.isShowing()) {
                pDialog.show();
            }

            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            //view.loadUrl(url);
            System.out.println("on finish");
            if (pDialog.isShowing()) {
                pDialog.dismiss();
            }

        }
    }

答案 3 :(得分:0)

我希望这会对你有所帮助。

在您的网络视图布局中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/relay"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#c7bbac">

        <ImageView
            android:id="@+id/txtmain"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"
            android:src="@drawable/topbar50" />

        <ImageView
            android:id="@+id/backbutn"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:adjustViewBounds="true"
            android:paddingTop="2dp"
            android:src="@drawable/backbtn" />
    </RelativeLayout>

    <WebView  
        android:id="@+id/webView1"
        android:layout_below="@+id/relay"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>

Webview Button Onclick:

webbutton = (ImageView) findViewById(R.id.web);
webbutton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        Intent intent = new Intent(getApplicationContext(), WebViewActivity.class);
        startActivity(intent);
    }
});

Webview活动:

public class WebViewActivity extends Activity {

private WebView webViewurl;
ImageView back;
AndroidInterface AMW = AndroidInterface.GetInstance();

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    back = (ImageView) findViewById(R.id.backbutn);
    webViewurl = (WebView) findViewById(R.id.webView1);

    webViewurl.getSettings().setJavaScriptEnabled(true);

    webViewurl.getSettings().setBuiltInZoomControls(true);
    final Activity activity = this;
    webViewurl.setWebViewClient(new WebViewClient() {
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
        }
    });
    webViewurl.loadUrl("http://example.com");

    back.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            finish();
        }
    });
}

答案 4 :(得分:0)

Sunny的回答

Kotlin版

Invalidate Caches/Restart

答案 5 :(得分:0)

 webView = (WebView) findViewById(R.id.youtubelink);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("your url");

        webView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });

答案 6 :(得分:-1)

WebView myWebView =(WebView)findViewById(R.id.webview); myWebView.loadUrl( “http://www.google.co.in”);

此代码工作正常......

以上代码打开您应用中的链接。