更改应用程序的启动活动


386

我已经创建了应用程序的内容,但是我想添加一个不同的活动作为起点(类似于登录屏幕)。

几个问题:

  • 1对于如何在活动之间进行切换,我有相当不错的了解(根据本文:http : //www.linux-mag.com/id/7498),但是我不确定如何创建一个新活动(蚀)

  • 2创建新活动后,如何将其设置为应用程序的默认活动? 我想我可以更改类的名称...但是有没有更优雅的方式来处理(也许在AndroidManifest.xml)呢?

Answers:


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
十分感谢。因此,通过在其子节点中包含该intent-filter节点,是否可以在应用程序启动时加载第一个活动中的所有活动?
凯尔(Kyle)2010年

4
@Kyle,它将使该活动显示在启动器页面上,您可以使用该意图过滤器进行多个活动,从而在主屏幕上为您提供多个图标。
内森·史威文

3
您提到这一行“实际上您甚至可以在应用程序清单中指定一个以上的启动器活动”。如果我们有多个活动
那么哪个

48
这是正确的答案,但我只是注意到一些奇怪的事情:如果将启动活动更改为其他任何活动,并且原始的启动活动仍然存在,则SDK将无法再启动您的应用程序。它以某种方式引用了启动配置中的活动。因此,完成上述更改后,您还需要转到“运行”>“调试配置”,找到项目的构建配置文件,选择“ Android”,然后将已启动的活动更改为默认或正确的活动(在“启动”下) :“。不确定为什么为我取消选择默认设置,但是将其更改回工作正常。
zeh 2012年

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>

11
如果此操作在Android Studio中仍然不起作用,则必须单击android图标(带有单词app的图标)并选择“编辑配置”,然后在“常规”标签的“活动”部分中选择“启动默认活动”
武器X

47

如果您使用的是Android Studio,并且您先前可能已经选择了另一个要启动的活动

单击Run > Edit configuration,然后确保已选择“ 启动默认活动”

启动默认活动


如果在AndroidManifest.xml中没有针对启动器的意图过滤器,那么这就是解决方案。
阿米尔·法兹万

1
这也适用于Eclipse。仅指定意图过滤器是不够的。如果APK是由用户直接执行的,则使用意图过滤器,但是如果APK是由安装它的Eclipse执行的,则尝试启动特定的活动。在“项目属性”(右键单击项目)->运行/调试设置中指定了此特定活动。
Iker Jamardo Zugaza

这真太了不起了!感谢您的提示
拉斐尔·奥利维拉

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活动的更改也存储在Debug配置中
  • 转到Run > Debug Configurations并编辑设置。
  • 还有一个类似的设置的IntelliJRun > Edit Configurations选择运行默认的活动和将不再保存以这种方式设置。

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

2
<category android:name="android.intent.category.DEFAULT" />,那就是在这里可以正常工作的东西
1111161171159459134 2015年

1
android.intent.category.HOME适用于Kiosk模式样式的应用程序,其中替换了默认启动器。在不替换启动器的情况下使用它会在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项目。


3

android:exported="true"在清单文件中添加要启动活动的内容 ,例如

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

打开此活动的Java文件,然后右键单击,然后单击“运行'主活动”

要么

打开此活动的Java文件,然后按Ctrl+ Shift+ F10


这有什么作用?刚发射?
chia 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”。这没有帮助。要运行该应用程序,我必须“编辑配置”并指向特定活动而不是默认活动:

编辑配置对话框

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.