J'ai l'application A définie comme ci-dessous:
<application Android:icon="@drawable/icon" Android:label="@string/app_name">
<activity Android:name="com.example.MyExampleActivity"
Android:label="@string/app_name">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Maintenant, dans l'application B, comment puis-je écrire le code pour démarrer l'activité dans l'application A? Merci!
Si vous êtes confrontés à l'erreur "Refus de permission: démarrage de l'intention ..." ou si l'application échoue sans raison lors du lancement de l'application, utilisez ensuite ce code à ligne unique dans Manifest
Android:exported="true"
S'il vous plaît soyez prudent avec la finition (); , si vous avez raté l'application, l'application se fige. si son mentionné, l'application serait un lanceur lisse.
finish();
L'autre solution ne fonctionne que pour deux activités appartenant à la même application. Dans mon cas, l'application B ne connaît pas la classe com.example.MyExampleActivity.class
dans le code, la compilation échouera.
J'ai cherché sur le Web et trouvé quelque chose comme ça ci-dessous, et cela fonctionne bien.
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);
Vous pouvez également utiliser la méthode setClassName:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.hotfoot.rapid.adani.wheeler.Android", "com.hotfoot.rapid.adani.wheeler.Android.view.activities.MainActivity");
startActivity(intent);
finish();
Vous pouvez également transmettre les valeurs d'une application à une autre:
Intent launchIntent = getApplicationContext().getPackageManager().getLaunchIntentForPackage("com.hotfoot.rapid.adani.wheeler.Android.LoginActivity");
if (launchIntent != null) {
launchIntent.putExtra("AppID", "MY-CHILD-APP1");
launchIntent.putExtra("UserID", "MY-APP");
launchIntent.putExtra("Password", "MY-PASSWORD");
startActivity(launchIntent);
finish();
} else {
Toast.makeText(getApplicationContext(), " launch Intent not available", Toast.LENGTH_SHORT).show();
}
Si les deux applications ont la même signature (ce qui signifie que les deux applications sont à vous et sont signées avec la même clé), vous pouvez appeler l'activité de votre autre application comme suit:
Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME);
startActivity(LaunchIntent);
J'espère que ça aide.