Невозможно разрешить действия для: Намерения

У меня возникла проблема при запуске Android unit test. Я получил эту ошибку, когда попытался выполнить простой тест.

Здесь журнал:

Blockquote java.lang.RuntimeException: Невозможно разрешить действие для: Intent {act = android.intent.action.MAIN flg = 0x10000000 cmp = com.wsandroid. Деятельности /.SplashActivity} at android.app.Instrumentation.startActivitySync(Instrumentation.java:371) на android.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:120) на android.test.InstrumentationTestCase.launchActivity(InstrumentationTestCase.java:98) at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:87) at com.wsandroid.test.activity.TestEULA.setUp(TestEULA.java:15) в android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) в android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) на android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430) at android.app.Инструментация $InstrumentationThread.run(Instrumentation.java:1447)

Эта ошибка возникает для Android менее 2.2. Он отлично работает для эмулятора Android 2.2. Тем не менее, у Android 2.2 есть ошибка отправки ключа дважды, хотя мы только нажимаем его. Приложение для тестирования работает на платформе Android 2.2.

Цените, если кто-нибудь из вас может мне помочь.

Dzung.

Ответы

Ответ 1

У меня была аналогичная проблема с простым тестовым проектом для приложения, которое было всего лишь заставкой. Я обнаружил, что неправильно реализовал конструктор. Моя первоначальная реализация конструктора была такой...

public SplashScreenTest(){
    super("com.mycomp.myapp.SplashScreen", SplashScreen.class);
}

После того, как я ударил головой о стену, я как-то решил удалить SplashScreen из аргумента pkg super(). Моя успешная реализация теперь такая...

public SplashScreenTest() {
    super("com.mycomp.myapp", SplashScreen.class);
}

Я надеюсь, что это поможет вам или другим решить проблему.

Ответ 2

Это также может быть причиной отсутствия

Убедитесь, что у вас есть соответствующая запись в манифесте.

<activity android:name=".SplashActivity"  ...

Ответ 3

Попробуйте проверить файл Manifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.tablet.test"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">

    <uses-library android:name="android.test.runner" />
    </application>
    <uses-sdk android:minSdkVersion="8" />
    <!-- This line below! -->
    <instrumentation android:targetPackage="com.tablet.tablet"
    android:name="android.test.InstrumentationTestRunner" /> 
</manifest> 

Вам нужно проверить следующую строку:

<instrumentation android:targetPackage="com.tablet.tablet"
android:name="android.test.InstrumentationTestRunner" /> 

Итак, targetPackage должен быть таким же, как в вашем коде.

Ответ 4

У меня была специфическая схожая проблема при использовании AndroidAnnotations lib.

Позже я узнал, что он забыл использовать сгенерированный класс (MyActivity_ вместо MyActivity).

Ответ 5

В моем случае проблема заключалась в том, что TestFragmentActivity, то есть Activity, используемая в нашем тесте

extends ActivityInstrumentationTestCase2<TestFragmentActivity>

должен быть доступен в пакете, определенном в Manifest.xml, как targetPackage:

<instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="de.my.androidhd" />

Моим решением было переместить TestFragmentActivity в тестируемый пакет приложений.

Ответ 6

У меня было два действия с тем же именем в разных пакетах. Проблема заключалась в импорте из неправильного пакета. Я трачу много времени на это, может быть, это сэкономит время.

Ответ 7

Если вы дважды отправляете ключи, уверены ли вы, что теперь не выполняете действия "Вниз" и "Вниз"? У меня была эта проблема при использовании Robotium и сгенерирована для упрощения:

import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.widget.EditText;
import com.jayway.android.robotium.solo.Solo;

        public static void type(Solo robot, EditText edit, String text) {
            int index = 0;
            //Find the index of this control, as Robotium doesn't seem to like R.id
            for (int i = 0; i < robot.getCurrentEditTexts().size(); i++) {
                if (robot.getCurrentEditTexts().get(i).getId() == edit.getId()) {
                    index = i;
                }
            }

            robot.clickOnEditText(index);

            KeyCharacterMap map = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
            KeyEvent[] events = map.getEvents(text.toCharArray());

            for (int event = 0; event < events.length; event++) {
                if (events[event].getAction() == KeyEvent.ACTION_DOWN) {
                    robot.sendKey(events[event].getKeyCode());
                }
            }
        }