Android getPackageManager()始终返回null

Android getPackageManager()始终返回null,android,Android,我尝试在我的应用程序中启动另一个应用程序 我试过两种方法 方法1 Intent intent = new Intent(Intent.ACTION_MAIN); ComponentName componentName = new ComponentName("com.b_app", "com.b_app.MainActivity"); intent.setComponent(componentName); startActivity(intent); 方法2

我尝试在我的应用程序中启动另一个应用程序

我试过两种方法

方法1

    Intent intent = new Intent(Intent.ACTION_MAIN);
    ComponentName componentName = new ComponentName("com.b_app", "com.b_app.MainActivity");
    intent.setComponent(componentName);
    startActivity(intent);
方法2

        Intent intent =  getPackageManager().getLaunchIntentForPackage("com.b_app");
        if (intent != null) {
            startActivity(intent);//null pointer check in case package name was not found
        }
        else Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
方法1给了我错误:

Unable to find explicit activity class {com.b_app/com.b_app.MainActivity}; have you declared this activity in your AndroidManifest.xml?
方法2Toast显示错误(my else条件),这意味着getPackageManager()返回null

b_应用程序中的我的清单

   <activity android:name="com.b_app.MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

我很确定我的智能手机上安装了b_应用程序

我怎样才能解决它

Toast显示错误(my else条件),这意味着getPackageManager()返回null

不。在这种情况下,您将得到一个
NullPointerException
。在您的情况下,
getLaunchIntentForPackage()
将返回
null


再加上您的其他症状,表明您没有在此设备上安装
applicationId
com.b_app
的应用程序。

在我的情况下,有一点机会见面。。 我的一个应用程序因“getLaunchIntentForPackage”返回null,我发现我的应用程序虽然已安装,但未显示在设备中。。 最近我实现了Firebase动态。。。我的应用程序清单配置错误

这是错误的一个:

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

 </intent-filter>

正确的一个是

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

            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>

            </intent-filter>


如果您错误地实现了应用程序清单,用户将无法安装您的应用程序。。。因为Google Play“Open”按钮应用程序不可见

ok。。。我在b_应用程序中检查我的应用程序ID,它是com.xxxx.xxxx,因此com.b_应用程序已编辑为com.xxxx.xxxx?@achicn3:是。用于
ComponentName
getLaunchIntentForPackage()
的值必须是另一个应用程序的
applicationId