好吧,Nova Launcher使用这个(我认为)。这是他们的HomeReset类。
public class HomeReset
extends Activity
{
public static ComponentName D(PackageManager paramPackageManager)
{
ComponentName localComponentName = null;
try
{
Intent localIntent = new Intent("android.intent.action.MAIN", null);
localIntent.addCategory("android.intent.category.HOME");
localIntent.addFlags(270532608);
localComponentName = localIntent.resolveActivity(paramPackageManager);
if (("android".equals(localComponentName.getPackageName())) && ("com.android.internal.app.ResolverActivity".equals(localComponentName.getClassName()))) {
return null;
}
return localComponentName;
}
catch (Exception localException)
{
Log.e("HomeReseter", "Exception when trying to find default home", localException);
}
return localComponentName;
}
public static Intent D()
{
Intent localIntent = new Intent("android.intent.action.MAIN", null);
localIntent.addCategory("android.intent.category.HOME");
localIntent.addFlags(270532608);
return localIntent;
}
public static void D(Activity paramActivity)
{
PackageManager localPackageManager = paramActivity.getPackageManager();
localPackageManager.setComponentEnabledSetting(new ComponentName(paramActivity.getPackageName(), "com.teslacoilsw.launcher.homereset.HomeReset"), 1, 1);
Intent localIntent = new Intent("android.intent.action.MAIN", null);
localIntent.addCategory("android.intent.category.HOME");
localIntent.addFlags(270532608);
localIntent.addFlags(268435456);
localIntent.putExtra("homereset_return_to_settings", true);
paramActivity.startActivity(localIntent);
localPackageManager.setComponentEnabledSetting(new ComponentName(paramActivity.getPackageName(), "com.teslacoilsw.launcher.homereset.HomeReset"), 2, 1);
paramActivity.startActivity(localIntent);
}
public void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
Context localContext = getApplicationContext();
PackageManager localPackageManager = getPackageManager();
localPackageManager.setComponentEnabledSetting(new ComponentName(localContext.getPackageName(), "com.teslacoilsw.launcher.homereset.HomeReset"), 1, 1);
Intent localIntent1 = new Intent("android.intent.action.MAIN", null);
localIntent1.addCategory("android.intent.category.HOME");
localIntent1.addFlags(270532608);
localIntent1.setFlags(268435456);
localContext.startActivity(localIntent1);
localPackageManager.setComponentEnabledSetting(new ComponentName(localContext.getPackageName(), "com.teslacoilsw.launcher.homereset.HomeReset"), 2, 1);
Intent localIntent2 = new Intent("android.intent.action.MAIN", null);
localIntent2.addCategory("android.intent.category.HOME");
localIntent2.addFlags(270532608);
localIntent2.setFlags(402653184);
localContext.startActivity(localIntent2);
}
}
这有帮助吗?我无法找到它的R.Java文件,因为它被混淆了,所以我不能告诉你这些ID参考。
编辑:我认为这是如何启动上述活动。这是从他们的SettingsActivity:
...
Preference localPreference = findPreference("select_home");
if (localPreference == null) {
return;
}
Object localObject = null;
PackageManager localPackageManager = getActivity().getPackageManager();
ComponentName localComponentName = HomeReset.D(localPackageManager);
if (localComponentName != null) {}
try
{
localObject = localPackageManager.getActivityInfo(localComponentName, 0).loadLabel(localPackageManager);
}
catch
...
我相信这是可能的,但我不知道怎么办。 Nova Launcher实现了这个确切的事情。当您在其菜单中按下“选择默认主页”时,Nova会在用户选择默认启动器时进入“后退/可见”状态。 – KickAss
@KickAss是的,我相信,我也看到了它在其他应用程序! – Sebastian
一秒钟,我正在看Nova发射器的源代码(嘘!) – KickAss