WebView的使用很方便。在学习WebView之前,我们现看看如何通过程序中调浏览器。
1、在程序中调起浏览器
Uri uri = Uri.parse("http://commonsware.com");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
2、通过WebView嵌入浏览器
1)允许internet连接的访问
在上面的例子中,我们可能发现无法相关的网页,这是因为程序不具备internet连接的权限,我们需要在Androidmanifest.xml中为App设置相关的权限。
<manifest... >
... ...
<uses-permission android:name="android.permission.INTERNET" />
<application .....>
... ...
</application>
</manifest>
2)在Android XML中设置WebView控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout .... >
<WebView android:id="@+id/c131_webkit"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
3)通过WebView对象,加载某个URL
WebView browser=(WebView)findViewById(R.id.c131_webkit);
browser.loadUrl("http://commonsware.com");
我们注意到嵌入的browser没有工具栏的,因此需要通过程序来某些操作和处理,例如reload(), goBack(), canGoBack(), goForward(), canGoForward(), goBackOrForward(),负数表示回跳N次,正数表示前行N次,canGoBackOrForward(), clearCache(), clearHistory()。
4)通过WebView对象,加载自己的内容
我们可以将WebView作为自己的布局框,在里面使用HTML来表述自己的内容。
browser.loadData("<html><body><h2>Hello , world!</h2></body></html>", "text/html", "UTF-8");
3、获得触发的事件响应
我们可以通过WebViewClient在WebView中加钩子来获取触发事件和相应。下面是一个简单的例子,浏览器中显示目前的时间,并作为一个链接,当我们点击这个链接时,更新为当前最新时间。
private WebView browser= null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chapter_13_test1);
browser = (WebView)findViewById(R.id.c131_webkit);
browser.setWebViewClient(new WebViewClient(){
/* 这个事件,将在用户点击链接时触发。通过判断url,可确定如何操作,如果返回true,表示我们已经处理了这个request,如果返回false,表示没有处理,那么浏览器将会根据url获取网页*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
loadTime();
return true; //表示已经处理了这次URL的请求
}
});
loadTime();
}
private void loadTime(){
String page="<html><body><a href=/"clock/">" + new Date().toString() + "</a></body></html>";
/* 这里我们使用了loadDataWithBaseUrl的方式。浏览器可以通过"file:///android_asset/"来获得映用中asset/的资源。但是如果我们没有设置baseUrl,或者为空,这无法获取,想获取这些资源,baseUrl不能设置为http(s)/ftp(s)/about/javascript这些已有专属的定义。在例子中,我们baseUrl设置为"wei://base". 对于上面的那个链接地址为wei://base/clock */
browser.loadDataWithBaseURL("wei://base", page, "text/html","UTF-8", null);
}
4、丰富浏览器的设置
我们可以通过webview.getSettings()获得WebSettings对象,对浏览器进行设置。如果我们需要支持JavaScript,我们需要如下设置:
browser.getSettings().setJavaScriptEnabled(true);
有几个比较常用的,setDefaultFontSize(), setTextSize(), etJavaScriptEnabled(), setJavaScriptCanOpenWindowsAutomatically(), setUserAgent()-“1”表示使用PC浏览器,0表示使用手机浏览器,可以通知website给出相应的排版方式。
下面是一个例子,在这个例子中,我使用acivity的进度条来显示加载网页的进度条,当进度条满的时候,进度条会消失。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Activity activity = this; //因为方法是以final的方式,所以设置final。
//设置activity的进度条,下面一句必须在setContentView之前,否则会报错。下面的语句也可以用activity.requestWindowFeature(Window.FEATURE_PROGRESS);来替代
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.chapter_13_test1);
browser=(WebView)findViewById(R.id.c131_webkit);
browser.getSettings().setJavaScriptEnabled(true); //设置支持javascript的例子
//通过WebChromeClient可以处理JS对话框,titles, 进度,等,这个例子,我们处理,我们将websit下载的进度同步到acitity的进度条上。
browser.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view, int newProgress) {
//activity的进度是0 to 10000 (both inclusive),所以要*100
activity.setProgress(newProgress * 100);
}
});
browser.loadUrl("http://slashdot.org/");
}
原文链接
http://blog.csdn.net/flowingflying/article/details/6339328
分享到:
相关推荐
Android framework 系统编译 新版WebView浏览器内核101.0.4951.61
浏览器 关于webview--android android webview 浏览器 浏览器 关于webview--android android webview 浏览器
QT webview浏览器相关开发,简单webview应用开发
Android 原生浏览器内核,包名 com.android.webview,内核版本116。 适用版本:Android API 24 及以上版本。 com.android.webview_116.0.5845.163-minAPI24.apk
Android基于WebView的浏览器
实现了添加书签等的功能,具体参见我的博客: http://blog.csdn.net/shouhuqi/article/details/7827748
Android基于WebView的手机浏览器源码,在android studio环境中,简单可用
Android WebView控件的用法.
Android实现WebView懒加载,提前进行页面JS资源加载。减少WebView加载时间及加载资源问题。Android 8.0以前需要引入X5内核,Android 8.0以后无特殊要求。
webview支持html5视频播放实例.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android framework 新版WebView浏览器内核114.0.5735.196
Android WebView 缓存详解 一. 两种缓存类型: 页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器 的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地...
。。。。。。。Android webview QQ一键登录并向后台返回参数
为了实现与阿里云IoT Studio移动可视化功能的搭配,使用android studio工具,调用腾讯X5浏览器内核,实现了安卓APP打开之后即可显示指定页面的功能。该源代码gradle已经配置好,采用阿里云仓库,速度很快。X5内核...
主要介绍了Android实现WebView删除缓存的方法,实例分析了Android针对WebView操作缓存的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
使用webview做的浏览器~android基础学习
仿照手机qq,新浪微博等app内置的浏览器插件,有刷新,前进、后退按钮,处理了文件下载事件,
webview全称叫做Android System WebView,它是Android生态系统的重要组成部分,也是Chrome浏览器的内核。可以让你的手机变得瞬间畅通,它会及时优化网页相关数据,有着接入式的操作体验数据,各种类型的应用程序可...
Android应用源码-浏览器&WebView&JS&HTML5类源代码(8例),可供学习及设计参考。