我正在开发两个应用程序,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 ... 任何想法都会受到欢迎。
答案 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)
当前实现首先查看CATEGORY_INFO类别中的主要活动,然后查看CATEGORY_LAUNCHER类别中的主要活动。如果两者都找不到,则返回null。
因此,您需要修改活动B的意图过滤器以包含:
<action android:name="android.intent.action.MAIN" />