2017-08-31 15 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

Alex Pさん、ありがとうございました。実際に私がここで提示したのと同じ質問をしていることを発見しました:https://stackoverflow.com/questions/18522733/how-to-get-extras-of-currently-running-activity-through-adb – itsthegrimace

+0

具体的には、logcatは次のように出力します:I/ActivityManager(530):ディスプレイ0にuid 10083からSTART u0 {cmp = com.example.app/.MainSubMenu(extras)}}エクストラの情報を持っています。 – itsthegrimace

答えて

0

私はをMacroDroidと組み合わせて使用​​し、テキストに基づいてアプリのメイン(起動)画面の特定の要素を選択しました。これは、タッチイベントの座標に頼ることなく、アプリケーションの任意の画面に移動できます。なぜなら、これらのアプリの開発者は、通常、後続の更新でメニュー項目の場所を切り替えるからです。ここ

は、(Iも同様タスカーと統合することができると想像)詳細オートインプットプロセスである:

  1. 両方前述のアプリケーションをインストールします。
  2. MacroDroidのアクションを選択するときは、[ロケール/タスクプラグイン]オプションを選択します。これはAutoInputのオプションと、あなたがダウンロードした別のプラグインのための他のオプションを表示します。
  3. リストから[自動入力アクション]オプションを選択します。
  4. 次の画面で「アクション」を選択し、「クリック」します。
  5. 'フィールドタイプ'の場合は、[テキスト]、または通常は画面にアクセスするために選択するメニュー/ボタン/要素について知っている情報を選択します。我々はあなたのアプリのメイン(起動)画面に存在するメニュー/ボタン/要素について話しています。
  6. メニュー/ボタン/要素のテキストを「フィールドテキスト」に入力します。
  7. 終了したら右上のチェックマークを押すと、MacroDroidに戻ります。

数注:オートインプットを特定し、それを選択する

  • メニュー/ボタン/要素は、主(起動)画面上で見えなければなりません。開こうとしていた最初のメニュー項目は、最初にスクロールすることでしか到達できませんでした。この問題を解決するために、私はMacroDroidに、まずメニュー項目を表示させるために '入力スワイプ'コマンドでスクリプトを実行するように指示しました。
  • 目的のメニュー/ボタン/要素がメイン(起動)画面にない場合は、必要なメニュー/ボタン/要素/画面に到達するまで、最初の自動入力アクションと後続の自動入力アクションをフォローアップする必要があります。私が望んでいた画面は、メイン(起動)画面から2回削除されました。

  • 私はそれぞれのAutoInput Actionを適切な一時停止(MacroDroidでは、Actions - > 'Wait Before Next Action')で区切って、画面の読み込み時間を考慮しながら各メニュー/ボタン/要素を選択しました。

これは、すべてのビット鈍角である、私は実現が、Logcatから(エキストラを持っている)の情報を抽出する方法を知らなくても、これはタッチの座標に依存する私を強制しなかった唯一の解決策でしたイベント。うまくいけば、誰かが生の余分なデータをアクティビティから探す方法を見つける/提供するまで、これは実行可能な選択肢を提供することを望みます。

関連する問題