0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

xp框架下的Intent記錄

汽車電子技術(shù) ? 來源:安卓腳本 ? 作者:稻草人 ? 2023-03-03 13:55 ? 次閱讀

雖說這個話題發(fā)布在公眾號上有些晚了, 很久之前我在其他平臺上發(fā)過intent跳轉(zhuǎn)的一些相關(guān)方法, 時至今日也不是完全不能用, 常規(guī)的APP還是免不了使用intent來跳轉(zhuǎn), 對于經(jīng)常使用按鍵精靈寫腳本的同學(xué)應(yīng)該會很有幫助.

關(guān)于intent(意圖)的理論上的東西. 我就不說了, 這個可以百度查一下Android的相關(guān)文檔.里面講的很詳細(xì)了,今天只講利用intent記錄這個模塊來抓到intent的相關(guān)參數(shù),那對于這些參數(shù)要怎么處理才能轉(zhuǎn)換成autojs或者按鍵上可使用的代碼.

先來看一個簡單的例子, 抖音的個人資料界面跳轉(zhuǎn),在intent記錄里面攔截到的信息如下圖

圖片圖片

看這兩張圖中的各個參數(shù).

**from: **跳轉(zhuǎn)的來源,一般是指上一個界面,不重要

**to: **跳轉(zhuǎn)的目標(biāo)界面, 也不重要

**action: **跳轉(zhuǎn)的動作, 一般有 ACTION VIEW 等等, 重要程度一般

**clipData: **剪貼板數(shù)據(jù), 此參數(shù)常用在分享文件的跳轉(zhuǎn)中

**flags: **標(biāo)志,常見的就是FLAG_ACTIVITY_NEW_TASK,不過在這里一般使用0x00000000類型的16進制來表示,具體的對應(yīng)關(guān)系有興趣的可以查查相關(guān)資料 重要程度一般

**dataString: **此參數(shù)一般會獲得scheme的url連接, 不太重要, 如果該參數(shù)不為null的話, 還是得重點看看

**type: **類型, 幾乎無用

**componentName: **跳轉(zhuǎn)界面的className 非常重要

**scheme: **獲取到scheme的信息. 不過幾乎沒見過他為非null的時候,即便是一個scheme跳轉(zhuǎn), 不重要

**package: **不重要

**requestCode: **不重要

**categories: **類型,這個在安卓手機中一般都是DEFAULT 默認(rèn)的類型, 我把常用的類型.都放在下面的一個圖里面,有興趣的可以研究看看.

**intentExtras: 這個參數(shù)非常重要, **他攜帶的是intent跳轉(zhuǎn)的關(guān)鍵參數(shù).如果有的話, 如果跳轉(zhuǎn)沒有攜帶intent參數(shù),那這里就會是空的沒數(shù)據(jù).

圖片

那么以示例中的這個intent跳轉(zhuǎn)為例來寫一個autojs的跳轉(zhuǎn)

//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中的內(nèi)容, 它里面的參數(shù)對應(yīng)的是圖片中intentExtras的key和value, 但是還有class的參數(shù), 這里的class很重要,他指定了value的數(shù)據(jù)類型, class中我們常用的只有少數(shù)的幾個:

java.lang.Interger
java.lang.Lang
java.lang.Float
java.lang.String
java.lang.Boolean

前三種都可以當(dāng)成數(shù)字即可, 如果class是String,就需要把value的內(nèi)容放在"" 引號內(nèi),當(dāng)做一個字符串, 如果是Boolean值, 那value就只有true或者false.沒有特殊的情況 可跳轉(zhuǎn)的activity中,autojs僅支持這幾種數(shù)據(jù)類型的參數(shù).其他情況就是app的自定義類型. 或者bundle數(shù)據(jù)了,bundle的數(shù)據(jù)需要使用安卓的方法跳轉(zhuǎn),autojs和shell就無法跳轉(zhuǎn)了.對于非常規(guī)數(shù)據(jù)類型, 例如下面這種的數(shù)據(jù):

圖片

他的class顯然不是常規(guī)的類型, 這種就是抖音內(nèi)部的自定義類型的數(shù)據(jù).

那么在shell環(huán)境中要怎么利用這些數(shù)據(jù)呢. 下面還是以示例圖片中的數(shù)據(jù)來寫成shell的調(diào)用方式:

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命令會有點長, 還是拖動一下看看里面的內(nèi)容, 如果你會寫autojs的調(diào)用方式但不會shell,也沒關(guān)系. autojs提供了一個轉(zhuǎn)換的方法,

app.intentToShell(options);

這里的options是app.startActivity(//填寫在這里的數(shù)據(jù)); 是一個對象.

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);

執(zhí)行一下上面的代碼,就會得到一個shell命令,即可在按鍵中執(zhí)行了.下面再簡單講一下 am start 的常用參數(shù)

am start 
-a [ACTION] 即為intent的ACTION
-d [DATA] intent的data
-t [MIME_TYPE] 文件的mime類型
-c [CATEGORY] 
-n [className]
-e [EXTRAS] 后面跟 key 和 value 如果你不知道類型就直接使用-e,如果清楚數(shù)據(jù)類型
            還是使用下面的參數(shù).
