我正在尝试制作一个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库存,这就是我想要的。
答案 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);
}
希望这是你想要的