Android中的错误 - 无法找到以下内容的检测信息:ComponentInfo

时间:2011-09-30 10:12:49

标签: android instrumentation

例如,我有一个应用程序将调用联系人,并且必须选择其中一个联系人。 但它并没有完全符合我的要求。它显示错误Unable to find instrumentation info for: ComponentInfo{com.sample/com.sample.ContactsSelectInstrumentation}

以下是我的代码.. 这是我的Activity类

 @Override  
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.go);
button.setOnClickListener(mGoListener);
}
private OnClickListener mGoListener = new OnClickListener() {
public void onClick(View v) {
  startInstrumentation(new ComponentName(Test.this,
      ContactsFilterInstrumentation.class), null, null);
}
};

这是我的Intrumentation类。

class ContactsFilterInstrumentation extends Instrumentation {  
@Override    
  public void onCreate(Bundle arguments) {

super.onCreate(arguments);
start(); 

} 

 @Override  

public void onStart() {

super.onStart();

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName(getTargetContext(), "com.android.phone.Dialer");
Activity activity = startActivitySync(intent);

Log.i("ContactsFilterInstrumentation", "Started: " + activity);
sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_M));
sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_M));
sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A));
sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_A));
waitForIdleSync();
Log.i("ContactsFilterInstrumentation", "Done!");
finish(Activity.RESULT_OK, null);
}
}

任何可以帮助我的人。 在此先感谢。

3 个答案:

答案 0 :(得分:1)

通过AndroidManifest.xml的<instrumentation>标记向系统描述了Instrumentation实现。

答案 1 :(得分:1)

目录结构应该是:

src
  package.x.y.z.test
      MainTest.java
      CustomInstrumentationRunner.java

然后在AndroidManifest.xml中设置

<manifest package="package.x.y.z" ...

<instrumentation
        android:name="package.x.y.z.test.CustomInstrumentationRunner"

使用命令行调用上述包:

adb shell am instrumentation -w package.x.y.z/package.x.y.z.test.CustomInstrumentationRunner

答案 2 :(得分:-1)

我通过执行以下操作解决了这个问题:

  1. 在清单中使用上层包名称:

  2. 将测试包降级一级: Java文件1:

    package com.xxx.yyy.zzz.ptest.onlylogin;

  3. Java文件2:

    package com.xxx.yyy.zzz.ptest.register;
    
    1. 指定命令行,如下所示:

      ...