如何开展特定的第三方活动?

时间:2013-08-17 06:35:00

标签: android android-intent android-activity

好的我想从应用中打开特定的Activity,而不是我的应用。假设我想打开此包com.test.app并在该包TestActivity内打开。我怎么能这样做?

我试过这样的话:

Intent i = new Intent();
i.setClassName(pack, activity);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(i);

Intent i = new Intent(pack+activity);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(i);

Intent i = new Intent();
i.setClassName(pack, "."+activity);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(i);

Intent i = new Intent(pack+"."+activity);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(i);

所有这些我都有这个错误:

Unable to find explicit activity class {PACKAGE/ACTIVITY}; have your declared this activity in your AndroidManifest.xml?

注意:我的应用已安装了包com.test.app并且活动TestActivity。那怎么可能呢?

4 个答案:

答案 0 :(得分:2)

首先,您必须确保导出目标活动。它必须使用android:export =“true”显式导出,或者使用intent-filter显式导出。您不能将意图发送到任何应用程序的任何随机活动。

答案 1 :(得分:0)

你尝试下面的代码吗?

Intent i = new Intent();// if TestActivity has an action. please add by yourself
i.setClassName("com.test.app", "com.test.app.TestActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// maybe no use here
getApplicationContext().startActivity(i);

答案 2 :(得分:0)

检查您的设备或模拟器中是否安装了第三方应用程序,然后只有它才能提供正确的结果。

答案 3 :(得分:0)

我想你可能还没有在清单文件中声明新的java类。如果没有,那么打开您的清单文件,打开ANdroidmanifest.xml并在标签下面的标签中写下这个