Android:更改启动器 Activity 的正确方法(完整阅读)

标签 android android-activity default launcher

我面临以下问题。我有一个拥有固定用户群的应用程序,我想更改该应用程序的默认启动器 Activity 。

该问题仅发生在部分通过 Google Play 更新应用的用户身上。通过 Android Studio 运行时不会出现问题。

问题出在一些用户手机上的启动器上。在他们更新应用程序后,当他们尝试从主屏幕打开应用程序时,一些用户会收到“错误应用程序未安装”或“Activity 不存在”错误。

似乎在某些用户的设备上,操作系统启动器会添加有关 Activity 名称的额外信息,这会在他们更新应用后导致问题。

为了避免上述问题,更改启动器 Activity 的正确方法是什么?这是一个相当大的问题,因为许多非技术用户只是卸载该应用程序。

  • 之前 .TabHostActivity 被设置为 Launcher/Main

  • 将 .SplashActivity 设置为 Launcher/Main 并将更新发布到 Google Play 后,一些用户在从主屏幕打开快捷方式时开始收到“应用未安装”错误。如果他们通过应用程序抽屉打开应用程序,应用程序仍然可以运行,但主屏幕上的快捷方式会出现此错误。

代码:

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

    <activity android:name=".TabHostActivity" android:configChanges="keyboardHidden|orientation|screenSize">
    </activity>

最佳答案

  1. 再次启动 TabHostActivity Launcher Activity 。
  2. 首先在 TabHostActivity 中检查它是否已从 SplashActivity 打开(您可以在从 SplashActivity 启动 TabHostActivity 时在 Intent 中添加一个标志,并在 TabHostActivity 中检查相同的标志)
  3. 如果 TabHostActivity 尚未从 SplashActivity 打开,则重定向到 SplashActivity。
  4. 上述所有内容都应在 TabHostActivity 的 OnCreate 中的任何其他代码之前进行编码。

关于Android:更改启动器 Activity 的正确方法(完整阅读),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28805363/

相关文章:

android - 跨多个 LazyRow 共享lazyListState 会导致奇怪的行为

android - 由于 Snackbar 导致的内存泄漏

android - 如何离线使用所有 Android gradle 依赖项(maven 文件结构)

android - 从另一个应用程序完成或关闭一个应用程序

python - 奥杜 10 : Changing the default search in tree view

android - 如何从包名中获取 PID?

android - Activity 管理器的使用

android - 获取选定复选框android的文本?

java - 如何在覆盖实现中调用接口(interface)的方法的默认实现?

php - WooCommerce:在未登录用户的结帐页面中默认设置国家/地区