Изменить начальную активность приложения

386

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

Пара вопросов:

  • 1 У меня есть достаточно приличное представление о том, как переключаться между действиями (на основе этой статьи: http://www.linux-mag.com/id/7498 ), но я не уверен, как создать новую ( с затмением) .

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

рукав моря
источник

Ответы:

660

Да, вы используете AndroidManifest.xmlфайл. На самом деле вы можете даже указать несколько действий запуска, указанных в манифесте приложения. Чтобы сделать активность видимой на панели запуска, вы добавляете эти атрибуты к своей активности в манифесте:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Натан Шверманн
источник
49
Для тех, кто не знает, о чем говорится в этом сообщении, это AndroidManifest.xml в корневом каталоге вашего проекта. В Eclipse вы можете дважды щелкнуть по нему и щелкнуть на вкладке в самом дальнем правом углу, чтобы редактировать XML напрямую.
Остин Махони
3
большое спасибо. Итак, включив этот узел фильтра намерений с его дочерними узлами, он будет выполнять какую-либо активность, загруженную первым при запуске приложения?
Кайл
4
@Kyle это сделает это действие появиться на странице запуска, вы можете иметь несколько действий с этим фильтром намерений, давая вам несколько значков на рабочем столе.
Натан Шверманн
3
Вы упоминаете эту строку: «У вас может даже быть несколько действий запуска, указанных в манифесте вашего приложения». Какое действие будет запущено первым, если у нас будет более одного действия
Tofeeq Ahmad
48
Это правильный ответ, но я просто заметил кое-что странное: если вы измените начальную активность на что-то еще, а исходная запущенная активность все еще существует, SDK больше не сможет запускать ваше приложение. Каким-то образом в нем есть ссылка на активность в конфигурации запуска. Поэтому после внесения вышеуказанных изменений вам также нужно перейти в «Выполнить»> «Отладочные конфигурации», найти профиль сборки вашего проекта, вкладку «Android» и изменить запущенную активность на стандартную или правильную в разделе «Запуск». :». Не уверен, почему по умолчанию был отменен для меня, но изменение его обратно работало.
зе
91

Перейдите к AndroidManifest.xml в корневой папке вашего проекта и измените имя действия, которое вы хотите выполнить первым.

Пример:

<activity android:name=".put your started activity name here"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Neeraj T
источник
11
если с этим по-прежнему не работает в Android Studio, вы должны нажать на значок андроида (тот, что со словом app) и выбрать «Редактировать конфигурации», а затем на вкладке «Общие» в разделе «Активность» выбрать «Запуск активности по умолчанию»
Оружие X
47

Если вы используете Android Studio и, возможно, ранее выбрали другое действие для запуска.

Нажмите Run > Edit configurationи убедитесь, что выбрано « Запустить действие по умолчанию» .

Запустите активность по умолчанию

Zeezer
источник
если в AndroidManifest.xml нет фильтра намерений для запуска, это решение.
Амир Фазван
1
Это применимо и к Eclipse. Просто указать фильтры намерений недостаточно. Фильтры намерений используются, если APK исполняется непосредственно пользователем, но если APK выполняется Eclipse, который устанавливает его, пытается запустить определенное действие. Это конкретное действие указано в «Свойствах проекта» (щелкните проект правой кнопкой мыши) -> Настройки запуска / отладки.
Икер Джамардо Зугаза
Это потрясающе! Спасибо за совет
Рафаэль Оливейра
30
 <application
    android:icon="@drawable/YOUR_ICON"    <!-- THIS ICON(IMAGE) WILL BE SHOWN IN YOUR APPS -->
    android:label="MY APP NAME " >    <!-- HERE LABEL(APP NAME) -->
    <activity
        android:name=".application's starting activity"  <!-- (.)dot means current dir, if your activity is in another package then give full package name ex: com.xxx.Activity  -->
        android:label="LABEL FOR ACTIVITY "
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
ЛМК
источник
18

Следуйте инструкциям ниже:

1 :) Откройте ваш AndroidManifest.xmlфайл.

2 :) Перейдите к коду активности, который вы хотите сделать основным, как показано ниже.

например, я хочу сделать SplashScreen в качестве основного занятия

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
</activity>

3 :) Теперь скопируйте приведенный ниже код между тегами активности так же, как:

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

а также убедитесь, что вновь добавленные строки не связаны с другими тегами активности.

Бхунну баба
источник
17

Это легко исправить.

  • Изменения активности Launcher также хранятся в конфигурации отладки .
  • Перейдите Run > Debug Configurationsи измените настройку.
  • В Intellij также есть аналогичная настройка при Run > Edit Configurationsвыборе « Выполнить действие по умолчанию», и она больше не будет сохранять настройки таким образом.
user3154790
источник
14

Это просто. Сделайте это в своем Manifestфайле.

<activity
    android:name="Your app name"
    android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>
Рохит Шарма
источник
1
Вы должны удалить <category android: name = "android.intent.category.HOME" />
Behrouz.M
2
<category android:name="android.intent.category.DEFAULT" />это то, что здесь работает
1111161171159459134
1
android.intent.category.HOMEпредназначен для использования в приложении в стиле киоска, где заменяется средство запуска по умолчанию. Использование этого без замены модуля запуска приведет к появлению подсказки во время запуска SystemUI, спрашивающей, какой модуль запуска использовать. Также смотрите: stackoverflow.com/questions/22911156/…
CJBS
6
 <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
исключение нулевого указателя
источник
5

Просто зайдите в ваш файл AndroidManifest.xml и добавьте, как показано ниже

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

затем сохраните и запустите свой проект Android.

user3206168
источник
3

Вы добавляете это, вы хотите запустить деятельность android:exported="true"в файле манифеста, как

 <activity
      android:name=".activities.activity.MainActivity"
      android:windowSoftInputMode="adjustPan"
      android:exported="true"/>
  <activity

Откройте Java-файл этого действия и щелкните правой кнопкой мыши, затем щелкните «Выполнить основное действие».

ИЛИ

Откройте Java-файл этой деятельности и нажмите Ctrl+ Shift+ F10.

Прабх глубоко
источник
Какой эффект это имеет? Просто запускаешь?
цзя YONGKANG
2

В недавнем проекте я изменил активность по умолчанию в AndroidManifest.xml следующим образом:

<activity android:name=".MyAppRuntimePermissions">
</activity>

<activity android:name=".MyAppDisplay">
    <intent-filter>
        <action android:name="android.intent.activity.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

В Android Studio 3.6; это кажется сломанным. Я использовал эту технику в примерах приложений, но когда я использую ее в этом реальном приложении, она не работает. IDE еще раз сообщает:

Ошибка запуска приложения: активность по умолчанию не найдена.

В среде IDE все еще отображалась ошибка конфигурации в области «Запустить приложение» на панели инструментов (желтая стрелка на этом снимке экрана)

Ошибка в конфигурации «Запустить приложение»

Чтобы исправить эту ошибку, я попытался несколько перестроений проекта, и, наконец, File >> "Invalidate Cache / Restart" . Это не помогло. Чтобы запустить приложение, мне нужно было «Редактировать конфигурации» и указать на конкретное действие вместо действия по умолчанию:

Диалоговое окно "Изменить конфигурацию"

martshal
источник