在工作中碰到一个情况,要调用系统的浏览器去加载一个网页,而这个网页是放在程序路径下的
首先,如何去调用系统的浏览器
Uri uri = Uri.parse("file:///android_asset/help.html");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
startActivity(intent);
关键在后面的setClassName上,其实相当于直接去显示的启动了BrowserActivity,但是这样打开以后,会被告知help.html找不到,这就是问题所在了
在之前使用WebView的demo时,可以发现只需要通过
webView.loadUrl("file:///android_asset/help.html");
就可以打开这个页面 所以访问asset下的资源路径应该是没错
之后,类似的,需要uri 还尝试了把文件放到raw文件夹下,然后通过
android.resource://package_name/R.raw.help
android.resource://package_name/raw/help
但是都失败了
最后在http://groups.google.com/group/android-developers/browse_thread/thread/1b2d20747a13224找到了原因
Mark Murphy解释的非常清楚,大概的意思是;
1 我们通过setClassName启动了一个Activity,但是这个Activity的包并不是我们这个程序的,也就是启动了一个外部程序
2 我们通过外部的程序,想要去访问我们自己包下的资源
显然 外部程序无法找到这个资源 因为他只能访问属于他的内容
同样的 Mark Murphy还提供了解决这些问题的思路
1 使用WebView
2 使用TextView,放到ScrollView中 模拟一个HTML
3 将网页放到服务器上 然后再通过网络去访问
4 自身程序提供ContentProvider 这样外部浏览器可以访问
5 将文件拷贝到sd卡(外部存储卡)上,然后再去访问
第二个方法应该说是最差的 但是如果网页很简单 那么也可以使用
第三个方法显然需要一些资源上的支持
第四种方法自定义一个ContentProvider会稍显麻烦
而最后一种方法是比较实际的,但是如果目录结构非常复杂,又是css又是js,再加上很多图片 就会比较麻烦
我最终是选用了WebView去实现这个功能,但是如果对于Web的操作上有一些特殊的要求(比如需要地址栏等等的),就需要自己额外操作
综上来说WebView和拷到SD卡两种方法是比较好的 各有利弊 还需要根据情况去讨论
分享到:
相关推荐
在MFC中,这通常是通过调用 `Navigate2` 方法实现的,该方法接受一个URL或资源路径作为参数,加载并显示指定的网页或资源。 在示例代码中,`Navigate2(filepath,NULL,NULL);` 这一行代码就是调用Web浏览器控件的 `...
### 无法打开CHM文件的解决方法 在日常工作中,我们经常会遇到各种格式的文档,其中CHM(Compiled HTML Help)文件是一种常见的帮助文件格式,主要用于存储一系列HTML页面及其相关资源,如图像、声音等。然而,在...
3. **ShlObj.dcu**:这个文件与Windows Shell对象有关,可能包含了对系统资源管理器操作的支持,如打开、复制、粘贴等。通过Shell对象,程序可以访问Windows的文件操作接口,实现更直观的用户交互。 4. **RPrev.dcu...
在微信小程序中实现打开并下载服务器上的PDF文件到手机,主要涉及到两个核心功能:一是通过`wx.downloadFile`接口下载文件,二是利用`wx.openDocument`接口预览或打开PDF文件。以下是对这两个功能的详细解释: 1. *...
这个"Android打开本地HTML网页AndroidStudio工程.rar"文件很可能包含了一个简单的示例项目,演示如何在Android应用中加载并显示本地HTML文件。这里我们将深入探讨实现这一功能所涉及的关键知识点。 1. **WebView...
为了使代码更具有可读性和维护性,我们通常会把HTML内容存储在资源文件中,或者创建一个方法来生成复杂的HTML结构。例如,可以创建一个方法来生成表格: ```csharp public string GenerateTable(List[]> data) { ...
在这个项目中,“QT读取Txt文件并显示在界面上完整版”是一个利用QT库实现的简单应用,它实现了从本地文件系统中选择TXT文本文件并将其内容在应用程序的textBrowser组件中显示出来。下面我们将详细讨论相关的知识点...
例如,在最后一行命令中,EXPLORER.EXE 是指定的打开程序,参数 "/e" 则表示用资源管理器打开。 因此,我们可以根据需要编辑命令来快速打开 U 盘程序,并且可以使用 Start 命令来启动多个程序或文件夹。
总结来说,在VS中编写Qt程序并引入资源文件,主要步骤包括创建资源文件、生成资源头文件、配置项目属性以及在代码中使用资源。尽管与Qt Creator相比过程稍显繁琐,但通过以上步骤,你可以在VS环境中享受到与Qt ...
总之,"Example076-同时打开多个文件并在多个窗口显示"的资源提供了一个在VB.NET环境中实现多文件打开的示例,这对于学习和提升ASP.NET开发技能非常有帮助。通过深入研究这个示例,开发者可以更好地理解和掌握如何...
### Java程序将Word文档直接转换成HTML文件:深入解析与实践 #### 一、引言 在企业级应用开发中,文档处理是一项常见的需求。尤其是将Word文档转换为其他格式,如HTML,以便于在网络环境中展示或进行进一步的处理...
从标签“打开.DLL文件”我们可以推断,此工具的主要功能就是允许用户直接打开并浏览DLL文件的内容,这通常需要特定的程序支持,因为DLL文件不是可以直接执行的文件类型。 在压缩包的文件名称列表中: 1. "ResHacker...
标题与描述中的关键词“android用于打开各种文件的intent”揭示了本文将探讨的主题:在Android平台上,如何使用Intent机制来启动应用程序以打开不同类型的文件。Intent是Android四大组件之一,它提供了一种方式来...
安装并运行这个程序后,用户可以在没有UC浏览器的情况下打开uhtm文件,或者将它们转换成可以在其他浏览器中打开的标准html格式。这个程序可能提供了用户友好的界面,使得操作流程简化,用户只需几步就能完成转换。 ...
在这个场景下,我们讨论的是一个用于查看HTML文件的应用程序,它支持在MDI环境中运行。 描述中提到的"HTMViewerHtml文件浏览.zip"是一个压缩包,包含了实现这一功能的源代码和相关文件。这个项目可能是用Visual C++...
### C#窗口程序中嵌入网页并调用JS方法详解 #### 一、引言 在C#开发中,有时我们需要在Windows Forms应用程序中嵌入一个网页,并且能够与该网页中的JavaScript进行交互。这种需求常见于那些需要将现有Web应用集成...
在Uniapp中,我们需要先在项目的`static`或`assets`目录下存放Pdf.js库,并将其引用路径添加到项目的配置文件中。例如: ```javascript // uniapp.config.js module.exports = { // ... staticFileGlob: ['**/*.{...
总的来说,正确打开文件的关键在于了解文件的扩展名,并确保拥有正确软件来处理这些文件。对于不熟悉的格式,网上搜索其扩展名通常能找到相关信息和处理方法。同时,保持操作系统和软件更新也是确保能顺利打开新格式...
如果HTML资源包含外部CSS、JavaScript等文件,我们需要确保这些文件与HTML在同一路径下,或者提供正确的相对路径或绝对URL。 在这个项目中,代码可能还涉及到了线程管理,比如在主线程上更新UI,在子线程中进行网络...
这些文件格式在日常工作中广泛使用,但它们在Web浏览器中的直接展示并不直观,用户通常需要下载文件到本地然后打开。为了解决这个问题,开发者会采用将这些文件转换成HTML的形式来实现在线预览。本源码方案就是针对...