2017-03-13 83 views
0

我首先创建Android测试应用程序。Android WebView(链接打开)

我使用的是webview表单,并且我插入了一些url,当我运行app时它的工作正常。

但是,当我打开应用程序,并点击其他页面链接,比我得到选择列表,例如,打开它“谷歌浏览器”。但我想在webview中打开它。

我觉得这个说得很清楚。

activity_mail.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="0dp" 
    android:paddingRight="0dp" 
    android:paddingTop="0dp" 
    android:paddingBottom="0dp" tools:context=".MainActivity"> 

    <WebView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/webView" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     /> 
</RelativeLayout> 

MainActivity.java

package com.example.webviewapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class MainActivity extends AppCompatActivity { 

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

     String url = "http://example.com"; 
     WebView view=(WebView) this.findViewById(R.id.webView); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.loadUrl(url); 

    } 
} 

谢谢!

回答

1

你需要创建一个WebViewClient

,并重写shouldOverrideUrlLoading()方法

试试这个:

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

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

shouldOverrideUrlLoading的文档

给的主机应用程序有机会在当前WebView中加载新的url时接管控制。如果未提供WebViewClient ,默认情况下,WebView将要求活动管理器为URL选择合适的处理程序 。如果提供了WebViewClient,则返回 true表示主机应用程序处理url,而返回false 表示当前WebView处理该url。

+0

这是工作,它很容易。谢谢! –

1

查看WebView教程here。只需实现Web客户端并在loadUrl之前进行设置即可。最简单的方法是:

view.setWebViewClient(new WebViewClient()); 

对于Web内容的更高级处理,请考虑ChromeClient。