当使用Eclipse的模拟器从应用程序调用另一个应用程序的活动时,我不断收到“ActivityNotFoundException:无法找到显式活动类...”。也许问题可能与我在“设置”中单击“管理应用程序”时无法同时下载/找到两个应用程序有关。这是我需要调用另一个应用程序活动的第一个项目。但我不确定代码是否正确。请帮我确定下面的代码段是否有错误。我暗示我可以设定意图的行动领域来实现目标,但没有为此找到学习材料。我学会了在调用应用程序中使用setComponent方法,并将android:export添加到被调用活动的AndroidManifest.xml中。提前致谢!
调用应用程序的相关源代码:
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>
另一个应用程序活动的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>
答案 0 :(得分:4)
首先指出您尝试从Application1中的Activity启动Application2中的Activity
com.MyPackage.*
前缀Activity1
和Activity2
所以你会有
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>