Voglio avviare un pacchetto installato dalla mia applicazione Android. Presumo che sia possibile utilizzare gli intent, ma non ho trovato il modo di farlo. C'è un link, dove trovare le informazioni?Avviare un'applicazione da un'altra applicazione su Android
risposta
Se si conoscono i dati e l'azione su cui il pacchetto installato reagisce, è sufficiente aggiungere queste informazioni all'istanza di intenti prima di avviarla.
Se si ha accesso a AndroidManifest dell'altra app, è possibile visualizzare tutte le informazioni necessarie lì.
Grazie per la risposta. Sì, ho AndroidManifest dell'altra applicazione. Quello che provo a fare ora è il seguente codice: Intent intent = new Intent (Intent.ACTION_MAIN); intent.setComponent (new ComponentName ("com.package", ". MainActivity")); startActivity (intento); ma in questo modo non funziona. Puoi darmi un link più preciso, come farlo? – Bastian
Qual è il messaggio di errore che hai nel tuo LogCat? – WarrenFaith
L'applicazione si arresta in modo anomalo alla riga "startActivity ...": l'applicazione si è arrestata in modo imprevisto. Si prega di riprovare. Dove posso vedere l'errore in LogCat? – Bastian
Ho trovato la soluzione. Nel file manifest dell'applicazione ho trovato il nome del pacchetto: com.package.address e il nome dell'attività principale che voglio lanciare: MainActivity Il codice seguente avvia questa applicazione:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.package.address","com.package.address.MainActivity"));
startActivity(intent);
Se don Conosce l'attività principale, quindi il nome del pacchetto può essere utilizzato per avviare l'applicazione.
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
if (launchIntent != null) {
startActivity(launchIntent);//null pointer check in case package name was not found
}
Mi ha salvato un sacco di tempo, grazie e +1! – Justin
Alcun motivo per spiegare perché non funzionerebbe? Almeno non l'ho fatto funzionare. –
Inizia una nuova intenzione, che ne dici di riprendere l'applicazione che si trova in background? –
So che questo è stato risposto, ma ecco come ho implementato qualcosa di simile:
Intent intent = getPackageManager().getLaunchIntentForPackage("com.package.name");
if (intent != null) {
// We found the activity now start the activity
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} else {
// Bring user to the market or let them choose an app?
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id=" + "com.package.name"));
startActivity(intent);
}
Ancora meglio, qui è il metodo:
public void startNewActivity(Context context, String packageName) {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
if (intent != null) {
// We found the activity now start the activity
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} else {
// Bring user to the market or let them choose an app?
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id=" + packageName));
context.startActivity(intent);
}
}
codice duplicato Rimosso:
public void startNewActivity(Context context, String packageName) {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
if (intent == null) {
// Bring user to the market or let them choose an app?
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + packageName));
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
Ho riscontrato un problema durante l'avvio di un'intenzione su un profilo Facebook o Twitter. Si stavano aprendo all'interno della mia app, invece che come una nuova attività. L'aggiunta di FLAG_ACTIVITY_NEW_TASK ha risolto questo problema. Grazie! – Harry
Nessun problema! Avevo problemi con qualcosa di molto simile –
Il metodo funziona per me, ma a volte la nuova applicazione è aperta e l'attività di chiamata è ancora in primo piano. Qualche idea su come risolvere? – lgdroid57
Qui è il mio esempio di lanciare scanner codice a barre/QR dalla mia applicazione se qualcuno trova utile
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
try
{
startActivityForResult(intent, SCAN_REQUEST_CODE);
}
catch (ActivityNotFoundException e)
{
//implement prompt dialog asking user to download the package
AlertDialog.Builder downloadDialog = new AlertDialog.Builder(this);
downloadDialog.setTitle(stringTitle);
downloadDialog.setMessage(stringMessage);
downloadDialog.setPositiveButton("yes",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialogInterface, int i)
{
Uri uri = Uri.parse("market://search?q=pname:com.google.zxing.client.android");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
try
{
myActivity.this.startActivity(intent);
}
catch (ActivityNotFoundException e)
{
Dialogs.this.showAlert("ERROR", "Google Play Market not found!");
}
}
});
downloadDialog.setNegativeButton("no",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int i)
{
dialog.dismiss();
}
});
downloadDialog.show();
}
// check for the app if it exist in the phone it will lunch it otherwise, it will search for the app in google play app in the phone and to avoid any crash, if no google play app installed in the phone, it will search for the app in the google play store using the browser :
public void onLunchAnotherApp() {
final String appPackageName = getApplicationContext().getPackageName();
Intent intent = getPackageManager().getLaunchIntentForPackage(appPackageName);
if (intent != null) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} else {
onGoToAnotherInAppStore(intent, appPackageName);
}
}
public void onGoToAnotherInAppStore(Intent intent, String appPackageName) {
try {
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id=" + appPackageName));
startActivity(intent);
} catch (android.content.ActivityNotFoundException anfe) {
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName));
startActivity(intent);
}
}
esiste un limite di caratteri per il metodo uri.parse? – API
Procedura per lanciare nuove attività come segue:
1.Get intenti per pacchetto
intento 2.If è user reindirizzamento nullo per playstore
3.If intento non è nullo settore aperto
public void launchNewActivity(Context context, String packageName) {
Intent intent = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.CUPCAKE) {
intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
}
if (intent == null) {
try {
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id=" + packageName));
context.startActivity(intent);
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)));
}
} else {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
// oncreate openApp();
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;
}
Se si desidera aprire un'attività specifica di un'altra applicazione, è possibile utilizzarla.
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
final ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.fuelgauge.PowerUsageSummary");
intent.setComponent(cn);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try
{
startActivity(intent)
}catch(ActivityNotFoundException e){
Toast.makeText(context,"Activity Not Found",Toast.LENGTH_SHORT).show()
}
Se è necessario bisogno di altre applicazioni invece di mostrare Toast si può mostrare una finestra di dialogo, che può portare l'utente a Play-Store.
- 1. Avviare un'applicazione java da un'altra applicazione java
- 2. Come avviare app Android all'interno della mia applicazione in Android?
- 3. Come avviare un'attività Android da un'applicazione Unity?
- 4. Come avviare l'applicazione Android da URL in Android?
- 5. Come avviare Activity da Android AppWidget?
- 6. Android Intent da avviare Attività principale dell'applicazione
- 7. esportare i miei dati su file CSV da applicazione Android
- 8. Applicazione nascosta Android
- 9. Come avviare un'applicazione da un contatto in Android?
- 10. Applicazione Android onLowMemory() su API> = 14
- 11. Come avviare la schermata principale in modo programmatico su Android
- 12. Come avviare il servizio Android da un'altra app Android
- 13. Usa fotocamera USB su applicazione Android
- 14. Applicazione Web offline HTML5 su Android
- 15. crash applicazione nativa su Android L
- 16. Sip Android chiamata applicazione da Contatti/Rubrica
- 17. Avviare un'attività nell'app principale da un modulo Libreria Android
- 18. Ottieni icona da un'altra applicazione Android
- 19. Applicazione offline HTML5 su dispositivi Android
- 20. Android: BroadcastReceiver su installazione/disinstallazione applicazione
- 21. Impossibile avviare Android studio
- 22. lancio di attività da un altro Applicazione per android
- 23. È possibile avviare più servizi da una Applicazione console da Topshelf?
- 24. Come chiamare un'applicazione Android da un'altra applicazione Android
- 25. - Come avviare Android Virtual Device Manager su CLI?
- 26. Applicazione di chat Android per applicazione chat Smack (XMPP)
- 27. Come avviare una chiamata Skype da un'app Android?
- 28. Come avviare il servizio Android all'installazione
- 29. Come avviare correttamente l'attività da PostExecute in Android?
- 30. Android - Come avviare una nuova attività da un'istanza
cosa succede se apro la seconda app dal primo e poi clicco direttamente sull'icona della seconda app, ottengo due istanze dell'app, che è indesiderata. Come gestirlo ?? – Radhey
Possibile duplicato di [Come chiamare un'applicazione Android da un'altra applicazione Android] (http://stackoverflow.com/questions/2728465/how-to-call-one-android-application-from-another-android-application) – Vaikesh