如何让Launcher-Pick-Up弹出窗口显示?

时间:2013-12-09 13:02:13

标签: android android-launcher

我安装了一个Launcher应用。并且用户默认选择另一个启动器,这意味着当按下HOME时,默认启动器将会出现在前面。

我想为用户提供重置默认启动器的便利。例如在我的启动器UI中单击按钮将显示Launcher-Pick-Up弹出窗口。

Go Launcher可以这样做(在Go的设置视图中)。似乎Go Launcher做了类似“PackageManager.clearPackagePreferredActivities(”com.android.launcher“)”的事情来清除首选的启动器活动!

如何实现?

1 个答案:

答案 0 :(得分:5)

启动程序只能清除自己喜欢的安全问题设置。

这是一个解决方法:

在Manifest.xml中注册一个模型活动:

   <activity
        android:name="MockupLauncher"
        android:enabled="false" 
        android:exported="false" 
        android:excludeFromRecents="true" 
        android:launchMode="singleTask" >

        <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>

使用“PackageManager.setComponentEnabledSetting”来触发OS清除当前首选启动器:

    private void resetPreferedLauncher() {

       PackageManager pm = mContext.getPackageManager();
       ComponentName mockupComponent = new  ComponentName(MockupLauncher.class.getPackage().getName(), MockupLauncher.class.getName());

       pm.setComponentEnabledSetting(mockupComponent,  PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

      Intent startMain = new Intent(Intent.ACTION_MAIN);
      startMain.addCategory(Intent.CATEGORY_HOME);
      startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      mContext.startActivity(startMain);

      pm.setComponentEnabledSetting(mockupComponent,  PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);
      // or
      //pm.setComponentEnabledSetting(mockupComponent, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
   }

这就是我的成就!享受!