我是第一个创建Android测试应用程序。
我正在使用webview表单,并且我插入了一些网址,当我正在运行应用程序时,它的工作正常。
但是,当我打开应用程序,并点击其他页面链接时,比我选择的列表,例如,在“Google Chrome”上打开它。但是我想在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);
}
}
谢谢!
答案 0 :(得分:5)
您需要创建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
的文档让主机应用程序有机会在新的时候接管控件 url即将加载到当前的WebView中。如果是WebViewClient 未提供,默认情况下WebView将要求活动管理器选择 url的正确处理程序。如果提供了WebViewClient,则返回 true表示宿主应用程序处理url,而返回false 表示当前WebView处理URL。
答案 1 :(得分:1)
检查WebView教程here。只需实现Web客户端并在loadUrl之前设置它。最简单的方法是:
view.setWebViewClient(new WebViewClient());
有关网络内容的更高级处理,请考虑使用ChromeClient。