使用显式意图在不同的应用程序中启动活动

时间:2015-02-06 18:52:21

标签: android android-intent explicit-intent

我写了两个不同的应用程序,我们称之为AppA和AppB。我正在尝试使用intent在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中定义了appaActivity,有人能告诉我我可能会忽略的内容吗?

1 个答案:

答案 0 :(得分:4)

在AppB的ComponentName对象中,我没有提供类名的完整路径,因为我没有意识到这是必要的。一旦我补充说,它就像一个魅力。

更正的组件名称:

ComponentName cn = new ComponentName("com.example.user.appa",
    "com.example.user.appa.appaActivity");