受群友邀请 写一下如何查找这些所谓的意图 可以用tasker的发送意图进行操作 每一个app 都一定会有一个androidmanifest.xml文件 不过呢 看起来是乱码的 例如这样 这是因为app都会混淆的 一般要反编译 市面上有很多反编译的软件 我就不一一细说了 利用android上的root explorer(re)文件浏览器就可以(这也是一大神器) 打开re 点击你想要找意图的apk文件 re弹出对话框 点击查看 就可以帮你打开apk里面的内容 点击里面的androidmanifest.xml文件 打开就不乱码了 你可以复制里面的代码 黏贴到pc的文本编辑器 例如notepad++之类的 打开会好看很多 今天的例子比较简单 我找了"讯飞语音+"这个apk 经过一番复制黏贴后 我们得到了讯飞的androidmanifest内容 接下来 我们只需要关注几个关键字 "<intent-filter>**</intent-filter>" 这个intent-filter意思为 意图过滤器 可以简单理解为字符串匹配器 里面都是一些开发者自定义的规则 首先 找到</intent-filter>之后我们有几个地方要关注的 第一个是Activity 如果如上所示 intent-filter被一个Activity包裹着 这个Activity表明如果我们在tasker用的话需要 在-发送意图-目标栏: 选择Activity 同样的道理 如果intent-filter被<Service 包裹 我们就要在目标栏选择Service如果被receiver包裹 就要选择Broadcast receiver 这样我们的意图才能正确工作 这里要说一下 通常Service对我们用户来说没什么用 我们一般关注Activity 和receiver这两个比较有用 还是如上图 一个Activity里面可以有多个"<intent-filter>**</intent-filter>" 意思是这个Activity只要和里面其中一条"<intent-filter>**</intent-filter>"里面的规则相同就可以打开这个Activity 一般"<intent-filter>**</intent-filter>"里面的内容会包含几个关键字 我们来认识一下 "<action name"这个关键字 后面跟了一串字符串 这个字符串非常关键, 用来填入tasker发送意图界面的操作栏 "<category name=" 没有这个字符串的话 这个Activity / receiver都不能用于tasker!!! 另外如果一个"<intent-filter>**</intent-filter>" 必须在tasker的猫栏(照例吐槽 cat栏 意为约束)有多少个就写多少个 目前我的做法是 如果这个"<intent-filter>**</intent-filter>" ,当然 有一些Activity的"<intent-filter>**</intent-filter>" 可能只有1个或者很少 而且里面都非常多category . <data"这个关键字比较复杂 如果你看见Activity用到了这个关键字 并且你很想要要触发这个Activity的话 就搜索关键字"intent-filter的匹配规则" 很多blog写的比较详细 比如我推荐一个 http://blog.csdn.net/iispring/article/details/48481793 一般很少Activity会用到<data标签 这里有几个关键字如果intent-filter里面有 就表示这个Activity是入口Activity 也就是说你在桌面点击app图标 看见第一个界面就是这个Activity了 如果我要用tasker启动这个Activity 一般先看看有没有好用的intent-filter 第二个intent-filter规则比较少 可以用第二个,不过第二个是给桌面用的 如果我们要用第二个intent-filter 需要在tasker 发送意图的包名栏输入讯飞语音+的包名 包名在androidmanifest的第一行就可以看见 如果没有那么多intent-filter可以选择 比如只有第一个intent-filter的话 tasker必须要这样写 猫栏 选DEFAULT <data scheme="speechcloud"></data> 数据栏输入的数据叫URL格式 例如你浏览的这个网址 就是标准的URL格式 http://tieba.baidu.com/f?kw=tasker&ie=utf-8&tp=0# data中的scheme意思为框架 上面这个网址的框架就是http data中这样声明标签 意味着我们的意图要包含一个URL开头框架是"speechcloud" 后面怎么样就随意了 所以我们在数据栏中写 例如<data android:scheme="abc" android:host="tieba.baidu.com" /> 就要输入abc://tieba.baidu.com或者abc://tieba.baidu.com/bbcasdwqsdq 都可以 如果有更多URL属性指明就要有多少属性 就输入多少 这个涉及到android基础 百度google"android URL"就有资料可以看了) 目标栏 Activity 运行!!!!! 成功启动 按照上面的思路 我们找找别的 这个Activity的名字挺有趣的 就试试第一组intent-filter吧 第一组的action比较大众化 可能有很多个程序都注册了这action 操作栏 android.intent.action.SEARCH_LONG_PRESS 执行 可以看见 的确是很多app都注册了这个action 执行之后系统会叫你选择哪个app响应这个意图 这个intent-filter不是太理想 我们换第二组 操作栏 com.iflytek.speech.action.voiceinput 执行 完成了 原来这个Activity是这样用的 发送这个意图就可以打开这个界面 最后我想说发送意图的使用限制比较多并不是每一个intent-filter你都可以找到的还有很多隐藏在代码里面 这些intent你需要反编译整个app 而且非常难读 tasker的限制也是比较多的 例如对于category 如果intent-filter声明了多个 tasker无法全部匹配也是不能触发这个意图的 而且 很多Activity你都不知道他是干嘛的 除非官方公布这个Activity 这个时候只能一个一个试尝试,或者英语比较好的话 也能望文生义 这篇文章其实属于android很基础的开发知识 并不难 而且你看完这个再去看其他intent知识的话会更容易理解 我希望看到你们能把试出的功能发到贴吧的帖子上 让其他人也能用上这个意图 大家共同进步 |
|