ターミナル経由で特定のアプリのアクションを実行する方法は?


13

リモートコンピューターからSSH経由でAndroidアプリを実行する必要がありますが、コマンドラインの専門家ではないため、アプリの特定のアクションを実行する方法を知りたいと思います。(単に開くだけではありません)これは、アプリの可能なアクションの正確なシンタックスをどのように知るかを意味しますか?

例:電話からコンピューターからオーディオ録音アプリを起動し、リモートから録音を開始したい。出来ますか?

ありがとう、アンドレア

回答:


12

これを使って:

am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

アプリを制御するには、コマンドの<package_name><full_class_name>に正しい値を入力する必要があります。たとえばcom.google.gmail/com.google.gmail.check_mail、コマンドの最後の部分として(仮名)を使用できます。

アプリのパッケージ名を取得するのは簡単ですが、アクションのクラス名を取得するのは簡単ではありません。2つの問題があります。

  1. 多くのアプリ開発者は、クラス情報を非公開にします。

  2. すべての開発者がスマートモジュラープログラミングを行うわけではありません。意図によってトリガーされる可能性のある複数のクラスにアプリを分割するのは良い習慣ですが、すべての開発者が賢いわけではありません。

最初の問題の解決策:apktoolを使用してアプリを逆コンパイルし、すべての情報を確認します。他の方法もありますが、これは常に機能する方法です(アプリがSDKではなくNDKに基づいている場合を除く)。

2番目の問題の解決策:なし。

心配する必要はありません。ほとんどの人気アプリはプログラミングのベストプラクティスに従っており、Public APIクラス情報を取得するために使用できます。


パラメーター<package_name><full_class_name>、およびそれらの入手方法に関する説明を追加できますか?私には、少なくとも後者は明確ではありません。
イジー

@Izzy説明を追加...答えをもう一度確認してください。
Android Quesito

ありがとう!私からの+1:Dコンパクトでわかりやすい。気にしない場合は、いくつかのリンクを自由に追加しますapktools(開発者以外はSDKの一部であると考えて迷子になるかもしれません;)
Izzy

@Izzyここに私の問題がありますcom.android.settings/.Settings$StorageSettingsActivity。この設定のアクティビティアプリを起動できません。自分で試してみてください。実際、$記号の後の文字列は何ですか?設定アクティビティのサブクラスのようなものですか?
Gokul NC

@GokulNC全体を引用する必要がある場合(単一引用符)、または$StorageSettingsActivity変数として表示され、空の文字列に「展開」される場合があります(その名前で定義された変数がない場合)。
イジー

9

Sachin Shekharが言ったように、次のコマンドを使用する必要があります。

am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

具体例をご覧ください。

  • Androidデバイスまたはマーケットプレイスからapkファイルを取得する
  • このコマンドの実行:

aapt dump xmltree com.android.settings*.apk AndroidManifest.xml

「テザリング」メニューを開始したいので、出力でアクティビティを検索します。

(...)
   E: activity (line=190)
    A: android:name(0x01010003)=".TetherSettings" (Raw: ".TetherSettings")
(...)

最終的なコマンドは次のとおりです。

am start -a android.intent.action.MAIN -n com.android.settings/.TetherSettings

aaptコマンドは、の一部であり、AndroidのSDK


1
:Dそれをテストし、それは魅力として機能します。これは、実際の©©™の実例です。
ジルケノー

2
幸運とコンピューターサイエンスは正反対です。それはだ相対パス。
ジルケノー

2
いいえ、com.android.settingsPATH を省略できます。だから私はそれが相対的だと言ったのです。好きなアプリでテストしてください。
ジルケノット

2
他のアプリでは動作しないとは言わなかった。クラス名の前のドットは魔法を使います。しかし、これは奨励されるべきではありません。
Android Quesito

1
あなたはそれは運だと言ったが、これは違う。アサーションのソースはありますか?なぜこれが奨励されるべきではないのですか?
ジルケノー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.