0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

xp框架下的Intent记录

汽车电子技术 来源:安卓脚本 作者:稻草人 2023-03-03 13:55 次阅读

虽说这个话题发布在公众号上有些晚了, 很久之前我在其他平台上发过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
收藏 人收藏

    评论

    相关推荐

    ESP32-S3-KROVO2如何在ADF框架下实现wifi连接?

    本人现在想要做一个项目,能够实现wifi连接并在LCD上显示图片,目前能够分别使用idf框架实现wifi连接,和adf框架下的图片LCD显示,但是找不到方法把两个例程结合起来,初步想法是在idf框架下
    发表于 06-28 08:02

    求助,x86框架下进行VxWorks5.5开发,支持的低功耗CPU有哪些?

    如题。求助,x86框架下进行VxWorks5.5开发,支持的低功耗CPU有哪些?
    发表于 08-29 16:28

    在MCFW框架下,有OSD(SWOD)的图像叠加的算法在DSP端执行,请问这样的算法是不是应该符合Ti的XDM标准?

    在MCFW框架下,有OSD(SWOD)的图像叠加的算法在DSP端执行,请问一下,这样的算法是不是应该符合Ti的XDM标准,在自己开发的时候怎样确定自己的算法是不是符合Ti的这个标准呢?在Ti
    发表于 05-25 04:00

    Android的Intent该怎么使用?

    Intent 是 Android 应用程序组件之间启动,通信的一个对象。举个例子,Android 中的页面 Activity 之间互相跳转,就需要通过 Intent 对象来完成。不止 Activity,Android 中的其他组件,也都是通过
    发表于 09-12 09:05

    如何打造打造自己的通信框架?

    工作以来,一直在别人搭好的框架下做业务开发,翻过框架源码大致明白实现原理,但是仅仅做到这样,很难去理解作者设计时的思量,也容易忽视一些技术细节,因此萌生了开发一套自己的框架的想法,这不是重复造轮子
    发表于 11-05 06:46

    power_supply框架包括哪些功能?

    power_supply框架包括哪些功能?power_supply框架工作流程是怎样的?如何在power_supply框架下去添加充电IC驱动?
    发表于 07-28 06:02

    mtk平台hal层如何获取alps框架下光距感数据和光距感的使能开关对应的hal层接口?

    mtk平台hal层如何获取alps框架下光距感数据和光距感的使能开关对应的hal层接口?
    发表于 02-07 07:02

    在RTOS框架下使用ROSSerial

    STM32以极优的性价比提供了可以运行RTOS的硬件平台,使用RTOS已经不是一件奢侈的事情了,如果能在RTOS框架下使用ROSSerial应该是编写嵌入式控制程序的福音,故做此尝试。为了便于实施...
    发表于 03-02 06:47

    HarmonyOS使用Intent控件的教程

    基本概念Intent是对象之间传递信息的载体。例如,当一个AbilitySlice启动另一个AbilitySlice时,或者一个AbilitySlice需要导航到另一个AbilitySlice
    发表于 05-20 14:25

    XDS技术框架下区域医疗信息共享的设计与实现_尚文刚

    XDS技术框架下区域医疗信息共享的设计与实现_尚文刚
    发表于 03-19 11:28 0次下载

    MapReduce框架下的Skyline结果优化算法_马学森

    MapReduce框架下的Skyline结果优化算法_马学森
    发表于 03-19 11:41 0次下载

    如何实现机智云开源框架下的换肤操作?

    前言 本文主要是讲述用一个“取巧”的方法实现机智云开源框架下的换肤操作。此外,还会推荐几种其他关于智能产品APP应用的开发。 开发背景 我最近在做基于机智云物联网的智能窗户设计,硬件部分经过前面几天
    的头像 发表于 04-01 14:28 1519次阅读
    如何实现机智云开源<b class='flag-5'>框架下</b>的换肤操作?

    PicoSem:Arduino框架下的Raspberry多任务

    电子发烧友网站提供《PicoSem:Arduino框架下的Raspberry多任务.zip》资料免费下载
    发表于 06-13 09:21 1次下载
    PicoSem:Arduino<b class='flag-5'>框架下</b>的Raspberry多任务

    RT-Thread框架下的SMP支持

    使其支持 RT-Thread 框架下的 SMP,最近就一直在研究 SMP,并在 Raspberry-Pico 上做了一些实验。
    的头像 发表于 10-11 10:34 1054次阅读
    RT-Thread<b class='flag-5'>框架下</b>的SMP支持

    HarmonyOS 学习路之开发篇 ——Intent

    Intent 基本概念 Intent 是对象之间传递信息的载体。例如,当一个 Ability 需要启动另一个 Ability 时,或者一个 AbilitySlice 需要导航到另一个
    的头像 发表于 02-20 14:52 267次阅读
    HarmonyOS 学习路之开发篇 ——<b class='flag-5'>Intent</b>