我写了两个不同的应用程序,我们称之为appa和appb。我正试图使用一个意图从appb在appa中启动一个活动。我正试图以明确的意图来完成这件事。
在appb中,我创建这样的意图:
ComponentName cn = new ComponentName("com.example.user.appa",
"appaActivity");
Intent infoIntent = new Intent();
infoIntent.setComponent(cn);
infoIntent.setAction("com.example.DO_SOMETHING");
infoIntent.putStringArrayListExtra("arrList", incInfo);
startActivity(infoIntent);
在appa的androidmanifest.xml中,我包含了以下内容:
<activity
android:name=".appaActivity"
android:label="@string/title_activity">
<intent-filter>
<action android:name="com.example.DO_SOMETHING"/>
</intent-filter>
</activity>
当我尝试运行appb(它将意图发送到appa)时,会出现以下错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.appb/com.example.user.appb.MainActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.user.appa/appaActivity}; have you declared this activity in your AndroidManifest.xml?
因为我可以清楚地看到我在appa androidmanifest.xml中定义了appactivity,有人能告诉我我可能忽略了什么吗?
最佳答案
在appb的componentname对象中,我没有提供类名的完整路径,因为我没有意识到这是必要的。一旦我加上它,它就像一个符咒。
更正的组件名称:
ComponentName cn = new ComponentName("com.example.user.appa",
"com.example.user.appa.appaActivity");