以编程方式选择启动器而不从对话框中选择

时间:2014-09-13 17:34:02

标签: android android-activity

我有两项活动 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);
       }

});

1 个答案:

答案 0 :(得分:0)

  

我不希望打开任何对话框,只想将LaunherMainActivity隐式设为默认主页

幸运的是,出于明显的安全原因,除了可能在root设备上之外,这是不可能的。您无法劫持用户的HOME按钮。欢迎用户通过对话框将您的应用程序设为默认主屏幕。