--es 字符串類型的extras
--ez 布爾型的extras
--ei 整型的extras
--el 長整型的extras
--ef 浮點型的extras
上面這幾種--ex的參數(shù) 后面都是跟一對 key value
這幾種都是常用的參數(shù).基本上90%的意圖都只用這幾個參數(shù)了.
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3936

    瀏覽量

    127403
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1834

    瀏覽量

    32221
  • 文檔
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    11993
收藏 人收藏

    評論

    相關(guān)推薦

    ESP32-S3-KROVO2如何在ADF框架下實現(xiàn)wifi連接?

    本人現(xiàn)在想要做一個項目,能夠?qū)崿F(xiàn)wifi連接并在LCD上顯示圖片,目前能夠分別使用idf框架實現(xiàn)wifi連接,和adf框架下的圖片LCD顯示,但是找不到方法把兩個例程結(jié)合起來,初步想法是在idf框架下
    發(fā)表于 06-28 08:02

    求助,x86框架下進行VxWorks5.5開發(fā),支持的低功耗CPU有哪些?

    如題。求助,x86框架下進行VxWorks5.5開發(fā),支持的低功耗CPU有哪些?
    發(fā)表于 08-29 16:28

    在MCFW框架下,有OSD(SWOD)的圖像疊加的算法在DSP端執(zhí)行,請問這樣的算法是不是應(yīng)該符合Ti的XDM標(biāo)準(zhǔn)?

    在MCFW框架下,有OSD(SWOD)的圖像疊加的算法在DSP端執(zhí)行,請問一下,這樣的算法是不是應(yīng)該符合Ti的XDM標(biāo)準(zhǔn),在自己開發(fā)的時候怎樣確定自己的算法是不是符合Ti的這個標(biāo)準(zhǔn)呢?在Ti
    發(fā)表于 05-25 04:00

    Android的Intent該怎么使用?

    Intent 是 Android 應(yīng)用程序組件之間啟動,通信的一個對象。舉個例子,Android 中的頁面 Activity 之間互相跳轉(zhuǎn),就需要通過 Intent 對象來完成。不止 Activity,Android 中的其他組件,也都是通過
    發(fā)表于 09-12 09:05

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

    工作以來,一直在別人搭好的框架下做業(yè)務(wù)開發(fā),翻過框架源碼大致明白實現(xiàn)原理,但是僅僅做到這樣,很難去理解作者設(shè)計時的思量,也容易忽視一些技術(shù)細(xì)節(jié),因此萌生了開發(fā)一套自己的框架的想法,這不是重復(fù)造輪子
    發(fā)表于 11-05 06:46

    power_supply框架包括哪些功能?

    power_supply框架包括哪些功能?power_supply框架工作流程是怎樣的?如何在power_supply框架下去添加充電IC驅(qū)動?
    發(fā)表于 07-28 06:02

    mtk平臺hal層如何獲取alps框架下光距感數(shù)據(jù)和光距感的使能開關(guān)對應(yīng)的hal層接口?

    mtk平臺hal層如何獲取alps框架下光距感數(shù)據(jù)和光距感的使能開關(guān)對應(yīng)的hal層接口?
    發(fā)表于 02-07 07:02

    在RTOS框架下使用ROSSerial

    STM32以極優(yōu)的性價比提供了可以運行RTOS的硬件平臺,使用RTOS已經(jīng)不是一件奢侈的事情了,如果能在RTOS框架下使用ROSSerial應(yīng)該是編寫嵌入式控制程序的福音,故做此嘗試。為了便于實施...
    發(fā)表于 03-02 06:47

    HarmonyOS使用Intent控件的教程

    基本概念Intent是對象之間傳遞信息的載體。例如,當(dāng)一個AbilitySlice啟動另一個AbilitySlice時,或者一個AbilitySlice需要導(dǎo)航到另一個AbilitySlice
    發(fā)表于 05-20 14:25

    XDS技術(shù)框架下區(qū)域醫(yī)療信息共享的設(shè)計與實現(xiàn)_尚文剛

    XDS技術(shù)框架下區(qū)域醫(yī)療信息共享的設(shè)計與實現(xiàn)_尚文剛
    發(fā)表于 03-19 11:28 ?0次下載

    MapReduce框架下的Skyline結(jié)果優(yōu)化算法_馬學(xué)森

    MapReduce框架下的Skyline結(jié)果優(yōu)化算法_馬學(xué)森
    發(fā)表于 03-19 11:41 ?0次下載

    如何實現(xiàn)機智云開源框架下的換膚操作?

    前言 本文主要是講述用一個“取巧”的方法實現(xiàn)機智云開源框架下的換膚操作。此外,還會推薦幾種其他關(guān)于智能產(chǎn)品APP應(yīng)用的開發(fā)。 開發(fā)背景 我最近在做基于機智云物聯(lián)網(wǎng)的智能窗戶設(shè)計,硬件部分經(jīng)過前面幾天
    的頭像 發(fā)表于 04-01 14:28 ?1556次閱讀
    如何實現(xiàn)機智云開源<b class='flag-5'>框架下</b>的換膚操作?

    PicoSem:Arduino框架下的Raspberry多任務(wù)

    電子發(fā)燒友網(wǎng)站提供《PicoSem:Arduino框架下的Raspberry多任務(wù).zip》資料免費下載
    發(fā)表于 06-13 09:21 ?1次下載
    PicoSem:Arduino<b class='flag-5'>框架下</b>的Raspberry多任務(wù)

    RT-Thread框架下的SMP支持

    使其支持 RT-Thread 框架下的 SMP,最近就一直在研究 SMP,并在 Raspberry-Pico 上做了一些實驗。
    的頭像 發(fā)表于 10-11 10:34 ?1135次閱讀
    RT-Thread<b class='flag-5'>框架下</b>的SMP支持

    HarmonyOS 學(xué)習(xí)路之開發(fā)篇 ——Intent

    Intent 基本概念 Intent 是對象之間傳遞信息的載體。例如,當(dāng)一個 Ability 需要啟動另一個 Ability 時,或者一個 AbilitySlice 需要導(dǎo)航到另一個
    的頭像 發(fā)表于 02-20 14:52 ?282次閱讀
    HarmonyOS 學(xué)習(xí)路之開發(fā)篇 ——<b class='flag-5'>Intent</b>