Question Comment lancer par programme une application spécifique dans Android?


Je veux lancer une application spécifique. Je sais comment faire des intentions mais je veux éviter le menu de sélection s'il y a plusieurs applications qui peuvent gérer l'intention, je veux aller directement à une application particulière. J'espère que cela a du sens.


29
2017-07-27 12:08


origine


Réponses:


Vous utilisez directement le nom / la classe du package, par exemple pour créer une nouvelle intention d’appeler le programme twidroid que vous utiliseztexte du lien:

 Intent intent = new Intent("com.twidroid.SendTweet");

Vous voudrez probablement mettre un try / catch autour d'une ActivityNotFoundException lorsque l'application n'est pas installée.


25
2017-07-27 12:21



Vous devez utiliser la fonction du gestionnaire de paquets.

Context ctx=this; // or you can replace **'this'** with your **ActivityName.this**
try {
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet");
ctx.startActivity(i);
} catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
}

45
2018-06-29 13:42



Intent intent = new Intent();    
intent.setClassName("package.name", "package.name.LauncherActivityName");
startActivityForResult(intent,REQUEST_CODE);

9
2017-12-01 10:34



L'activité que vous appelez doit apparaître non seulement dans le manifeste de son propre package, mais également dans le manifeste du package CALLING. - n'oublie pas!


4
2018-05-27 10:43



J'utilise:

  try {
       Intent intent = new Intent();    
       intent.setClassName("package.name", "<your_package_name>");
       startActivity(intent);
    } catch (NameNotFoundException e) {
       Log.e(TAG, e.getMessage());
    }

Mais comme Cami a suggéré que cela fonctionnera aussi:

try {
    Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet");
    ctx.startActivity(i);
} catch (NameNotFoundException e) {
     Log.e(TAG, e.getMessage());
}

4
2018-05-19 15:38



dans la méthode oncreate call => openApp (); méthode

private void openApp() {
    String packageName = "com.google.android.gm";
    if (isAppInstalled(activity, packageName))
        startActivity(getPackageManager().getLaunchIntentForPackage(packageName));
    else Toast.makeText(activity, "App not installed", Toast.LENGTH_SHORT).show();
}

public static boolean isAppInstalled(Activity activity, String packageName) {
    PackageManager pm = activity.getPackageManager();
    try {
        pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
    }
    return false;
}

2
2017-10-12 09:21



Disons que vous voulez ouvrir Wonder Clock de votre application

URL: https://play.google.com/store/apps/details?id=ganesha.diva.app.wonderclock.free&hl=fr

le champ id / nom du paquet est de notre intérêt = ganesha.diva.app.wonderclock.free

Le gestionnaire de packages conserve la trace des applications installées sur le périphérique et gère la liste des packages. Donc, tout ce qui concerne les applications installées sur l'appareil, le gestionnaire de packages doit être consulté.

L'identifiant du lot ou le nom du package est unique dans le monde entier. Il peut donc être utilisé pour vérifier l'existence du package / de l'application sur le périphérique.

Ouvrir le Wonder Clock de votre application

  • Demander au gestionnaire de paquets, pour l'activité de lancement du nom de paquet donné

    Intent intent = context.getPackageManager().getLaunchIntentForPackage("ganesha.diva.app.wonderclock.free");

  • Vérifiez si l'activité du lanceur existe ou non if(intent != null) continue... sinon, l'application n'est pas installée sur le périphérique. URL
  • Ajouter les indicateurs requis à l'intention intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  • commencer l'activité startActivity(intent);

1
2018-05-15 10:30