请问如何用android解析html格式的字符串,并显示在一般控件中

请问如何用android解析html格式的字符串,并显示在一般控件中,第1张

private void loadHTML(){

String html = "<!DOCTYPE html>\n" +

"<html>\n" +

"<head>\n" +

"<title></title>\n" +

"</head>\n" +

"<body>\n" +

" Hello!耶耶耶<br/>\n" +

"HTML Page here!\n" +

"<img src=\"img/bdlogo.gif\"></im>\n" +

"</body>\n" +

"</html>"

webView.loadData(html, "text/html", "UTF-8")

//webView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null)

}

ios上plus是一直存在的,不涉及等ready事件。但安卓上还是需要等plus ready。

在安卓环境中,通常情况下需要html页面解析完成后才会让5+ API生效,安卓的执行的顺序为:

1. 加载html页面,loading

2. 解析html页面(解析title节点、下载script/link等节点引用的资源,如js/css文件

3. 触发DOMContentLoaded事件

4. 触发plusready事件

此文对执行顺序有详细描述:http://ask.dcloud.net.cn/article/571

我们总是在不停追求性能优化,生效时间越早,我们可以把app的体验做的更好。

在HBuilder7.5版本之后安卓版支持提前注入5+ API,可以在plusready事件触发之前调用5+ API, *** 作方法是在页面中添加以下节点:

<script src="html5plus://ready"></script>,示例如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8"/>

<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>

<title>HTML5+ API</title>

<script src="html5plus://ready"></script>

<script type="text/javascript" charset="utf-8">

// 这里可以调用5+ API了,为了更好的兼容性,应该使用以下代码进行判断

if(window.plus){

// 在这里调用5+ API

}else{// 兼容老版本的plusready事件

document.addEventListener('plusready',function () {

// 在这里调用5+ API

},false)

}

</script>

</head>

<body>

Hello HTML5 plus

Android开发_如何调用 浏览器访问网页和Html文件

一、启动android默认浏览器

Intent intent= new Intent()

intent.setAction('android.intent.action.VIEW')

Uri content_url = Uri.parse('http://www.cnblogs.com')

intent.setData(content_url)

startActivity(intent)

这样子,android就可以调用起手机默认的浏览器访问。

二、指定相应的浏览器访问

1、指定android自带的浏览器访问

( “com.android.browser”:packagename ;“com.android.browser.BrowserActivity”:启动主activity)

Intent intent= new Intent()

intent.setAction('android.intent.action.VIEW')

Uri content_url = Uri.parse('http://www.cnblogs.com')

intent.setData(content_url)

intent.setClassName('com.android.browser','com.android.browser.BrowserActivity')

startActivity(intent)

2、启动其他浏览器(当然该浏览器必须安装在机器上)

只要修改以下相应的packagename 和 主启动activity即可调用其他浏览器

intent.setClassName('com.android.browser','com.android.browser.BrowserActivity')

uc浏览器':'com.uc.browser', 'com.uc.browser.ActivityUpdate“

opera :'com.opera.mini.android', 'com.opera.mini.android.Browser'

qq浏览器:'com.tencent.mtt', 'com.tencent.mtt.MainActivity'

三、打开本地html文件

打开本地的html文件的时候,一定要指定某个浏览器,而不能采用方式一来浏览,具体示例代码如下

Intent intent= new Intent()

intent.setAction('android.intent.action.VIEW')

Uri content_url = Uri.parse('content://com.android.htmlfileprovider/sdcard/help.html')

intent.setData(content_url)

intent.setClassName('com.android.browser','com.android.browser.BrowserActivity')

startActivity(intent)

关键点是调用了”content“这个filter。

以前有在win32编程的朋友,可能会觉得用这种形式”file://sccard/help.html“是否可以,可以很肯定的跟你说,默认的浏览器设置是没有对”file“这个进行解析的,如果要让你的默认android浏览器有这个功能需要自己到android源码修改manifest.xml文件,然后自己编译浏览器代码生成相应的apk包来重新在机器上安装。

大体的步骤如下:

1、打开 packages/apps/Browser/AndroidManifest.xml文件把加到相应的后面就可以了

2、重新编译打包,安装,这样子,新的浏览器就支持”file“这个形式了

有兴趣的可以去试试。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6112477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存