android - 从 Android 应用程序 A,如何在应用程序 B 中打开非主要 Activity ?

标签 android android-intent android-activity

我有应用 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/

相关文章:

android - 如何删除某些字段中具有重复数据的连续行(在 SQLite 中)?

android - Android Studio中如何使用Gradle生成JavaDoc?

android - 在 Android 中获取我调用的号码

java - 如何在恢复状态时填充 EditText 数据?

java - 查看强制纵向模式的变化

android - 选择器 Intent - 从图库或相机中选择

java - Activity.class 和 Class 类的区别

java - Activity 应该只在手机中的应用程序第一次运行时运行一次

Android onResume 更新列表适配器

android - 如何重新映射蓝牙游戏 handle 上的按键