我的应用流程是:
使用 SplashActivity启动应用 - > LoginActivity - > MainActivity
我使用会话管理器类来检查记住按钮,现在它的流程是:
SplashActivity - > MainActivity
但如果check为true,我需要登录,然后下次打开我的应用程序时,它将直接从MainActivity开始。
答案 0 :(得分:0)
基本上你不能在运行时更改intent-filter中的定义..但是有一种方法可以使用<activity-alias>
如此answer所述,您需要按照以下步骤操作:
SplashActivity
拥有LAUNCHER
<intent-filter>
,并声明MainActivity
没有<intent-filter>
。 让an <activity-alias>
element in the manifest指向MainActivity
LAUNCHER
的{{1}}。
将<intent-filter>
放在android:enabled="false"
上,默认情况下已禁用,因此当首次安装应用或用户未登录时,<activity-alias>
。< / p>
当用户登录,并且您想要更改以使SplashActivity
成为启动器活动时,请使用MainActivity
和PackageManager
启用setComponentEnabledSetting()
禁用<activity-alias>
。
SplashActivity
定义你的别名
// after login/logout success enable/disable components as required
// use the correct "packagename", "alias" and activities names
getPackageManager().setComponentEnabledSetting(
new ComponentName("packagename", "alias"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
try {
getPackageManager().setComponentEnabledSetting(
new ComponentName("packagename", "SplashActivity"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
} catch (Exception e) {
e.printStackTrace();
}
当您启用别名时,它将作为您的启动器运行,它将使应用程序以<activity-alias
android:name=".Blahblah"
android:targetActivity=".MainActivity"
android:label="@string/splashactivity_name"
android:icon="@drawable/icon_splashactivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
开始
当用户注销时,您可以执行相同的操作来更改默认配置
答案 1 :(得分:0)
我找到了另一种方法来执行此操作我在最后一个块中使用处理程序类On Splash我调用了LoginClass并进一步在MainClass中移动 现在我改变了一些代码。首先,它检查了SplashClass,SessionClass是否有数据。如果存在的数据比重定向到MainClass和MainClass中的Logout按钮我清除会话。 如果数据不存在,则进程从头开始。