En SDK 1.5 Estaba usando la clase PackageManager para configurar la pantalla de inicio preferida para que sea mi aplicación usando PackageManager.addPackageToPreferred(). En el nuevo SDK (usando 2.1) esto ha quedado obsoleto, por lo que estoy tratando de usar addPreferredActivity() para el mismo resultado, pero no está funcionando como se esperaba.¿Cómo uso PackageManager.addPreferredActivity()?
Algunos antecedentes necesarios. Estoy escribiendo una aplicación de reemplazo de la pantalla de bloqueo, por lo que quiero que la tecla de inicio inicie mi aplicación (que ya se ejecutará y, por lo tanto, tendrá el efecto de desactivarla). Cuando el usuario "desbloquea" la pantalla, intento restablecer la asignación para que todo funcione de la forma habitual.
En mi AndroidManifest.xml que tengo:
<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>
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS">
</uses-permission>
En mi código tengo el siguiente fragmento:
// Set as home activity
// This is done so we can appear to disable the Home key.
PackageManager pm = getPackageManager();
//pm.addPackageToPreferred(getPackageName());
IntentFilter filter = new IntentFilter("android.intent.action.MAIN");
filter.addCategory("android.intent.category.HOME");
filter.addCategory("android.intent.category.DEFAULT");
ComponentName[] components = new ComponentName[]
{
new ComponentName("com.android.launcher", ".Launcher")
};
Context context = getApplicationContext();
ComponentName component = new ComponentName(context.getPackageName(),
MyApp.class.getName());
pm.clearPackagePreferredActivities("com.android.launcher");
pm.addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_EMPTY,
components, component);
El comportamiento resultante es que el selector de aplicación aparece cuando pulso el hogar clave, que indica que la llamada clearPackagePreferredActivities() funcionó, pero mi aplicación no se agregó como la preferida. Además, la primera línea del registro de abajo dice algo acerca de "dejar caer la actividad preferida para Intención":
04-06 02: 34: 42.379: INFO/PackageManager (1017): Conjunto de resultados cambió, dejando caer la actividad preferida para Intención {act = android.intent.action.MAIN cat = [android.intent.category.HOME] flg = 0x10200000} escriba null
04-06 02: 34: 42.379: INFO/ActivityManager (1017): Actividad de inicio : Intención {act = android.intent.action.MAIN cat = [android.intent.category.HOME] flg = 0x10200000 cmp = androide/com.android.internal.app.ResolverActivity}
Do ¿Alguien sabe qué significa este primer mensaje de registro? Tal vez no estoy usando la API correctamente, ¿alguna idea? Cualquier ayuda sería muy apreciada.
Gran detalle de la pregunta. Espero que tengas tu respuesta. Bienvenido a Stack Overflow. –