3

好的,我想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?

注意:我确实安装了带有 packagecom.test.app和 activity的应用程序TestActivity。那么这怎么可能呢?

4

4 回答 4

2

First, you must make sure that the target activity is exported. It must be exported explicitly with android:export="true", or implicitly, with an intent-filter. You can't send an Intent to any random Activity of any app.

于 2013-08-17T06:41:14.933 回答
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);
于 2013-08-17T06:45:55.727 回答
0

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

于 2015-03-27T09:37:04.547 回答
0

检查您的设备或模拟器中是否安装了 3rd 方应用程序,然后只有它会给出正确的结果。

于 2013-08-17T07:10:28.513 回答