aru*_*uke 18 android android-activity android-applicationinfo
我正在开发一个有两个活动的应用程序:LoginActivity和MainActivity.当用户首次打开应用程序时,他将登录并保存其凭据(用户名和令牌)Preferences.
现在,如果用户再次打开应用程序,则MainActivity应该启动.我试图在Application类中切换这些活动,并从manifest中删除了LAUNCHER_ACTIVITY的intent-filter,但它不起作用.
是否有任何方法可以根据保存的首选项以编程方式在Launcher活动之间切换?
Com*_*are 23
是否有任何方法可以根据保存的首选项以编程方式在Launcher活动之间切换?
你可以试试这个:
第1步:有LoginActivity有LAUNCHER <intent-filter>正常,并且有MainActivity没有<intent-filter>.
步骤2:在清单中有一个<activity-alias>元素指向MainActivity那个有LAUNCHER <intent-filter>.
第3步:把android:enabled="false"上<activity-alias>,所以它被默认禁用,因此在首次安装应用程序时,唯一的启动器图标是LoginActivity.
第4步:当用户登录时,你想改变这样MainActivity的发射活动,使用PackageManager和setComponentEnabledSetting()使<activity-alias>能和禁用LoginActivity.
并非所有主屏幕都会动态检测到这种变化,对于那些设备,设备需要重启才有可能获得更改.因此,坚持使用单个启动器活动会更好.如果你愿意,根据法希姆的回答,该启动器活动可以Theme.NoDisplay并且只是简单地路由到正确的"真实"活动onCreate().
Kno*_*sos 15
长话短说,你无法改变Activity默认启动的那个.更新:CommonsWare在另一个答案中有另一种选择.
但是,有合理的工作.在你的MainActivity,你可以检查用户是否登录,并立即将其重定向到LoginActivity.这具有MainActivity在您登录后自动返回的额外好处.
或者,您可以始终首先访问LoginActivity,如果用户已经登录,则将它们发送给MainActivity(重写Intent历史记录以删除返回LoginActivity或在清单中设置noHistory标志).
| 归档时间: |
|
| 查看次数: |
15547 次 |
| 最近记录: |