[android] Comment définir le lanceur d'application par défaut par programmation?



0 Answers

La fonction isMyAppLauncherDefault () dans la question ne fonctionne pas toujours pour une raison quelconque. Ce code peut être préférable pour déterminer quel est le package par défaut pour l'écran HOME.

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String currentHomePackage = resolveInfo.activityInfo.packageName;
Question

Je crée une application de lanceur (kiosque) qui sera téléchargeable via google. Lors de la première installation de cette application, l'utilisateur a la possibilité de choisir le lanceur par défaut (le mien ou le stock). J'essaie de le faire manuellement si l'utilisateur ne fait pas de mon application le lanceur par défaut. Je veux que l'utilisateur soit forcé de sélectionner TOUJOURS au lieu de JUST ONCE lorsque cette boîte de dialogue apparaît, sinon la boîte de dialogue continuera à apparaître périodiquement avec un message convivial. C'est ce que j'ai essayé jusqu'ici.

J'ai créé une méthode pour vérifier si mon application est la valeur par défaut

/**
 * method checks to see if app is currently set as default launcher
 * @return boolean true means currently set as default, otherwise false
 */ 
private boolean isMyAppLauncherDefault() {
    final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
    filter.addCategory(Intent.CATEGORY_HOME);

    List<IntentFilter> filters = new ArrayList<IntentFilter>();
    filters.add(filter);

    final String myPackageName = getPackageName();
    List<ComponentName> activities = new ArrayList<ComponentName>();
    final PackageManager packageManager = (PackageManager) getPackageManager();

    packageManager.getPreferredActivities(filters, activities, null);

    for (ComponentName activity : activities) {
        if (myPackageName.equals(activity.getPackageName())) {
            return true;
        }
    }
    return false;
}   

Alors je fais la tentative de lancer le sélecteur

/**
 * method starts an intent that will bring up a prompt for the user
 * to select their default launcher. It comes up each time it is
 * detected that our app is not the default launcher
 */
private void launchAppChooser() {
    Log.d(TAG, "launchAppChooser()");
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

Lorsque je fais cela, je ne reçois pas le choix entre mon application et le lanceur de stock. J'ai essayé d'utiliser startActivity(Intent.createChooser(intent, "Please set launcher settings to ALWAYS")); et j'obtiens les choix entre mon application et le lanceur d'actions, cependant, je n'obtiens pas toujours les options TOUJOURS ou JUST.

Je peux créer une boîte de dialogue personnalisée pour cela au lieu de lancer le sélecteur, mais je dois savoir comment configurer le lanceur d'applications par défaut par programmation. Merci d'avance!




Related