从另一个开始申请

时间:2015-01-29 18:48:47

标签: android android-intent

我正在开发两个应用程序,AppA和AppB,我想从AppA启动AppB。

在AppA中,我正在使用

Intent initIntent = getPackageManager().getLaunchIntentForPackage("com.example.appB.ActivityB");

在AppB中,我在清单文件中添加了一个intent过滤器:

<activity
            android:name="com.example.appB.ActivityB"
            android:label="@string/title_activity_init" >
            <intent-filter>
                <action android:name="com.example.appB.ActivityB" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

但是我在intent上得到了一个java.lang.NullPointerException ... 任何想法都会受到欢迎。

2 个答案:

答案 0 :(得分:0)

您正试图在Activity中指定Intent,即使您要创建一个Intent来启动套餐;这不是必要的。只需从您的Activity中移除Intent,就像这样:

Intent initIntent = getPackageManager().getLaunchIntentForPackage("com.example.appB");

然后确保在启动应用程序时希望启动的Activity中包含以下两行:

<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

它们应该已经存在于您的主Activity,尽管您似乎错过了ActivityB中的android.intent.action.MAIN意图过滤器。

答案 1 :(得分:0)

this API

完成了您的意图过滤器
  

当前实现首先查看CATEGORY_INFO类别中的主要活动,然后查看CATEGORY_LAUNCHER类别中的主要活动。如果两者都找不到,则返回null。

因此,您需要修改活动B的意图过滤器以包含:

<action android:name="android.intent.action.MAIN" />