2017-08-31 43 views
0

當反應用程序,我發現最近,似乎一些應用程序清單並沒有把指定的活動我想要的視圖。例如,如果com.example.app是我想要的看法和我運行下面的命令:查找所有可用的活動/片段爲一個應用程序,不是你的

dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' 

產生的輸出將是這樣的:

mCurrentFocus=Window{9280f2a u0 com.example.app/com.example.app.MainSubMenu} 
mFocusedApp=AppWindowToken{da37759 token=Token{9d56fa0 ActivityRecord{5c490a3 u0 com.example.app/.MainSubMenu t98}}} 

這是好的,但是當我所在的屏幕顯然是一個子活動/子視圖/片段,dumpsys和logcat將向我顯示此視圖的完整路徑。總之,我想找到片段/視圖的名稱並直接啓動它。這個語法看起來很有希望實現一個片段視圖推出(可能有些變化):

am start -n com.example.app/.MainSubMenu -e :android:show_fragment com.example.app.somefragmentview 

但我不確定如何找到所有片段名字的應用程序的每個活動。

+0

片段在清單中列出,以及。但瞭解片段名稱對你無能爲力。大多數情況下,碎片需要'am'命令不支持的類型才能正確顯示。 –

+0

謝謝亞歷克斯P.我發現我其實是問這裏提出同樣的問題:https://stackoverflow.com/questions/18522733/how-to-get-extras-of-currently-running-activity-through-adb – itsthegrimace

+0

更具體地,將logcat的輸出是這樣的:I/ActivityManager(530):START U0 {CMP = com.example.app/.MainSubMenu(具有額外)}從上顯示0 UID 10083我需要的東西轉儲'有額外的信息。 – itsthegrimace

回答

0

我最終使用AutoInput結合MacroDroid來根據文本選擇應用程序主(啓動)屏幕的特定元素。這使我無需依賴觸摸事件座標即可進入應用程序的任何屏幕,因爲這些應用程序的開發人員通常會使用後續更新來切換菜單項位置。

下面是詳細的自動輸入過程(我想象可以與塔斯克以及被集成):

  1. 安裝上述兩種應用程序。
  2. 當選擇MacroDroid的行動,選擇「語言環境/塔斯克插件」選項。這將列出AutoInput的選項,以及針對您下載的不同插件的其他選項,我想。
  3. 從列表中選擇「自動輸入操作」選項。
  4. 從下一個屏幕選擇「動作」,然後點擊「。
  5. 爲「字段類型」選擇「文本」,或其他任何一條信息,你知道的菜單/按鈕/元素,你通常會選擇去你想要的畫面。我們正在討論存在於應用主(啓動)屏幕上的菜單/按鈕/元素。
  6. 填寫「現場文字」與菜單/按鍵/元素的文本。
  7. 在右上角打對號,當你完成後,它會返回到MacroDroid。

的幾個注意事項:

  • 菜單/按鍵/元素必須是主(啓動)屏幕上顯示的自動輸入識別和選擇它。我試圖打開的初始菜單項只能通過首先滾動到達。爲了解決這個問題,我告訴MacroDroid使用'輸入刷卡'命令首先運行一個腳本,使菜單項可見。
  • 如果你的目標菜單/按鍵/元素不是主(啓動)屏幕上,你將有,直到你達到你想要的菜單/按鈕/元/屏幕跟進您最初的自動輸入動作,隨後自動輸入操作。我想要的屏幕從主(啓動)屏幕上移除兩次。

  • 也許不言而喻,但我將每個AutoInput Action與適當的暫停(在MacroDroid中,Actions - >'Wait Before Next Action')分開以選擇每個菜單/按鈕/元素,同時考慮屏幕加載時間。

這一切都有點鈍,我意識到,在不脫離logcat的知道如何提取(有臨時演員)的信息,這是沒有強迫我依靠觸摸座標唯一可用的解決方案事件。希望這可以提供一個可行的選擇,直到有人發現/提供一種方式從活動中提取額外的原始數據。

相關問題