WedX - журнал о программировании и компьютерных науках

Android запускает неправильную активность

Android запускает неправильную активность, когда я запускаю приложение.

Манифест.xml:

<activity
    android:name="com.company.app.activities.RS_SplashScreenActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity
    android:name="com.company.app.activities.RS_PreviousLauncherActivity"
    android:label="@string/app_name"
    android:theme="@style/myTheme" >
</activity> 

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

Я уверен, что Android выбирает неправильную активность запуска из-за приведенных ниже журналов с консоли.

Консоль:

[2013-10-10 12:03:58 - app] Android Launch!
[2013-10-10 12:03:58 - app] adb is running normally.
[2013-10-10 12:03:58 - app] Performing com.company.app.activities.RS_PreviousLauncherActivity activity launch
[2013-10-10 12:04:01 - app] Uploading app.apk onto device '5C78E6332221CD6A1'
[2013-10-10 12:04:05 - app] Installing app.apk...
[2013-10-10 12:04:12 - app] Success!
[2013-10-10 12:04:12 - app] Starting activity com.company.app.activities.RS_PreviousLauncherActivity on device 5C78E6332221CD6A1
[2013-10-10 12:04:12 - app] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.company.app/.activities.RS_PreviousLauncherActivity }
[2013-10-10 12:04:13 - app] ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.company.app/.activities.RS_PreviousLauncherActivity } from null (pid=4530, uid=2000) not exported from uid 10084
[2013-10-10 12:04:13 - app] ActivityManager: at android.os.Parcel.readException(Parcel.java:1425)
[2013-10-10 12:04:13 - app] ActivityManager: at android.os.Parcel.readException(Parcel.java:1379)
[2013-10-10 12:04:13 - app] ActivityManager: at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1783)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.commands.am.Am.runStart(Am.java:463)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.commands.am.Am.run(Am.java:108)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.commands.am.Am.main(Am.java:81)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
[2013-10-10 12:04:13 - app] ActivityManager: at dalvik.system.NativeStart.main(Native Method)

Любая идея, почему это происходит?

Изменить:

public class RS_SplashScreenActivity extends Activity {

    // Splash screen timer
    private static int SPLASH_TIME_OUT = 3000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // This method will be executed once the timer is over
                // Start your app main activity
                Intent i = new Intent(RS_SplashScreenActivity.this, RS_PreviousLauncherActivity.class);
                RS_SplashScreenActivity.this.startActivity(i);

                // close this activity
                RS_SplashScreenActivity.this.finish();
            }
        }, SPLASH_TIME_OUT);
    }

Редактировать: когда я удаляю тег активности для RS_PreviousLauncherActivity, он определяет правильную активность в качестве средства запуска, но когда я снова добавляю тег активности, он начинает выбирать неправильную активность.

Редактировать: я получаю журналы ниже в консоли. Может это как-то связано с моей проблемой.

[2013-10-09 10:27:04 - app] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.apache.james.mime4j.message.Header$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.

И еще одно, этот же проект работает на другой машине.


  • Попробуйте очистить проект от Eclipse 08.10.2013
  • Опубликуйте код своей RS_SplashScreenActivity 08.10.2013
  • Обе машины (рабочая и нерабочая) используют один и тот же JDK? Последнее предупреждение в вашем вопросе может указывать на то, что неработающая машина использует более старую версию JDK. 10.10.2013

Ответы:


1

Щелкните проект правой кнопкой мыши и выберите "Запустить от имени" > "Запустить конфигурации...". В появившемся диалоговом окне проверьте, не выбрано ли на вкладке Android значение "Запустить действие по умолчанию":

Диалог запуска конфигураций

Вполне вероятно, что на машине, которая продолжает запускать старую активность, она была настроена на запуск этой конкретной активности (второй переключатель) случайно.

11.10.2013
  • Вау, спасибо! Так просто, и это заставило меня почесать голову в течение часа. Странно то, что я никогда не модифицировал начальную активность с самого начала. Просто как-то само получилось. Ошибка/глюк Android Studio? 02.02.2015
  • Это сработало, конечно, это очевидно, понятия не имею, почему бы не попробовать там. Но до сих пор не знаю, почему это было добавлено туда в первую очередь, почему это 14.02.2015
  • Это Выполнить -> Редактировать конфигурации -> Параметры запуска -> Активность по умолчанию в Android Studio. 10.08.2016
  • Наверное, я как-то случайно установил это... Эта проблема сводила меня с ума! Спасибо!! 11.08.2016
  • Это также было настроено на неправильную активность в моем проекте. Студия Android случайно не устанавливает это по умолчанию? 17.07.2017

  • 2

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

    08.10.2013
  • @Akash попробуйте мое решение, если не сработает, скажите мне, я опубликую обновление 08.10.2013

  • 3

    Очистите проект от Eclipse.

    1. Меню->Проект->Очистить->Выберите проект->ОК

    Он очистит проект и снова сгенерирует двоичный файл. после этого установите приложение и проверьте.

    08.10.2013
  • Я думаю, вы пытались удалить и установить снова. тогда я уверен, что вы обновили неправильный AndroidManifest.xml (папка bin). пожалуйста, проверьте это и попробуйте 08.10.2013
  • затем удалите папку bin и повторите процесс 08.10.2013

  • 4

    Попробуй это:

    <application
          ..... 
         android:theme="@style/myTheme" 
    >
    
    <activity
        android:name="com.company.app.activities.RS_SplashScreenActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
    
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.company.app.activities.RS_PreviousLauncherActivity"
        >
    </activity> 
    
    08.10.2013

    5

    Возможно, вы захотите сделать заставку традиционным способом... Таким образом, вы знаете, что это сработает, см. ссылку: Как сделать заставку

    08.10.2013

    6

    Очистите проект или удалите приложение. Тем не менее, это не сработало, затем удалите папку «gen», а затем очистите свой проект и запустите.

    10.10.2013

    7

    Проверьте код своей RS_SplashScreenActivity. проверяйте все время интервал и перенаправление на RS_PreviousLauncherActivity.

    Если это не решит вашу проблему, сделайте что-нибудь

    1: Щелкните правой кнопкой мыши проект из eclipse

    2: нажмите Источник

    3. Затем нажмите Очистить...

    4. Нажмите Готово.

    5: Atlast после удаления приложения с вашего устройства переустановите его.

    Это может решить вашу проблему.

    Отредактировано

    Попробуй это:

    <application
          ..... 
         android:theme="@style/myTheme" 
    >
    
    <activity
        android:name="com.company.app.activities.RS_SplashScreenActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
    
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
            android:name="com.company.app.activities.RS_PreviousLauncherActivity"     
           >
            <intent-filter>
                <action android:name="com.company.app.activities.RS_PreviousLauncherActivity" />
    
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    
    08.10.2013
  • Пытался. Все еще пытается запустить RS_PreviousLauncherActivity . Проблема не в RS_SplashScreenActivity, потому что в журналах консоли он печатает имя активности, которую пытается запустить, и это RS_PreviousLauncherActivity . 08.10.2013
  • Сделайте одну вещь для тестирования, попробуйте одну вещь, удалите RS_PreviousLauncherActivity из манифеста. и попробуйте запустить RS_SplashScreenActivity и дайте мне знать, придет это или нет. @Акаш 08.10.2013
  • Проблема может заключаться в заставке. Если вы опубликуете это, я смогу помочь вам в дальнейшем .. @Akash 08.10.2013
  • Посмотрите на отредактированный вопрос. Я добавил код для RS_SplashScreenActivity. 08.10.2013
  • давайте продолжим обсуждение в чате 08.10.2013
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]