私はAndroidで開発しています。電話アプリケーションのテストにインストルメンテーションを使用しています。インストルメンテーションはAndroidアプリケーションをテストするためのenvです。
そのために、テストケースの名前を付けたamコマンドを使用します。 adbを実行してからadb Shellに入り、シェルにamコマンドを書き込みます。
このamコマンドと一緒にパラメーターを配信したいと思います。 amコマンドによって起動されたテストにパラメーターを提供したいということです。
出来ますか ???助けてください ?
amコマンド にデータURI、MIMEタイプ、さらに「エクストラ」を渡すことができます。
am [開始|楽器]
am start [-a <action>] [-d ]
[-t <mime_type>] [-c <カテゴリ> [-c <カテゴリ>] ...]
[-e <extra_key> <extra_value>
[-e <extra_key> <extra_value> ...]
[-n <コンポーネント>] [-D] [<uri>]am機器[-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" );
}
パラメータを渡す:(例:-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");
}
}
正確には:
./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->メインクラスアクティビティ開始アプリのuir。アプリのパラメーターuser_id = 1に渡され、クラスSelectCardActivityでは次のように取得されます。
Bundle installparams = this.getIntent ( ).getExtras ( );
あなたはすでにAndroid sdkに取り組んでいるので、システム上のsdkの場所がわかっている場合-ターミナルのsdkの場所に移動します(コマンドプロンプト)->タイプadb Shell->タイプam help
例 http://whenpridefucks.blogspot.in/2011/12/Android-send-broadcast-intents-via-adb.html