您的位置:首页 > 移动开发

android.webkit.WebView 体验2:概括

2010-04-07 22:45 459 查看
我前面已经对webview进行了讲说,但是今天想看看文档到底怎么说的。(不过,可惜的是,我英语确实太烂了)请注意,为了使您的活动来访问互联网和加载WebView加载网页,您必须添加到你的Android互联网权限的文件清单这必须是一个孩子的<manifest>元素。意思应该就是必须添加这个权限才可以使用webview加载网页。但是到底是什么意思?我前面用的时候就没有加这个权限,照样使用。难道是,不加这个不能访问互联网还是?我在网页里面添加了:<a href="http://www.baidu.com">访问百度</a>也是可以的,那就不知道,呵呵一:直接显示某网站地址public class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);WebView webview = new WebView(this);setContentView(webview);// Simplest usage: note that an exception will NOT be thrown// if there is an error loading this page (see below).webview.loadUrl("http://slashdot.org/");显示:Web page not available。。。。。。那我们加上上面说到的权限试试(<uses-permission android:name="android.permission.INTERNET" />)OK,通过二:如果我们只想访问很简单的页面,但是也不想从新创建html怎么办?String summary = "<html><body>You scored <b>192 points.</body></html>";webview.loadData(summary, "text/html", "utf-8");需要注意的是,上面两点就不能如我们上篇文章讲的那样进行交互了三:那么如何让java和js进行交互http://blog.csdn.net/partner4java/archive/2010/04/05/5452613.aspx这里面有,我就不多说了然后还有两种交互场景:Here's a more complicated example, showing error handling, settings, and progress notification:
// Let's display the progress in the activity title bar, like the
// browser app does.
getWindow().requestFeature(Window.FEATURE_PROGRESS);

webview.getSettings().setJavaScriptEnabled(true);

final Activity activity = this;
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activities and WebViews measure progress with different scales.
// The progress meter will automatically disappear when we reach 100%
activity.setProgress(progress * 1000);
}
});
webview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
});

webview.loadUrl(http://slashdot.org/);
大体就是发生js错误和访问进展之类的,反正没看懂四:cookie管理
Note that, in order for your Activity to access the Internet and load web pages in a WebView, you must add the INTERNET permissions to your Android Manifest file:
<uses-permission android:name="android.permission.INTERNET" />
This must be a child of the
<manifest>
element.我做了下面的一个例子试了一下package cn.partner4java.action;import android.app.Activity;import android.os.Bundle;import android.webkit.CookieManager;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Toast;public class MainActivity extends Activity {private WebView webView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);webView = (WebView) this.findViewById(R.id.webView);//webView.loadUrl("file:///android_asset/index.html");webView.loadUrl("http://www.baidu.com");//requestFocus(int direction, Rect previouslyFocusedRect)//Call this to try to give focus to a specific view or to one of its descendants and give it hints about the direction and a specific rectangle that the focus is coming from. Looks for a view to give focus to respecting the setting specified by getDescendantFocusability().webView.requestFocus();//Set the WebViewClient that will receive various notifications and requests.webView.setWebViewClient(new WebViewClient(){String loginCookie = "";@Overridepublic void onLoadResource(WebView view, String url) {CookieManager cookieManager = CookieManager.getInstance();loginCookie = cookieManager.getCookie(url);cookieManager.setCookie("name", "王昌龙");Toast.makeText(MainActivity.this, loginCookie, 0).show();Toast.makeText(MainActivity.this, url, 0).show();}@Overridepublic void onPageFinished(WebView view, String url) {CookieManager cookieManager = CookieManager.getInstance();cookieManager.setCookie(url, loginCookie);Toast.makeText(MainActivity.this, "onPageFinished:" + loginCookie, 0).show();Toast.makeText(MainActivity.this,"onPageFinished:" + url, 0).show();Toast.makeText(MainActivity.this,"name:" + cookieManager.getCookie("name"), 0).show();}});}}当:webView.loadUrl("file:///android_asset/index.html");时。所有的toast只有url有东西,我本以为我set了那么,会获取到我的设置值当:webView.loadUrl("http://www.baidu.com");根据那个url获取到了cookie值,但是我设置的也是不起作用,用j2ee的思路去想,我自己设置个cookie,告诉百度你根绝我的要求建立了个cookie值,估计他也是不乐意的。再深层次的理解,我也没那么大脑袋了,等以后碰到了,再补这一块吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: