我有应用 A 和应用 B,这两个 APK 都是使用相同的代码库生成的。应用 B 生成的风格与应用 A 不同,因此它们具有不同的 applicationId。
在应用 A 中,我想在应用 B 中启动 Activity1。 这是我正在使用的代码:
Intent intent=new Intent();
intent.setComponent(new ComponentName("com.packagename.appb", "com.packagename.appb.Activity1"));
startActivity(intent);
我遇到了异常
ActivityNotFoundException: Unable to find explicit activity class {com.packagename.appb/com.packagename.appb.Activity1}; have you declared this activity in your AndroidManifest.xml?
但是 Activity1 已经在 list 中声明了,因为它是应用程序 A 中也可用的 Activity
我该怎么办?
最佳答案
如果合适,您可以使用以下方法。 创建启动器 Intent :
Intent intent = getPackageManager().getLaunchIntentForPackage("com.packagename.appb");
将一些数据放入 Intent
检查 MainActivity onStart
方法,如果有数据则移动到所需的 Activity
并最终从 Intent
。例如:
intent.putExtra("activityB", true);
startActivity(intent);
在 B 应用 MainActivity
中:
@Override
protected void onStart() {
super.onStart();
Intent intent = getIntent();
boolean shouldStartB = intent.getBooleanExtra("activityB", false);
if(shouldStartB) {
//start new Activity
intent.removeExtra("activityB"); //Don't forget to remove extra to prevent bug
}
}
关于android - 从 Android 应用程序 A,如何在应用程序 B 中打开非主要 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59453373/