studio permission name manifests internet exported definicion cleartaskonlaunch activity access_superuser android

manifests - uses permission android name android permission access_superuser/>



¿Cómo lanzo programáticamente una aplicación específica en Android? (8)

Quiero lanzar una aplicación específica. Sé cómo hacer intenciones, pero quiero evitar el menú de selección si hay varias aplicaciones que pueden manejar la intención, quiero ir directamente a una aplicación en particular. Espero que esto tenga sentido.


Debe utilizar la función del gestor de paquetes.

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 }


He resuelto el problema por

String packageName = "Your package name"; Intent intent = getPackageManager().getLaunchIntentForPackage(packageName); if(intent == null) { try { // if play store installed, open play store, else open browser intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName)); } catch (Exception e) { intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)); } } startActivity(intent);


La actividad a la que llama debe aparecer no solo en el Manifiesto para su propio paquete, sino también en el Manifiesto para el paquete de LLAMADAS. - ¡No lo olvides!


Utiliza el nombre del paquete / clase directamente, por ejemplo, para crear una nueva intención de llamar al programa twidroid que usaría el siguiente texto de enlace :

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

Probablemente querrá poner un try / catch alrededor de una excepción ActivityNotFoundException para cuando la aplicación no esté instalada.


Yo suelo:

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

Pero como Cami sugirió que esto funcionará también:

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


en el método oncreate llamada => openApp (); método

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


Digamos que quieres abrir Wonder Clock desde tu aplicación

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

El campo id / nombre del paquete es de nuestro interés = ganesha.diva.app.wonderclock.free

El Administrador de paquetes realiza un seguimiento de las aplicaciones instaladas en el dispositivo y mantiene la lista de los paquetes. Por lo tanto, cualquier cosa relacionada con las aplicaciones instaladas en el dispositivo, debe consultarse el Administrador de paquetes.

La identificación del paquete o el nombre del paquete es único en todo el mundo, por lo que puede utilizarse para verificar la existencia del paquete / aplicación en el dispositivo.

Para abrir el Wonder Clock desde tu aplicación

  • Pregunte a Package Manager, para la actividad del iniciador del nombre del paquete dado

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

  • Compruebe si existe actividad del iniciador o no if(intent != null) continue... contrario, la aplicación no está instalada en el dispositivo. Lleve al usuario a la URL.
  • Agregue los indicadores necesarios a la intención intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  • iniciar la actividad startActivity(intent);

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