我正在浏览android教程并尝试了WebView
示例。这就是我最终的结果:
WebAppActivity
public class WebAppActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView wv = (WebView) findViewById(R.id.webView1);
wv.loadUrl("http://www.google.com");
}
}
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</WebView>
</LinearLayout>
但是,不是在应用程序本身中加载页面,一旦应用程序启动,默认的android浏览器就会打开,并且页面会在浏览器而不是应用程序中加载。当我按下时,我返回显示空白屏幕的应用程序活动。
有谁知道为什么会这样?
编辑:
清单
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".WebAppActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
这只是为了表明我已经添加了INTERNET权限
编辑:
只要我添加WebViewClient
,
wv.setWebViewClient(new WebViewClient() {});
页面在应用程序中加载。这是预期的行为吗? Android WebView 是否需要 WebViewClient? (无法找到任何文件)
编辑:
我注意到当我在具有Google API的模拟器中安装apk时会出现此问题。在普通的模拟器上(没有Google API),它的行为符合预期。
答案 0 :(得分:3)
是的,你必须设置一个在覆盖的方法'shouldOverrideUrlLoading'上返回true的WebViewClient,以便你的webview加载你应用中的url。
如果你想要一个例子,请告诉我。
编辑
@Aki WebViewClient.shouldOverrideUrlLoading Documentation
当要在当前WebView中加载新URL时,让主机应用程序有机会接管控件。 如果未提供WebViewClient,默认情况下,WebView将要求活动管理器为URL选择正确的处理程序。如果提供了WebViewClient,则返回true表示主机应用程序处理url,而return false表示当前WebView处理该URL。
答案 1 :(得分:0)
private WebView webVenue;
private WebSettings websettings;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.schedule_time);
webVenue = (WebView)findViewById(R.id.webview_schedule_time);
txtEmptyMsg = (TextView)findViewById(R.id.txtEmptyMsg);
mContext = this;
webVenue.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webVenue.getSettings().setJavaScriptEnabled(true);
websettings=webVenue.getSettings();
webVenue.setScrollBarStyle(ScrollView.SCROLLBARS_OUTSIDE_OVERLAY);
webVenue.loadUrl(URL);
}
}
所有最好的......
答案 2 :(得分:0)
不是没有,但它允许你做很多事情。
请注意,在WebViewClient中调用shouldOverrideUrlLoading似乎也不起作用,因此您应该在onPageFinished中进行处理。
这是blog post,它将指导您完成。
答案 3 :(得分:0)
要将网页从网址加载到网页浏览中,无需设置网页浏览客户端。没有webview客户端,您可以将网页加载到webview中。但WebViewClient为处理webview带来了许多优势。从url加载网页的示例用法,
webView.loadUrl(yoururl);
答案 4 :(得分:0)
在默认的Android浏览器中打开url的唯一原因是“wv.loadUrl(”http://www.google.com“);”
当您加载http://www.google.com时,Google网站实际上会将网页重定向到http://www.google.co.in(假设您要从印度发布该应用)。
如果你运行“wv.loadUrl(”http://www.google.co.in“);”,谷歌将不会重定向页面,第一页将在你的应用程序中打开,进一步的点击将在系统浏览器中打开。< / p>
要处理此进一步的点击,您需要WebViewClient。