Cómo iniciar la actividad en otra aplicación?
-
18-09-2019 - |
Pregunta
he aplicación A se define como a continuación:
<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>
Ahora en la aplicación B, ¿cómo puedo escribir el código para iniciar la actividad de aplicación A? Gracias!
Solución
Si ustedes se enfrentan a "Permiso Negación: a partir Intención ..." error o si la aplicación es cada accidente sin ningún motivo durante el lanzamiento de la aplicación - A continuación, utilice el código de una sola línea en el manifiesto
android:exported="true"
Por favor, tenga cuidado con acabado (); Si se ha perdido el cabo que la aplicación consiguiendo congelado. si es mencionado la aplicación sería un lanzador suave.
finish();
La otra solución sólo funciona para las dos actividades que están en la misma aplicación. En mi caso, la aplicación B no sabe com.example.MyExampleActivity.class
clase en el código, por lo compile fallará.
He buscado en la web y encontré algo como esto más adelante, y funciona bien.
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);
También puede utilizar el método 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();
También puede pasar los valores de una aplicación a otra aplicación:
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();
}
Otros consejos
Si tanto la aplicación tiene la misma firma (lo que significa que ambas aplicaciones son suyos y firmaron con la misma clave), puede llamar a su otra actividad en la aplicación de la siguiente manera:
Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME);
startActivity(LaunchIntent);
Espero que ayuda.