当前位置: 代码迷 >> java >> 使用getLaunchIntentForPackage时发生NullPointerException
  详细解决方案

使用getLaunchIntentForPackage时发生NullPointerException

热度:29   发布时间:2023-07-17 20:51:39.0

我正在尝试使用以下代码来启动第三方应用程序(这里是启动器):

  Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
            String currentHomePackage = resolveInfo.activityInfo.packageName;
            openApp(getApplicationContext(),currentHomePackage);

openApp:

public static boolean openApp(Context context, String packageName) {
    PackageManager manager = context.getPackageManager();
    try {
        Intent i = manager.getLaunchIntentForPackage(packageName);
        if (i == null) {

            return false;
            //throw new PackageManager.NameNotFoundException();
        }
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        context.startActivity(i);
        return true;
    } catch (Exception e) {

        return false;
    }
}

但是我得到了NullPointerException 该代码正确获取了我的启动程序包名称,但是我无法打开它! 请帮助我,不要给我负面分数!

日志猫:

07-30 18:59:47.206  16079-16079/ir.whiteapp.keepme E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at ir.whiteapp.keepme.AlertBox.openApp(AlertBox.java:80)
        at ir.whiteapp.keepme.AlertBox$1.onClick(AlertBox.java:52)
        at android.view.View.performClick(View.java:4204)
        at android.view.View$PerformClick.run(View.java:17355)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)

不需要getLaunchIntentForPackage()返回任何内容。 引用 :

返回:可用于启动包中主要活动的完全限定的Intent。 如果程序包不包含这样的活动,或者如果不能识别packageName,则返回null。

特别是,主屏幕实现不需要启动IntentACTION_MAIN / CATEGORY_LAUNCHER ),因为通常其他主屏幕实现不会启动它。

  相关解决方案