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

6

标题很难概括问题,但实际上并不是非常复杂。

我的问题是:安装应用程序后,在Play商店中看到“打开应用程序”按钮,它会启动您的应用程序,类似于在Eclipse上单击运行。当您执行这些操作中的任何一个时,将启动清单中找到的第一个启动器活动。

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

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

点击“打开”按钮后,由于第一个活动不是启动器应用程序,因此将启动SettingsActivity。我的问题是,当用户第一次打开我的应用程序时,我希望他们看到启动器。如何确保在打开我的应用程序时启动器.launcher被启动?
2个回答

2

不应该基于意图级别来区分这个。相反,为您的应用程序拥有一个SharedPreferences文件,其中写入表示版本的整数(如果不存在或表示旧版本)。然后,根据该机制,实现您的“首次安装”和/或“更新后第一次运行”逻辑。


如果您已经有一个包含版本信息的共享首选项文件,那么这将变得相当简单。虽然我同意这并不太明显等等。但至少更灵活和更强大。;) - class stacker
@Liso22 我原以为是这样的协议:所有的 "第一次" 用户都将被带到启动器。为什么这会因用户是从安装程序还是之后的应用程序首次启动而有所不同呢?我不明白这个行为有什么合理解释?但无论如何,你是否尝试过使用第三个活动和 Intent.CATEGORY_PREFERENCE - class stacker
不,我没有,我会尽快尝试。这是交易:商店中有一个“打开我的应用程序”按钮,当用户单击它时,他期望看到启动器,毕竟该应用程序名为EasyLauncher。但也有像设置这样的单独图标。如果用户没有点击“打开应用程序”,而是稍后点击“设置”图标,则应将其带到设置页面。 - lisovaccaro
你能理解我的意思吗?我也有点困惑如何实现这个。创建一个没有图标的第三个活动可能会解决这个问题。 - lisovaccaro
@Liso22,那么,你试过了吗? - class stacker
显示剩余4条评论

0

你需要从SettingsActivity中删除intent filter。

为了解决重定向用户的问题,有很多解决方案: 1- 你可以使用两种不同的方法,添加一个SplashScreen活动并添加你的逻辑来确定下一个活动。 2- 添加一个非可见的UI活动作为你的主要活动,更多细节请参考这个教程:TranscludeActivity 3- 将luncher设置为你的主要活动,在onCreate方法中测试是否存在Settings,如果不存在,则启动SettingsActivity并调用finish();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接