Quitar actividad como iniciador predeterminado

Establecer mi actividad como un lanzador por defecto para interceptar clics de botón de inicio como así:

<activity android:name=".ExampleActivity" 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> 

Cuando mi actividad, ExampleActivity se inicia, si hago clic en la tecla de inicio , me pide que elija. Si selecciono hacer que este sea mi predeterminado y elija mi actividad, me quedo atrapado en mi actividad como lo desee.

El problema es, cuando dejo la actividad, intento quitar mi actividad del lanzador del defecto, pero soy malo.

Yo he tratado:

 ComponentName componentName = new ComponentName( "com.example.exampleactivity", "com.example.exampleactivity.class"); pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP); 

Y:

 PackageManager pm = getActivity().getPackageManager(); ComponentName name = new ComponentName(this, "com.example.exampleactivity.class"); pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); 

Pero mi designación para el hogar nunca se elimina.

¿Alguien tiene una forma de trabajo para solucionar lo anterior?

Sólo quiero que el botón de inicio sea el predeterminado para una actividad específica, no toda mi aplicación. Cuando dejo la actividad, se debe quitar y restaurar a predeterminado.

Si es tu aplicación que estás borrando sus valores predeterminados, puedes simplemente llamar a:

 getPackageManager().clearPackagePreferredActivities(getPackageName()); 

Entonces, para mostrar el diálogo de elegir qué lanzador utilizar, utilice:

 final Intent intent=new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); 

Esta solución es una forma inteligente de hacerlo: Limpiar y configurar la aplicación de inicio por defecto

El código en onResume () básicamente va como esto:

  ComponentName componentName = new ComponentName(MyActivity.this, FakeHome.class); if (!isMyLauncherDefault()) { Log.e(TAG, "MyActivity is not default home activity!"); // toggle fake activity PackageManager pm = getPackageManager(); int flag = ((pm.getComponentEnabledSetting(componentName) == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED : PackageManager.COMPONENT_ENABLED_STATE_ENABLED); pm.setComponentEnabledSetting(componentName, flag, PackageManager.DONT_KILL_APP); // start home activity to enable chooser Intent selector = new Intent(Intent.ACTION_MAIN); selector.addCategory(Intent.CATEGORY_HOME); startActivity(selector); } 

Y el método isMyLauncherDefault () se toma de aquí: Cómo comprobar si mi aplicación es el lanzador por defecto

No puede anular el comportamiento de la clave de inicio para adaptarse a su aplicación; Esta es una decisión de diseño de Google, para garantizar que el usuario siempre puede volver a una ubicación estática. Puede haber algunas maneras alrededor de esto (si todavía existen) pero son bugs no deseados que una aplicación no debe confiar encendido.

La respuesta corta: puede tener cualquier tecla excepto la tecla de inicio.

Echa un vistazo al permiso android.permission.SET_PREFERRED_APPLICATIONS . También este método http://developer.android.com/reference/android/content/pm/PackageManager.html#clearPackagePreferredActivities(java.lang.String)

  • ¿Cómo visible / invisible icono del lanzador en android?
  • Obtener todas las actividades mediante el uso del nombre del paquete
  • Cambiar información de la aplicación de la aplicación del gestor de paquetes en android
  • ¿Es persistente PackageManager.getComponentEnabledSettings () entre arranques en frío?
  • Diferencia entre el comando "install" de adb y el comando "pm install"?
  • Android ocultar / mostrar el icono de la aplicación mediante programación
  • Cómo cambiar el tema de otro recurso de la aplicación en android?
  • Cómo encontrar el nombre del paquete que se ha desinstalado cuando se utiliza Intent.ACTION_PACKAGE_REMOVED
  • ¿Qué significa esto: Fallo ?
  • ¿Qué es InstallerPackageName cuando la aplicación está en fase de "publicación pendiente" y se utiliza / revisa por los evaluadores / probadores (Google Play Store)?
  • Llamar al receptor de difusión al momento de desinstalar la aplicación en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.