繁体   English   中英

如果用户已经将我的应用设置为HomeScreen,是否有简单的方法来切换Home Activity?

[英]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()方法。

编辑:万一不清楚,我有HomeScreenPersonalHomeScreenBusiness ,当前按下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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM