1

テストしたアプリ内からインストルメンテーションインターフェイスを使用してアプリをインストルメントしたいと思います。すべてのアクティビティを拡張するカスタムアクティビティがあります。その中で、アプリに関する情報を取得するためにインストルメンテーションを開始したいと思います。

public class BxActivity extends Activity {
@Override
protected void onResume() {
    super.onResume();
    ...
    boolean instru = startInstrumentation(new ComponentName(BxActivity.this, InstrumentationRobot.class), null, null);

InstrumentationRobot.classのインストルメンテーションコードを使用してアプリを再起動する必要があるImho。同じAndroidプロジェクトとパッケージに含まれています。

public class InstrumentationRobot extends Instrumentation {
@Override
public void onCreate(Bundle arguments) {
    super.onCreate(arguments);
    Log.v("InstrRobot", "Hello from Robot");
    start();
}

このようにマニフェストにインストルメンテーションを追加しました:

 <instrumentation
        android:name="InstrumentationRobot" (class in the same pkg)
        android:targetPackage="my.package.name" />
</application>

これは私のインストルメンテーションの正しいマニフェストコードなので、私の小さなロボットは私に「こんにちは」を出力します。

ありがとう、ソレン

4

1 に答える 1

3

解決策を見つけて、正しいコードで質問を更新しました。間違いはマニフェストファイルにありました。

削除しました

<uses-library android:name="android.test.runner" />

インストルメンテーションクラスがアプリ自体と同じパッケージおよび.apkファイルにある場合、タグとインストルメンテーションクラス名はドットで始めてはなりません。

インストルメンテーションタグは、マニフェストの直接の子でもある必要があります。

于 2012-12-11T11:11:19.313 に答える