Wenn bei Ihnen der Fehler "Berechtigungsverweigerung: Absicht starten ..." auftritt oder wenn die App beim Starten der App ohne Grund abstürzt, verwenden Sie diesen einzeiligen Code in Manifest
android:exported="true"
Bitte seien Sie vorsichtig mit finish (); Wenn Sie es verpasst haben, wird die App eingefroren. Wenn es erwähnt wird, wäre die App ein reibungsloser Launcher.
finish();
Die andere Lösung funktioniert nur für zwei Aktivitäten, die sich in derselben Anwendung befinden. In meinem Fall kennt Anwendung B die Klasse com.example.MyExampleActivity.class
im Code nicht, sodass die Kompilierung fehlschlägt.
Ich habe im Internet gesucht und unten so etwas gefunden, und es funktioniert gut.
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);
Sie können auch die setClassName-Methode verwenden:
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();
Sie können die Werte auch von einer App an eine andere App übergeben:
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();
}
android:exported
XML-Attribut ist,true
wenn ein Absichtsfilter vorhanden ist.com.examplea.MainActivityA
undcom.exampleb.MainActivityB
. Von MainActivityA aus führe ich Ihr Code-Snippet mit den Zeichenfolgen "com.exampleb" und "com.exampleb.MainActivityB" aus. Allerdings bekomme ich geradeandroid.content.ActivityNotFoundException: Unable to find explicit activity class {com.exampleb/com.exampleb.MainActivityB}; have you declared this activity in your AndroidManifest.xml?
Wenn beide Anwendungen dieselbe Signatur haben (dh beide APPS gehören Ihnen und mit demselben Schlüssel signiert sind), können Sie Ihre andere App-Aktivität wie folgt aufrufen:
Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME); startActivity(LaunchIntent);
Ich hoffe es hilft.
quelle