虽说这个话题发布在公众号上有些晚了, 很久之前我在其他平台上发过intent跳转的一些相关方法, 时至今日也不是完全不能用, 常规的APP还是免不了使用intent来跳转, 对于经常使用按键精灵写脚本的同学应该会很有帮助.
关于intent(意图)的理论上的东西. 我就不说了, 这个可以百度查一下Android的相关文档.里面讲的很详细了,今天只讲利用intent记录这个模块来抓到intent的相关参数,那对于这些参数要怎么处理才能转换成autojs或者按键上可使用的代码.
先来看一个简单的例子, 抖音的个人资料界面跳转,在intent记录里面拦截到的信息如下图
看这两张图中的各个参数.
**from: **跳转的来源,一般是指上一个界面,不重要
**to: **跳转的目标界面, 也不重要
**action: **跳转的动作, 一般有 ACTION VIEW 等等, 重要程度一般
**clipData: **剪贴板数据, 此参数常用在分享文件的跳转中
**flags: **标志,常见的就是FLAG_ACTIVITY_NEW_TASK,不过在这里一般使用0x00000000类型的16进制来表示,具体的对应关系有兴趣的可以查查相关资料 重要程度一般
**dataString: **此参数一般会获得scheme的url连接, 不太重要, 如果该参数不为null的话, 还是得重点看看
**type: **类型, 几乎无用
**componentName: **跳转界面的className 非常重要
**scheme: **获取到scheme的信息. 不过几乎没见过他为非null的时候,即便是一个scheme跳转, 不重要
**package: **不重要
**requestCode: **不重要
**categories: **类型,这个在安卓手机中一般都是DEFAULT 默认的类型, 我把常用的类型.都放在下面的一个图里面,有兴趣的可以研究看看.
**intentExtras: 这个参数非常重要, **他携带的是intent跳转的关键参数.如果有的话, 如果跳转没有携带intent参数,那这里就会是空的没数据.
那么以示例中的这个intent跳转为例来写一个autojs的跳转
//autojs code
app.startActivity({
packageName : "com.ss.android.ugc.aweme",
className : "com.ss.android.ugc.aweme.profile.ui.ProfileEditActivity",
extras : {
need_right_to_left_enter_anim : true,
enter_from : "personal_homepage",
enter_method : "click_button",
},
root : true
});
观察一下 extras中的内容, 它里面的参数对应的是图片中intentExtras的key和value, 但是还有class的参数, 这里的class很重要,他指定了value的数据类型, class中我们常用的只有少数的几个:
java.lang.Interger
java.lang.Lang
java.lang.Float
java.lang.String
java.lang.Boolean
前三种都可以当成数字即可, 如果class是String,就需要把value的内容放在"" 引号内,当做一个字符串, 如果是Boolean值, 那value就只有true或者false.没有特殊的情况 可跳转的activity中,autojs仅支持这几种数据类型的参数.其他情况就是app的自定义类型. 或者bundle数据了,bundle的数据需要使用安卓的方法跳转,autojs和shell就无法跳转了.对于非常规数据类型, 例如下面这种的数据:
他的class显然不是常规的类型, 这种就是抖音内部的自定义类型的数据.
那么在shell环境中要怎么利用这些数据呢. 下面还是以示例图片中的数据来写成shell的调用方式:
am start -n com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.notification.NotificationDetailActivity --ez need_right_to_left_enter_anim true --es enter_from personal_homepage --es enter_method click_button
shell命令会有点长, 还是拖动一下看看里面的内容, 如果你会写autojs的调用方式但不会shell,也没关系. autojs提供了一个转换的方法,
app.intentToShell(options);
这里的options是app.startActivity(//填写在这里的数据); 是一个对象.
var shell = app.intetnToShell({
packageName : "com.ss.android.ugc.aweme",
className : "com.ss.android.ugc.aweme.profile.ui.ProfileEditActivity",
extras : {
need_right_to_left_enter_anim : true,
enter_from : "personal_homepage",
enter_method : "click_button",
}
});
log("am start " + shell);
执行一下上面的代码,就会得到一个shell命令,即可在按键中执行了.下面再简单讲一下 am start 的常用参数
am start
-a [ACTION] 即为intent的ACTION
-d [DATA] intent的data
-t [MIME_TYPE] 文件的mime类型
-c [CATEGORY]
-n [className]
-e [EXTRAS] 后面跟 key 和 value 如果你不知道类型就直接使用-e,如果清楚数据类型
还是使用下面的参数.
--es 字符串类型的extras
--ez 布尔型的extras
--ei 整型的extras
--el 长整型的extras
--ef 浮点型的extras
上面这几种--ex的参数 后面都是跟一对 key value
这几种都是常用的参数.基本上90%的意图都只用这几个参数了.
-
Android
+关注
关注
12文章
3923浏览量
127116 -
参数
+关注
关注
11文章
1773浏览量
32075 -
文档
+关注
关注
0文章
45浏览量
11987
发布评论请先 登录
相关推荐
评论