Domanda

Ho applicazione A definita come di seguito:

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

Ora, in applicazione B, come posso scrivere il codice per avviare l'attività in applicazione A? Grazie!

È stato utile?

Soluzione

Se voi ragazzi si trovano ad affrontare "Permesso Denial: a partire Intent ..." errore o se l'applicazione è sempre schianto senza alcun motivo durante il lancio del app - Quindi utilizzare questo codice singola linea nel manifesto

android:exported="true"

Si prega di fare attenzione con finitura (); Se ti sei perso è l'applicazione ottenendo congelato. se menzionato l'applicazione sarebbe un lanciatore liscia.

finish();

L'altra soluzione funziona solo per due attività che sono nella stessa applicazione. Nel mio caso, l'applicazione B non sa classe com.example.MyExampleActivity.class nel codice, in modo da compilare fallirà.

Ho cercato sul web e ho trovato qualcosa di simile al di sotto, e funziona bene.

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);

È inoltre possibile utilizzare il metodo 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();

È anche possibile passare i valori da un'applicazione all'altra app:

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

Altri suggerimenti

Se entrambi applicazione hanno la stessa firma (il che significa che entrambe le applicazioni sono tue e firmato con la stessa chiave), è possibile chiamare il altra attività app come segue:

Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME);
startActivity(LaunchIntent);

Speranza che aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top