27

私は Android で開発しています。電話アプリケーションをテストするためにインストルメンテーションを使用しています。インストルメンテーションは、アプリケーションをテストするための Android env です。

そのために、テストケースの名前で am コマンドを使用します。adb を実行し、adb シェルに入り、シェルに am コマンドを記述します。

このamコマンドと一緒にパラメータを渡したい。つまり、am コマンドによって起動されたテストにパラメーターを渡したいということです。

出来ますか ???助けてください ?

4

5 に答える 5

51

データ URI、MIME タイプ、さらには「エクストラ」をam コマンドに渡すことができます。

午前 [開始|楽器]

am start [-a <action>] [-d ]
[-t <mime_type>] [-c <category> [-c <category>] ...]
[-e <extra_key> <extra_value>
[ -e <extra_key> <extra_value> ...]
[-n <コンポーネント>] [-D] [<uri>]

am instrument [-e <arg_name> <arg_value>] [-p <prof_file>] [-w] <component>

それらを「エクストラ」として渡し、渡されたエクストラを取得できます。

次のように渡します。

am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT 
  -e foo bar -e bert ernie -n my.package.component.blah

次に、コードで:

Bundle extras = this.getIntent ( ).getExtras ( );

if ( extras != null ) {
  if ( extras.containsKey ( "foo" ) ) {
    Log.d ( "FOO", extras.getString ( "foo" ) );
  } else {
    Log.d ( "FOO", "no foo here" );
  }
  
  if ( extras.containsKey ( "bert" ) ) {
    Log.d ( "BERT", extras.getString ( "bert" ) );
  } else {
    Log.d ( "BERT", "Bert is all alone" );
  }
} else {
  this.setTitle ( "no extras found" );
}
于 2010-07-12T13:41:35.653 に答える
15

パラメータを渡します: (例: -e peerID SCH-I545)

adb -s 0915f98870e60701 shell am instrument -w -e class      /
com.example.android.testing.uiautomator.BasicSample.sendInvite /
-e peerID SCH-I545 /
com.example.android.testing.uiautomator.BasicSample.test/android.sup /
port.test.runner.AndroidJUnitRunner

テストクラスで:

{
    Bundle extras = InstrumentationRegistry.getArguments();
    String peerID = null;

    if ( extras != null ) {
        if ( extras.containsKey ( "peerID" ) ) {
            peerID = extras.getString("peerID");
            System.out.println("PeerID: " + peerID);
        } else {
            System.out.println("No PeerID in extras");
        }
    } else {
        System.out.println("No extras");
    }
}
于 2016-01-11T16:44:47.683 に答える
0

すでに Android sdk で作業しているため、システム上の sdk の場所がわかっている場合 - 端末 (コマンド プロンプト) で sdk の場所に移動 -> adb shell と入力 -> am help と入力

http://whenpridefucks.blogspot.in/2011/12/android-send-broadcast-intents-via-adb.html

于 2015-03-13T08:28:57.513 に答える
0

正確には次のとおりです。

 ./adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -e user_id 1 -n com.shortcut.activity/com.shortcut.activity.SelectCardActivity

com.shortcut.activity/com.shortcut.activity.SelectCardActivity -> メイン クラスのアクティビティ開始アプリに移動します。アプリのパラメーター user_id = 1 に渡され、クラス SelectCardActivity で次のように取得します。

  Bundle installparams = this.getIntent ( ).getExtras ( );
于 2014-01-20T21:31:54.410 に答える