试图让家庭更换应用程序?

时间:2013-06-24 17:12:27

标签: android launcher homescreen

我正在尝试制作一个Home Replacement应用程序,但我遇到了一堆故障。当应用程序首次启动时,您将通过几个设置屏幕来配置基本设置。完成后,您将进入HomeScreen活动。在AndroidManifest.xml中,我包含以下内容:

<activity android:name="HomeScreenMain"
              android:theme="@style/Theme"
              android:launchMode="singleInstance"
              android:stateNotNeeded="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

在HomeScreen活动中,我提供了以下方法:

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (Intent.ACTION_MAIN.equals(intent.getAction())) {
        getWindow().closeAllPanels();
    }
}
public void onDestroy() {
    super.onDestroy();
}

同样在HomeScreen活动中,我有一个有效退出整个应用程序的按钮。相关代码是:

public void exitApp(View view){
    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

所以基本上我想要的是,当你第一次进入HomeScreen活动时,会出现一个提示,告诉你选择你的默认主屏幕(除非我按下主页按钮,否则不会发生这种情况,我希望这样做一旦活动启动就会发生)。一旦我将其设置为我的默认主屏幕,它就可以工作,但只是从根本上。按下主页按钮会让我回到此活动(应该如此),但是当我点击退出按钮时,我不会返回到Home Launcher库存,这就是我想要的。

1 个答案:

答案 0 :(得分:0)

首先,你的清单还可以,
但是在exitApp你要完成活动,对吧? 在你的代码中你完成它,然后再次启动它..

  

按主页按钮可以回到此活动(应该如此),
  但是当我点击“退出”按钮时,我没有回到库存启动器,
  这就是我想要的。

如果用户安装了其他家庭更换应用(例如 Go Launcher Ex ) 如果用户将 Go Launcher 设置为默认,则默认为您的应用 你想回到Go Launcher Ex,对吧? 我认为是的。

部分可能
您可以做的是提示用户使用哪个家庭启动器 退出发射器后:

import android.content.pm.PackageManager;

public void exitApp()
{
    //call this method to exit _CLEARLY_,
    //and prompt the user which launcher to use next

    //clear the default for your app (to show the prompt when exiting)
    final PackageManager pm = getPackageManager();
    pm.clearPackagePreferredActivities(getApplicationContext().getPackageName());

    //exit _CLEARLY_
    //calling finish(); would be ok also,
    //but there would stay a 'zombie' in the dalvik cache
    //and 'zombies' only use up your memory, so kill your entire app:
    android.os.Process.killProcess(android.os.Process.myPid());
}

  

基本上我想要的是当你到达HomeScreen时   活动第一次,出现提示,告诉您选择你的   默认主屏幕(除非我按下主页,否则不会发生这种情况   按钮,我希望一旦活动启动就会发生这种情况。)

然后在onCreate()中调用此函数,
它通过调用Intent.CATEGORY_HOME

的意图来模拟家庭按钮按下
public void showPrompt()
{
    Intent i = new Intent(Intent.ACTION_MAIN);
    i.addCategory(Intent.CATEGORY_HOME);
    startActivity(i);
}

希望这是你想要的