Comment puis-je utiliser PackageManager.addPreferredActivity()?

Dans le SDK 1.5 j'ai été en utilisant le PackageManager classe pour définir le préféré de l'écran d'accueil à mon application en utilisant PackageManager.addPackageToPreferred(). Dans le nouveau SDK (à l'aide d'2.1), de ce qui a été déprécié, donc je suis en train d'utiliser addPreferredActivity() pour le même résultat, mais il ne fonctionne pas comme prévu.

Quelques informations de base nécessaires. Je suis en train d'écrire un verrouillage de l'écran de remplacement app donc je veux la touche d'accueil pour le lancement de mon application (qui est déjà en cours d'exécution, donc avoir l'effet de la désactivation de la clé). Lorsque l'utilisateur "débloque" l'écran j'ai l'intention de restaurer le mappage de sorte que tout fonctionne comme d'habitude.

Dans mon AndroidManifest.xml j'ai:

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

Dans mon code j'ai le code suivant:

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

Le comportement qui en résulte est que l'application sélecteur vient quand j'appuie sur la touche Home, ce qui indique que le clearPackagePreferredActivities() appel a travaillé, mais mon application n'a pas ajouté de préférence. Aussi, la première ligne dans le journal ci-dessous dit quelque chose à propos de "chute d'activité préféré de l'Intention":

04-06 02:34:42.379: INFO/PackageManager(1017): ensemble de résultats changé, à l'abandon d'activité préféré de l'Intention { act=android.l'intention.d'action.PRINCIPALES cat=[android.l'intention.de la catégorie.La MAISON] flg=0x10200000 } type null

04-06 02:34:42.379: INFO/ActivityManager(1017): Démarrage de l'activité: l'Intention { act=android.l'intention.d'action.PRINCIPALES cat=[android.l'intention.de la catégorie.La MAISON] flg=0x10200000 cmp=android/com.android.interne.app.ResolverActivity }

Personne ne sait ce que ce premier message du journal des moyens? Peut-être que je ne suis pas en utilisant l'API correctement, des idées? Toute aide serait grandement appréciée.

  • Beaucoup de détails sur la question. J'espère que vous obtenez votre réponse. Bienvenue à Débordement de Pile.
InformationsquelleAutor afonseca | 2010-04-06