[英]If the user has already set my app as HomeScreen, is there an easy way to switch the Home Activity?
我正在制作一个应用程序,但是基本上有两个不同的,尽管相似的主屏幕。 有一个主屏幕指定供个人使用,另一个则明确用于商业用途。 两个主屏幕都是启动器,您可以从中启动与该主屏幕相对应的应用程序。
现在,我以这种方式设置主屏幕:
ComponentName component = new ComponentName(HomeScreen1.class.getPackage().getName(), HomeScreen1.class.getName());
packageManager.setComponentEnabledSetting(component, packageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
当我启动个人应用程序并按Home时,我希望它进入个人应用程序的Home Screen,当我处于商务Home Screen时(这是另一种活动,您可以通过按第一个Home Screen上的按钮来完成),如果我启动一个商务应用程序,我想按Home进入第二个主屏幕。
我意识到,做到这一点的一种方法是只进行一次主屏幕活动,并通过某种方式更改setContentView()
参数以使其在视觉上发生变化,但这变得非常难以管理。 由于用户已将我的应用程序提名为主屏幕替换应用程序,即使从技术上说,只有一项活动被提名为主屏幕,但我想知道是否有办法在用户按下主屏幕按钮时进行一些控制声明,启动两个主屏幕之一?
它不一定是这么简单的解决方案,但基本上,我在尽量避免不断重写setContentView()
方法。
编辑:万一不清楚,我有HomeScreenPersonal
和HomeScreenBusiness
,当前按下Home按钮始终将您带到HomeScreenPersonal
。 我想知道是否有一种方法可以轻松地拥有2个主屏幕,而该主屏幕基本上依赖于一些高级布尔值。
您可以使用SharedPreference来存储所有应用范围的变量( http://developer.android.com/reference/android/content/SharedPreferences.html )。 这是有关如何使用SharedPreferences的示例( http://developer.android.com/training/basics/data-storage/shared-preferences.html )。
如果要为用户提供更多选项(即,更改主屏幕),则可能需要按照本指南http://developer.android.com/guide/topics/ui/settings.html的建议创建“设置”活动。
我想出了一种有趣且实用的方式来获得所需的行为。 基本上只创建一个带有以下内容的主HomeScreen
:
public static boolean personalMain = true;
private Activity activity = this;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (personalMain) {
new HomeScreenPersonal(activity);
} else {
new HomeScreenBusiness(activity);
}
}
然后,不要使这两个对象成为Activity
对象,只需使它们成为常规类,其构造函数指定setContentView()
。 具有多个主屏幕的相当干净的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.