我有两项活动 a)LauncherMainActivity b)FakeHome
问题在于,当我运行应用程序并按下主页按钮时,会打开一个对话框,显示启动器列表。 我不希望打开任何对话框,只想将LaunherMainActivity隐式地设为默认主页。 此外,当用户在按钮单击时退出此应用程序时,应将上一个启动器或默认启动器设置为默认主页。
我已将以下行添加到清单文件
<activity
android:name="com.example.launcherm.LauncherMainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.launcherm.FakeHome"
android:label="@string/title_activity_fake_home"
android:enabled="false">
<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>
下面给出了默认启动器所在的按钮的代码。此代码中的主要问题是它向用户显示一个对话框。但是我希望默认主页应该在按钮点击时隐式显示。
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
PackageManager p = getPackageManager();
ComponentName cN = new ComponentName(LauncherMainActivity.this, FakeHome.class);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME);
startActivity(selector);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
});
答案 0 :(得分:0)
我不希望打开任何对话框,只想将LaunherMainActivity隐式设为默认主页
幸运的是,出于明显的安全原因,除了可能在root设备上之外,这是不可能的。您无法劫持用户的HOME按钮。欢迎用户通过对话框将您的应用程序设为默认主屏幕。