Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择要在应用程序初始化时启动的活动?_Java_Android - Fatal编程技术网

Java 选择要在应用程序初始化时启动的活动?

Java 选择要在应用程序初始化时启动的活动?,java,android,Java,Android,在标题中很难概括这个问题,但其实并不复杂 我的问题是:在安装一个应用程序后,你会在play store上看到一个“Open app”按钮,它会启动你的应用程序,就像你在Eclipse上单击run时一样。当您执行上述任一操作时,清单中找到的第一个启动器活动将启动 例如,如果这是我的清单: <!-- Home screen replacemnt --> <activity android:name=".launcher" > &

在标题中很难概括这个问题,但其实并不复杂

我的问题是:在安装一个应用程序后,你会在play store上看到一个“Open app”按钮,它会启动你的应用程序,就像你在Eclipse上单击run时一样。当您执行上述任一操作时,清单中找到的第一个启动器活动将启动

例如,如果这是我的清单:

    <!-- Home screen replacemnt -->
    <activity
        android:name=".launcher" >
        <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>

    <!-- Launcher Application -->
    <activity
        android:name=".SettingsActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

单击打开时,将启动活动,因为第一个活动不是启动程序应用程序


我的问题是,用户第一次打开我的应用程序时,我希望他们看到启动器。如何确保在打开应用程序时启动
.launcher

您不应该根据意图级别来区分这一点。取而代之的是,为你的应用程序创建一个文件,如果这个文件不存在,你可以在其中写一个整数来表示这个版本。表示旧版本。然后,基于该机制,实现“首次安装”和/或“更新后首次运行”逻辑。

您必须从设置活动中删除意图过滤器

要解决重定向用户问题,有许多解决方案: 1-您可以使用两种不同的方法,添加SplashScreen活动和添加逻辑以确定下一个活动。 2-添加不可见的UI活动作为主要活动,有关更多详细信息,请参阅本教程:


3-使午餐成为主要活动,然后在onCreate方法中,测试设置是否存在,如果不存在,则开始设置活动并调用finish()

实际上我已经在做了。我有一个baseactivity,它可以扩展,这样我就可以开始将用户带到启动器。我认为有一个更简单的方法,如果你有一个共享的首选项文件,其中也包含一个版本信息,那么它应该很容易。虽然我同意这不太明显,但至少更灵活、更强大我发现这个想法有问题,或者我没有正确理解。我添加了几行代码来检查它是否是我所有活动中的第一次启动,如果是,它会将用户带到启动程序。这一直有效,直到我意识到如果用户没有点击“打开应用程序”,而是点击一个活动图标,比如:设置。他也被带到了发射架上。你明白我的意思吗?我正在想一个解决方案,但我不知道如何区分设置是从图标还是从“打开按钮”启动的。这与你提到的“意图级别”有关吗?@Liso22我以为这就是交易:所有“第一次”用户都被带到启动器。为什么根据用户是第一次从安装程序启动应用程序还是之后启动应用程序而有所不同?我看不出这有什么道理?但不管怎样,你有没有尝试过第三种活动和意图。类别偏好?