查找意图

受群友邀请 写一下如何查找这些所谓的意图

可以用tasker的发送意图进行操作

每一个app 都一定会有一个androidmanifest.xml文件
把apk后缀换成zip解压就可以看见

不过呢 看起来是乱码的 例如这样

查找意图_第1张图片

这是因为app都会混淆的

一般要反编译 市面上有很多反编译的软件 我就不一一细说了
不过由于我们是找意图 所以可以不用反编译

利用android上的root explorer(re)文件浏览器就可以(这也是一大神器)

打开re 点击你想要找意图的apk文件 re弹出对话框 点击查看 就可以帮你打开apk里面的内容

点击里面的androidmanifest.xml文件 打开就不乱码了

查找意图_第2张图片

你可以复制里面的代码 黏贴到pc的文本编辑器 例如notepad++之类的 打开会好看很多

今天的例子比较简单 我找了"讯飞语音+"这个apk

经过一番复制黏贴后 我们得到了讯飞的androidmanifest内容

查找意图_第3张图片

接下来 我们只需要关注几个关键字

"********"

这个intent-filter意思为 意图过滤器 可以简单理解为字符串匹配器

里面都是一些开发者自定义的规则

首先 找到之后我们有几个地方要关注的

查找意图_第4张图片

第一个是Activity 如果如上所示 intent-filter被一个Activity包裹着
这个Activity一般理解为界面 就是你打开app之后能看见东西 具体是什么我们先不管

这个Activity表明如果我们在tasker用的话需要

在-发送意图-目标栏: 选择Activity

同样的道理

如果intent-filter被

我们就要在目标栏选择Service如果被receiver包裹 就要选择Broadcast receiver

这样我们的意图才能正确工作

这里要说一下 通常Service对我们用户来说没什么用 我们一般关注Activity 和receiver这两个比较有用

还是如上图 一个Activity里面可以有多个"********" 意思是这个Activity只要和里面其中一条"********"里面的规则相同就可以打开这个Activity

一般"********"里面的内容会包含几个关键字 我们来认识一下

"

用来填入tasker发送意图界面的操作栏

"

没有这个字符串的话 这个Activity / receiver都不能用于tasker!!!

另外如果一个"********"
里面有多个
"********"
里面的category太多 tasker写不完的话 选择其他少一点category的
"********"

,当然 有一些Activity的"********" 可能只有1个或者很少 而且里面都非常多category .
..我就没什么办法了 不过一般来说没有那么变态的Activity会用到那么多category"

比如我推荐一个 http://blog.csdn.net/iispring/article/details/48481793

一般很少Activity会用到 但是也有可能有的 例如这个

查找意图_第5张图片

这里有几个关键字如果intent-filter里面有
"category name="android.intent.category.LAUNCHER"

就表示这个Activity是入口Activity 也就是说你在桌面点击app图标 看见第一个界面就是这个Activity了

如果我要用tasker启动这个Activity 一般先看看有没有好用的intent-filter
上图里面 第一个intent-filter最多规则 又有action 又有category 又有data

第二个intent-filter规则比较少 可以用第二个,不过第二个是给桌面用的 如果我们要用第二个intent-filter 需要在tasker 发送意图的包名栏输入讯飞语音+的包名

包名在androidmanifest的第一行就可以看见

如果没有那么多intent-filter可以选择

比如只有第一个intent-filter的话 tasker必须要这样写
操作栏 android.intent.action.VIEW

猫栏 选DEFAULT
数据栏 speech://123.com
(补充一下 数据栏这样写是因为这个intent-filter有这个标签

数据栏输入的数据叫URL格式 例如你浏览的这个网址 就是标准的URL格式

http://tieba.baidu.com/f?kw=tasker&ie=utf-8&tp=0#

data中的scheme意思为框架 上面这个网址的框架就是http

data中这样声明标签 意味着我们的意图要包含一个URL开头框架是"speechcloud"

后面怎么样就随意了 所以我们在数据栏中写
"speech://123.com"
也可以这样写
"speech://123"
或者这样
"speech://fuck"
另外如果data里面有"android:host"关键字的话

例如

就要输入abc://tieba.baidu.com或者abc://tieba.baidu.com/bbcasdwqsdq

都可以 如果有更多URL属性指明就要有多少属性 就输入多少 这个涉及到android基础 百度google"android URL"就有资料可以看了)

目标栏 Activity

查找意图_第6张图片
查找意图_第7张图片
查找意图_第8张图片

运行!!!!!

查找意图_第9张图片

成功启动

按照上面的思路 我们找找别的


查找意图_第10张图片

这个Activity的名字挺有趣的 就试试第一组intent-filter吧

第一组的action比较大众化 可能有很多个程序都注册了这action
非常简单

操作栏 android.intent.action.SEARCH_LONG_PRESS
猫栏DEFAULT
目标 Activity

执行


查找意图_第11张图片

可以看见 的确是很多app都注册了这个action

执行之后系统会叫你选择哪个app响应这个意图

这个intent-filter不是太理想 我们换第二组

操作栏 com.iflytek.speech.action.voiceinput
其余不变

执行

查找意图_第12张图片

完成了 原来这个Activity是这样用的 发送这个意图就可以打开这个界面

最后我想说发送意图的使用限制比较多并不是每一个intent-filter你都可以找到的还有很多隐藏在代码里面 这些intent你需要反编译整个app 而且非常难读 tasker的限制也是比较多的 例如对于category 如果intent-filter声明了多个 tasker无法全部匹配也是不能触发这个意图的 而且 很多Activity你都不知道他是干嘛的 除非官方公布这个Activity 这个时候只能一个一个试尝试,或者英语比较好的话 也能望文生义 这篇文章其实属于android很基础的开发知识 并不难 而且你看完这个再去看其他intent知识的话会更容易理解 我希望看到你们能把试出的功能发到贴吧的帖子上 让其他人也能用上这个意图 大家共同进步

你可能感兴趣的:(查找意图)