Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getPackageManager()导致的空指针异常_Java_Android_Android Studio_Nullpointerexception_Google Cloud Messaging - Fatal编程技术网

Java getPackageManager()导致的空指针异常

Java getPackageManager()导致的空指针异常,java,android,android-studio,nullpointerexception,google-cloud-messaging,Java,Android,Android Studio,Nullpointerexception,Google Cloud Messaging,因此,我正试图在的帮助下实现gcm或我的应用程序。但是,在尝试启动应用程序时,出现以下错误: java.lang.RuntimeException: An error occured while executing doInBackground() Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.cont

因此,我正试图在的帮助下实现gcm或我的应用程序。但是,在尝试启动应用程序时,出现以下错误:

 java.lang.RuntimeException: An error occured while executing doInBackground()
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
以下是相关代码:

private static int getAppVersion(Context context) {
        try {
            PackageInfo packageInfo = context.getPackageManager()
                    .getPackageInfo(context.getPackageName(), 0);
            return packageInfo.versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            // should never happen
            throw new RuntimeException("Could not get package name: " + e);
        }
    }
我犯了什么错

编辑:我使用“getAppVersion”的地方:

我从哪里开始getRegistrationId: 在onCreate方法中

if (checkPlayServices()) {
            gcm = GoogleCloudMessaging.getInstance(this);
            regid = getRegistrationId(context);

            if (regid.isEmpty()) {
                registerInBackground();
            }
        } else {
            Log.v(TAGD, "No valid GPS APK found.");
        }

请显示您在何处以及如何调用
getAppVersion()
。好的,用包含getAppVersion的代码片段编辑了我的答案,实际上没有多大帮助。
context
来自哪里?它可能是
null
,或者尚未准备好使用(例如,您正在从活动或服务的数据成员初始值设定项调用它)。。。。现在显示您正在调用的
storeRegistrationId
。在某个时刻传递空上下文-我注意到文档有点不完整-在他们的示例中,他们传递的是
上下文
,但从未显示它是如何获得的。“上下文只是在类中定义为上下文上下文上下文”-您在哪里给它赋值?
private void storeRegistrationId(Context context, String regId) {
        final SharedPreferences prefs = getGCMPreferences(context);
        int appVersion = getAppVersion(context);
        Log.i(TAGD, "Saving regId on app version " + appVersion);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString(PROPERTY_REG_ID, regId);
        editor.putInt(PROPERTY_APP_VERSION, appVersion);
        editor.apply();
    }
if (checkPlayServices()) {
            gcm = GoogleCloudMessaging.getInstance(this);
            regid = getRegistrationId(context);

            if (regid.isEmpty()) {
                registerInBackground();
            }
        } else {
            Log.v(TAGD, "No valid GPS APK found.");
        }