2

我正在尝试制作一个 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 按钮,否则不会发生这种情况,我希望这会尽快发生随着活动的启动)。一旦我将它设置为我的默认主屏幕,它就可以工作,但只是从根本上说。按主页按钮让我回到这个活动(应该如此),但是当我点击退出按钮时,我不会返回到我想要的股票主页启动器。

4

1 回答 1

0

首先,您的 Manifest 是可以的,
但是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 活动时,会出现一个提示,告诉你选择你的
默认主屏幕(除非我按下 Home 按钮,否则不会发生这种情况
,我希望这会尽快发生随着活动的启动)。

然后调用这个函数onCreate()
它通过调用一个意图来模拟一个主页按钮按下Intent.CATEGORY_HOME

public void showPrompt()
{
    Intent i = new Intent(Intent.ACTION_MAIN);
    i.addCategory(Intent.CATEGORY_HOME);
    startActivity(i);
}

希望这是你想要的

于 2013-06-24T18:29:08.380 回答