我正在开发一个包含两个 Activity 的应用程序:LoginActivity
和 MainActivity
。当用户第一次打开应用程序时,他将登录并且他的凭据(用户名和 token )保存在 Preferences
中。
现在,如果用户再次打开应用程序,那么 MainActivity
应该会启动。我尝试在 Application 类中的这些 Activity 之间切换,并从 list 中删除了 LAUNCHER_ACTIVITY 的 Intent 过滤器,但它不起作用。
是否有任何方法可以根据保存的偏好以编程方式在启动器 Activity 之间切换?
最佳答案
Is there any way of switching between Launcher Activities programmatically on basis of saved preferences ?
你可以试试这个:
第 1 步:拥有 LoginActivity
有LAUNCHER
<intent-filter>
正常,并拥有 MainActivity
没有<intent-filter>
.
第 2 步:拥有 an <activity-alias>
element in the manifest指向MainActivity
具有 LAUNCHER
<intent-filter>
.
第 3 步:输入 android:enabled="false"
在 <activity-alias>
, 所以它默认是禁用的,所以当第一次安装应用程序时,唯一的启动器图标是 LoginActivity
.
第 4 步:当用户登录时,您想要更改 MainActivity
是启动器 Activity ,使用 PackageManager
和 setComponentEnabledSetting()
制作 <activity-alias>
启用和禁用 LoginActivity
.
并非所有主屏幕都会即时检测到此更改,对于那些,设备很可能需要重新启动才能获取更改。因此,最好坚持使用单个启动器 Activity 。如果您愿意,该启动器 Activity 可能有 Theme.NoDisplay
并简单地路由到 onCreate()
中正确的“真实” Activity ,根据 Fahim 的回答。
关于android - 如何在 android 中以编程方式配置 Launcher Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29517277/