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.
- Obtener una aplicación preferida / predeterminada en Android
- ¿Cómo usar el instalador de paquetes predeterminado (Android) al intentar instalar un APK desde otra aplicación?
- ¿Cómo encontrar aplicaciones instaladas en android?
- Manera de obtener el nombre de etiqueta localizado de PackageManager
- Recibir la lista de aplicaciones recientes y en ejecución sin procesar
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.
- Método de reflexión de Android M freeStorageAndNotify excepción
- Cómo detectar nuevas aplicaciones en un dispositivo Android
- Cómo averiguar si una llamada de Skype está actualmente activa en Android
- Error en Manifest.xml al agregar PACKAGE_USAGE_STATS
- No se pueden obtener filtros de intenciones de un paquete
- ¿Hay una manera de mantener los meta-datos en el manifiesto de Android privados al paquete?
- Obtener minSdkVersion y targetSdkVersion del archivo apk
- Obtener el nombre de la aplicación activa en Android
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)
- Ocultar sólo la barra de acciones en las pestañas de la barra de acción de desplazamiento no
- Cierre de la navegación en el inicio de la aplicación