gpt4 book ai didi

android - 调用另一个应用程序的 Activity 时出现 ActivityNotFoundException

转载 作者:搜寻专家 更新时间:2023-11-01 08:10:44 32 4
gpt4 key购买 nike

当使用 Eclipse 的模拟器从应用程序调用另一个应用程序的 Activity 时,我不断收到“ActivityNotFoundException:无法找到明确的 Activity 类...”。也许问题可能与我在“设置”中单击“管理应用程序”时无法同时下载/找到两个应用程序有关。这是我需要调用另一个应用程序 Activity 的第一个项目。但我也不确定代码是否正确。请帮助我确定我在下面提供的代码 fragment 中是否存在错误。暗示我可以设置 Intent 的行动领域来实现目标,但还没有找到这方面的学习 Material 。我了解了如何在调用应用程序中使用 setComponent 方法并将 android:export 添加到被调用 Activity 的 AndroidManifest.xml 中。提前致谢!

调用app相关源码:

Intent intent = new Intent();                
intent.setComponent(new ComponentName("com.MyPackage", om.MyPackage.Activity1));
startActivity(intent);

调用app相关的AndroidManifest.xml:

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".Activity1">
<intent-filter>
<action android:name="com.MyPackage.Activity1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

</application>

另一个应用的activity的AndroidManifest.xml相关代码

<activity android:name=".Activity1" android:exported = "true">          
<intent-filter>
<action android:name="com.MyPackage.Activity1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

最佳答案

首先指出,您正试图从 Application1 中的 Activity 启动 Application2 中的 Activity

  • 你必须给他们单独的命名空间
    • 两个应用程序现在都有 com.MyPackage.* 前缀
  • OR 使用名称 Activity1Activity2

所以你会有

com.MyPackage1.Activity1
// and
com.MyPackage2.Activity1

然后您可以使用此代码,从 MyPackage1 启动 MyPackage2 中的 Activity1。

// in file com.MyPackage1.Activity1
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.MyPackage2", "com.MyPackage2.Activity1"));
startActivity(intent);

您的 AndroidManifest.xml 文件应如下所示:

首先

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="com.MyPackage1.Activity1"
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>

第二个

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="com.MyPackage2.Activity1"
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>

查看相关的 SO 问题:
How to start activity in another application?

关于android - 调用另一个应用程序的 Activity 时出现 ActivityNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9896435/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com