雖說這個話題發(fā)布在公眾號上有些晚了, 很久之前我在其他平臺上發(fā)過intent跳轉的一些相關方法, 時至今日也不是完全不能用, 常規(guī)的APP還是免不了使用intent來跳轉, 對于經(jīng)常使用按鍵精靈寫腳本的同學應該會很有幫助.
關于intent(意圖)的理論上的東西. 我就不說了, 這個可以百度查一下Android的相關文檔.里面講的很詳細了,今天只講利用intent記錄這個模塊來抓到intent的相關參數(shù),那對于這些參數(shù)要怎么處理才能轉換成autojs或者按鍵上可使用的代碼.
先來看一個簡單的例子, 抖音的個人資料界面跳轉,在intent記錄里面攔截到的信息如下圖
看這兩張圖中的各個參數(shù).
**from: **跳轉的來源,一般是指上一個界面,不重要
**to: **跳轉的目標界面, 也不重要
**action: **跳轉的動作, 一般有 ACTION VIEW 等等, 重要程度一般
**clipData: **剪貼板數(shù)據(jù), 此參數(shù)常用在分享文件的跳轉中
**flags: **標志,常見的就是FLAG_ACTIVITY_NEW_TASK,不過在這里一般使用0x00000000類型的16進制來表示,具體的對應關系有興趣的可以查查相關資料 重要程度一般
**dataString: **此參數(shù)一般會獲得scheme的url連接, 不太重要, 如果該參數(shù)不為null的話, 還是得重點看看
**type: **類型, 幾乎無用
**componentName: **跳轉界面的className 非常重要
**scheme: **獲取到scheme的信息. 不過幾乎沒見過他為非null的時候,即便是一個scheme跳轉, 不重要
**package: **不重要
**requestCode: **不重要
**categories: **類型,這個在安卓手機中一般都是DEFAULT 默認的類型, 我把常用的類型.都放在下面的一個圖里面,有興趣的可以研究看看.
**intentExtras: 這個參數(shù)非常重要, **他攜帶的是intent跳轉的關鍵參數(shù).如果有的話, 如果跳轉沒有攜帶intent參數(shù),那這里就會是空的沒數(shù)據(jù).
那么以示例中的這個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中的內(nèi)容, 它里面的參數(shù)對應的是圖片中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
前三種都可以當成數(shù)字即可, 如果class是String,就需要把value的內(nèi)容放在"" 引號內(nèi),當做一個字符串, 如果是Boolean值, 那value就只有true或者false.沒有特殊的情況 可跳轉的activity中,autojs僅支持這幾種數(shù)據(jù)類型的參數(shù).其他情況就是app的自定義類型. 或者bundle數(shù)據(jù)了,bundle的數(shù)據(jù)需要使用安卓的方法跳轉,autojs和shell就無法跳轉了.對于非常規(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,也沒關系. autojs提供了一個轉換的方法,
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ù)了.
-
Android
+關注
關注
12文章
3964瀏覽量
129570 -
參數(shù)
+關注
關注
11文章
1867瀏覽量
32867 -
文檔
+關注
關注
0文章
48瀏覽量
12155
發(fā)布評論請先 登錄
ESP32-S3-KROVO2如何在ADF框架下實現(xiàn)wifi連接?
求助,x86框架下進行VxWorks5.5開發(fā),支持的低功耗CPU有哪些?
在MCFW框架下,有OSD(SWOD)的圖像疊加的算法在DSP端執(zhí)行,請問這樣的算法是不是應該符合Ti的XDM標準?
Android的Intent該怎么使用?
如何打造打造自己的通信框架?
power_supply框架包括哪些功能?
mtk平臺hal層如何獲取alps框架下光距感數(shù)據(jù)和光距感的使能開關對應的hal層接口?
在RTOS框架下使用ROSSerial
HarmonyOS使用Intent控件的教程
XDS技術框架下區(qū)域醫(yī)療信息共享的設計與實現(xiàn)_尚文剛
如何實現(xiàn)機智云開源框架下的換膚操作?

PicoSem:Arduino框架下的Raspberry多任務

HarmonyOS 學習路之開發(fā)篇 ——Intent

評論