【发布时间】:2012-03-02 09:02:00
【问题描述】:
我正在开发一个应用程序。 我的要求是,当我第一次将应用程序安装到设备时,它必须启动主要和启动器活动。 之后,当我在设备内部启动/打开我的应用程序时,它必须加载另一个活动而不是主程序和启动器。 如果应用程序被卸载并再次安装,它必须再次加载主程序和启动程序。 你能请任何人分享这类主题的解决方案吗?
提前致谢。
【问题讨论】:
-
你知道登录细节是如何工作的吗?就这样吧。
我正在开发一个应用程序。 我的要求是,当我第一次将应用程序安装到设备时,它必须启动主要和启动器活动。 之后,当我在设备内部启动/打开我的应用程序时,它必须加载另一个活动而不是主程序和启动器。 如果应用程序被卸载并再次安装,它必须再次加载主程序和启动程序。 你能请任何人分享这类主题的解决方案吗?
提前致谢。
【问题讨论】:
你可以这样做:
假设 Activity A 是您只希望第一次启动的 Activity,而 Activity B 是系统将在第一次之后启动的 Activity。
在您的清单中,将 Activity B 作为您的启动器 Activity。然后在活动 B 的 oncreate 或更好的 OnResume 中放入以下内容:
@Override
protected void onResume() {
super.onResume();
if(firstLaunch()){
startActivity(new Intent(this, A.class));
finish();
}else{
//Do your normal stuff
}
}
private boolean firstLaunch(){
SharedPreferences prefs = getSharedPreferences(
"Preferences",
Context.MODE_PRIVATE);
return prefs.getBoolean("firstLaunch",false);
}
然后在您的 A 活动上,请务必在您的首选项中设置一个标志,以表明您的应用程序已经运行了多次。所以在活动 A 里面的某个地方放了这个:
private void setFirsLaunchFlag(){
SharedPreferences prefs = getSharedPreferences(
"Preferences",
Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putBoolean("firstLaunch",true);
edit.commit();
}
【讨论】:
您可以像这样使用布尔值:
1. 首次启动应用程序时使其为真。
2. 在您的启动器活动中检查此布尔值,如果为真,则启动您想要的活动,如果为假,则使其为真并保存(第一次)。
注意:布尔值可以使用SharedPreference。
【讨论】:
我认为这可能会对您有所帮助:
如果应用是第一次启动 android.intent.action.PACKAGE_FIRST_LAUNCH 广播将被触发。
收到此广播后,在共享首选项中维护一个标志,即应用程序首次启动。
将启动屏幕活动作为您的启动器活动,并根据该标志将其重定向到您的一次性活动或替换活动。
【讨论】:
据我所知,您没有机会发起另一项活动。 相反,您可以在 SharedPreferences 中跟踪安装并运行 基于此的不同代码。
【讨论】:
只需创建一个整数或布尔共享首选项变量。当应用程序在第一个实例启动时显示您希望仅显示 1'c 的活动,同时更改此共享首选项变量的值。每次从应用程序刚启动时开始,您必须检查此值,如果它不是默认值,则在 main 和启动器中加载另一个活动。
这是一个参考LINK ,不完全是预期的答案..但希望它有所帮助
【讨论】: