HTML页面中启动Activity
今天和朋友讨论一个问题,就是如何在HTML的网页中,启动我们自己的Activity.
这里要引用一句话:
发现一个问题的时候,解决的办法按目标-路径-资源的思维模式,找原因和问题有如下几条路径。
- 一是拍脑袋,按自己的经验和判断,甚至是主观想象;
- 二是去搜索引擎找关键字,逛各种技术论坛听技术大牛们怎么说,看各类技术文章抽取提炼;
- 三是用一种可测量的工具或者方法发现问题
这个时候 ,我果断选择了2,然后查到了这篇文章:传送门—我是传送门.
读完这篇博客,我相信,实现这篇文章标题所描述的功能,不再是一件没有头绪的事。
所以,这里我要讲的是另外一件事情,就是我们在XML文件里添加的那一对<intetn-filter></intent-filter>
。
如下:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="znn"/>
</intent-filter>
这一对intent-filter
标签内,有1个action
,2个category
,1个data
标签。其中 <data />
标签中scheme
是协议的意思,应该和我们html中超链接头部保持一致。这个标签比较容易理解,但是剩余的三个标签,虽然看起来经常打交道,但是对它们的功能或某种机制,一点都不了解。Ctrl+Q
的文档,也看不明了。于是,破墙去Android Developers
,找到这些:
- ACTION_VIEW
ACTION_VIEW
Use this action in an intent with startActivity() when you have some information that an activity can show to the user, such as a photo to view in a gallery app, or an address to view in a map app.
当你有一些在界面可以展示给用户的信息的时候,使用这个action.使用这个标签,表示你想要启动一个Activity.
- CATEGORY_BROWSABLE
CATEGORY_BROWSABLE
The target activity allows itself to be started by a web browser to display data referenced by a link—such as an image or an e-mail message.
添加这个CATEGORY,Activity将允许被浏览器(包括WebView)启动
- CATRGOTY_DEFAULT
Set if the activity should be an option for the default action (center press) to perform on a piece of data.
这个标签的解释很简单,一般默认添加。
我尝试过,去掉这个标签,就无法从HTML中打开我指定的Activity。
在《Android 开发艺术探索》这本书34页,我找到了答案,作者说,不含这个Category的Activity,是不能被隐式启动的
好了,就到这里。有问题,果然应该动手翻翻文档,你想要的,一般在文档里都能找到。