Alterar a atividade inicial do aplicativo

386

Eu criei a carne e a coragem do meu aplicativo, mas quero adicionar uma atividade diferente que será o ponto de partida (uma espécie de tela de login).

Algumas perguntas:

  • 1 Eu tenho um controle bastante decente sobre como alternar entre atividades (com base neste artigo: http://www.linux-mag.com/id/7498 ), mas não tenho certeza de como criar uma nova ( com eclipse) .

  • 2 Depois de criar uma nova atividade, como posso defini-la como a atividade padrão do meu aplicativo? Eu presumo que eu poderia mudar o nome das classes ... mas existe uma maneira mais elegante de lidar com isso (talvez dentro da AndroidManifest.xml)?

Kyle
fonte

Respostas:

660

Sim, você usa o AndroidManifest.xmlarquivo Você pode até ter mais de uma atividade do iniciador especificada no manifesto do aplicativo. Para tornar uma atividade vista no iniciador, adicione esses atributos à sua atividade no manifesto:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Nathan Schwermann
fonte
49
Para quem não sabe do que está falando o manifesto desta postagem, é o AndroidManifest.xml na raiz do seu projeto. No Eclipse, você pode clicar duas vezes nele e clicar na guia à direita, para editar o XML diretamente.
Austyn Mahoney
3
muito obrigado. Então, ao incluir esse nó de filtro de intenção com os nós filhos, isso faz com que seja a atividade que estiver no primeiro a carregar quando o aplicativo for iniciado?
Kyle
4
@Kyle fará com que essa atividade apareça na página do iniciador. Você pode ter várias atividades com esse filtro de intenção, oferecendo vários ícones na tela inicial.
Nathan Schwermann
3
você menciona esta linha "ou pode realmente ainda têm mais de uma atividade lançador especificado em seu manifesto de aplicativo" atividade .que vai primeiro lançamento, se tivermos mais de uma atividade
Tofeeq Ahmad
48
Esta é a resposta correta, mas notei algo estranho: se você alterar a Atividade inicial para qualquer outra coisa e a atividade iniciada original ainda existir, o SDK não poderá mais executar seu aplicativo. De alguma forma, ele tem uma referência à atividade na configuração de inicialização. Portanto, depois de fazer a alteração acima, você também precisa ir em "Executar"> "Configurações de depuração", encontrar o perfil de compilação do seu projeto, guia "Android" e alterar a atividade iniciada para a padrão ou a correta em "Iniciar : ". Não sei por que o padrão foi desmarcado para mim, mas alterá-lo novamente funcionou.
zeh
91

Vá para AndroidManifest.xml na pasta raiz do seu projeto e altere o nome da Atividade que você deseja executar primeiro.

Exemplo:

<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
fonte
11
se isso ainda não funcionar no Android Studio, você deverá clicar no ícone do Android (aquele com a palavra app) e selecionar "Editar configurações" e, na guia Geral, seção Atividade, selecione "Iniciar atividade padrão"
Arma X
47

Se você estiver usando o Android Studio e tiver selecionado anteriormente outra Atividade para iniciar.

Clique em Run > Edit configuratione, em seguida, verifique se Ativar atividade padrão está selecionado.

Iniciar atividade padrão

Zeezer
fonte
se no AndroidManifest.xml não houver filtro de intenção para o iniciador, esta é a solução.
Amir Fazwan #
11
Isso também é aplicável ao Eclipse. Apenas especificar os filtros de intenção não é suficiente. Os filtros de intenção são usados ​​se o APK for executado diretamente pelo usuário, mas se o APK for executado pelo Eclipse, que o instala, tenta iniciar uma atividade específica. Esta atividade específica é especificada em "Propriedades do projeto" (clique com o botão direito do mouse no projeto) -> Configurações de Execução / Depuração.
Iker Jamardo Zugaza
Isso é incrível! Obrigado pela dica
Rafael Oliveira
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>
LMK
fonte
18

Siga as instruções abaixo:

1 :) Abra seu AndroidManifest.xmlarquivo.

2 :) Vá para o código de atividade que você deseja fazer como principal atividade abaixo.

como eu quero fazer o SplashScreen como atividade principal

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

3 :) Agora copie o código abaixo entre as tags de atividade, da mesma forma que:

<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>

e verifique também se as linhas recém-adicionadas não estão anexadas a outras tags de atividade.

Bhunnu Baba
fonte
17

Isso é fácil de consertar.

  • As alterações na atividade do Iniciador também são armazenadas na configuração de Depuração .
  • Vá para Run > Debug Configurationse edite a configuração.
  • Também há uma configuração semelhante no Intellij em Run > Edit Configurationsselecione Executar atividade padrão e ela não salvará mais a configuração dessa maneira.
user3154790
fonte
14

É simples. Faça isso no seu Manifestarquivo.

<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>
Rohit Sharma
fonte
11
você deve remover <category android: name = "android.intent.category.HOME" />
Behrouz.M
2
<category android:name="android.intent.category.DEFAULT" />, é
exatamente
11
android.intent.category.HOMEé para uso em um aplicativo no estilo Kiosk, em que o iniciador padrão é substituído. Usar isso sem substituir o Iniciador resultará em um prompt durante o início do SystemUI perguntando qual iniciador usar. Consulte também: 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>
Null Pointer Exception
fonte
5

Basta ir ao seu arquivo AndroidManifest.xml e adicionar como abaixo

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

salve e execute seu projeto android.

user3206168
fonte
3

Você adiciona isso que deseja iniciar a atividade android:exported="true"no arquivo de manifesto, como

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

Abra o arquivo java desta atividade e clique com o botão direito do mouse e clique em Executar 'atividade principal'

OU

Abra o arquivo java desta atividade e pressione Ctrl+ Shift+ F10.

Prabh deep
fonte
Que efeito isso tem? Apenas lançando?
Chia yongkang
2

Em um projeto recente, alterei a atividade padrão no AndroidManifest.xml com:

<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>

No Android Studio 3.6; isso parece quebrado. Eu usei essa técnica em aplicativos de exemplo, mas quando o uso neste aplicativo do mundo real, ela cai completamente. O IDE relata mais uma vez:

Erro ao executar o aplicativo: atividade padrão não encontrada.

O IDE ainda mostrou um erro de configuração no espaço "executar aplicativo" na barra de ferramentas (seta amarela nesta captura de tela)

Erro na configuração "executar aplicativo"

Para corrigir esse erro, tentei várias reconstruções do projeto e, finalmente, o arquivo >> "Invalidate Cache / Restart" . Isso não ajudou. Para executar o aplicativo, tive que "Editar configurações" e apontar para a atividade específica em vez da atividade padrão:

Caixa de diálogo Editar configuração

marechal
fonte