2013-12-09 2 views
2

У меня установлено приложение Launcher. И пользователь выбрал другую пусковую установку по умолчанию, это означает, что при нажатии HOME запускается по умолчанию пусковая установка.Как сделать всплывающее окно Launcher-Pick-Up?

Я хочу предоставить пользователю возможность перепродажи по умолчанию. Например, нажатие кнопки в пользовательском интерфейсе Launcher приведет к появлению всплывающего окна Launcher-Pick-Up.

Go Launcher может это сделать (в режиме настройки Go). кажется, что Go Launcher делает что-то вроде «PackageManager.clearPackagePreferredActivities (« com.android.launcher »)», чтобы очистить предпочтительную активность запуска!

Как добиться этого?

ответ

5

Launcher может только очистить свои собственные настройки для обеспечения безопасности.

здесь работа вокруг:

зарегистрировать макет деятельности в 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" для запуска операционной системы четкого текущий запуска: предпочтительного

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); 
    } 

вот как я это делаю! наслаждаться!

+0

вот пример исходного кода: https://github.com/WTCho/HomeSelector – RoFF

+0

Как это работает для вас. В манифесте перечислены два системных разрешения как требования. –

+0

Это удивительно работает для меня !! –

 Смежные вопросы

  • Нет связанных вопросов^_^