У меня есть приложение А, определенное ниже:
<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>
Теперь в приложении B, как я могу написать код для запуска активности в приложении A? Спасибо!
Ответ 1
Если вы, ребята, столкнулись с ошибкой "Отказ в разрешении: запуск намерения..." или если приложение без сбоев во время запуска приложения - используйте этот однострочный код в манифесте.
android:exported="true"
Пожалуйста, будьте осторожны с отделкой(); , если вы пропустили его, приложение зависает. если упомянуто, приложение было бы гладким пусковым устройством.
finish();
Другое решение работает только для двух действий, которые находятся в одном приложении. В моем случае приложение B не знает класс com.example.MyExampleActivity.class
в коде, поэтому компиляция не удастся.
Я искал в Интернете и нашел что-то вроде этого ниже, и это работает хорошо.
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);
Вы также можете использовать метод 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();
Вы также можете передать значения из одного приложения в другое:
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();
}
Ответ 2
Если оба приложения имеют одну и ту же подпись (это означает, что оба APPS являются вашими и подписываются одним и тем же ключом), вы можете вызвать свою другую активность приложения следующим образом:
Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME);
startActivity(LaunchIntent);
Надеюсь, что это поможет.
Ответ 3
Допустим, вы хотите перейти от activiry x из приложения A к действию y из приложения B.
поэтому добавьте это в упражнение x (Приложение A):
//calling an activity using <intent-filter> action name
Intent inent = new Intent("com.hmkcode.android.another.app.ANOTHER_ACTIVITY");
startActivity(inent);
Теперь добавьте этот фильтр намерений в манифест действия y (приложение B)
<intent-filter>
<action android:name="com.hmkcode.android.another.app.ANOTHER_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Более подробная информация и объяснение здесь в этой ссылке