Java 如果登录1次,请在再次启动应用程序时打开MainActivity?
我的应用程序流程是: 使用SplashActivity->LoginActivity->MainActivity启动应用程序 我使用会话管理器类来检查记住按钮,现在它的流程是: SplashActivity->MainActivityJava 如果登录1次,请在再次启动应用程序时打开MainActivity?,java,android,Java,Android,我的应用程序流程是: 使用SplashActivity->LoginActivity->MainActivity启动应用程序 我使用会话管理器类来检查记住按钮,现在它的流程是: SplashActivity->MainActivity 但如果检查为真,我需要登录,然后下次打开我的应用程序时,它将直接从MainActivity启动。基本上,您无法在运行时更改在intent中定义的筛选器。。但是有一种方法可以使用实现您需要的功能,您需要遵循以下步骤: 让您的SplashActivity拥有启动器,并
但如果检查为真,我需要登录,然后下次打开我的应用程序时,它将直接从MainActivity启动。基本上,您无法在运行时更改在intent中定义的筛选器。。但是有一种方法可以使用
实现您需要的功能,您需要遵循以下步骤:
让您的SplashActivity
拥有启动器
,并声明您的main活动
,无
李>
指向具有启动器的main活动
将android:enabled=“false”
放在
上,因此它在默认情况下是禁用的,因此当应用程序首次安装或用户未登录时,Splash活动
// 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();
}
main活动
为启动器活动时,请使用PackageManager
和setComponentEnabledSetting()
启用
并禁用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>
使用此选项,当您启用别名时,它将作为启动器工作,并使应用程序以MainActivity
当用户注销时,您可以做同样的事情来更改回默认配置我找到了另一种方法,我在最后一个块中的Splash上使用handler类,我调用LoginClass并在MainClass中进一步移动 现在我更改了一些代码。首先,它在SplashClass上检查SessionClass是否有数据。如果数据存在,则重定向到MainClass,并从MainClass I中的注销按钮清除会话。
如果数据不存在,则从头开始处理 那是不可能的。从launcher,只有一个应用程序入口点,您必须从SplashActivity重定向到MainActivity。你只能有一个启动程序。是的,我知道通常我们有一个启动程序活动,从我们的应用程序开始,但当我们看到Whatsapp应用程序时,它的功能不是从初始状态打开活动,而是从MainActivity打开应用程序,是我的错吗wrong@rafid059我有办法解决我的问题,否则谢谢你reply@dhiku我找到了解决问题的方法,否则感谢您在单击应用程序时给出的回复“未找到应用程序”。您是如何定义活动别名的?use是否提供了正确的目标活动和意图筛选器?在清单中,应为别名而不是初始活动设置意图筛选器启动器。。您需要卸载/重新安装应用程序以重置对测试的更改抱歉再次打扰您@A.A,但我从初始步骤告诉您,我的场景是应用程序启动(步骤1)启动活动,而不是登录活动打开,(步骤2)登录活动我有“记住我”复选框。如果user checked=true,则按loginBtn than Session保存此值,当再次启动应用程序时,应打开MainActivity other wise app open(从步骤(1)开始)。