android - GCM 更新 7.5 到 8.3.0 致命异常

标签 android google-cloud-messaging android-notifications

我尝试在我的 Gradle 项目中更新 GCM 服务(Google 云消息)库(从 7.5 到 8.3.0)。 但是现在,有了这个新版本,我无法启动之前运行良好的 Activity 。

处理以下错误的代码是:

Intent in = new Intent(this, MyGcmListenerService.class);
startService(in);

MyGcmListenerService.java :

public class MyGcmListenerService extends GcmListenerService
{
    private static final String TAG = "MyGcmListenerService";

    @Override
    public void onMessageReceived(String from, Bundle data)
    {
        Log.w(TAG, "onMessageReceived");
    }

返回的错误:

FATAL EXCEPTION: AsyncTask #1
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference
E/AndroidRuntime:     at com.google.android.gms.gcm.GcmListenerService.zzo(Unknown Source)
E/AndroidRuntime:     at com.google.android.gms.gcm.GcmListenerService.zza(Unknown Source)
E/AndroidRuntime:     at com.google.android.gms.gcm.GcmListenerService$1.run(Unknown Source)
E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime:     at java.lang.Thread.run(Thread.java:818)

Gradle 文件:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services-gcm:8.3.0'
}

如果我回滚到以前的 GCM 版本 (7.5),它会按预期运行。 你知道发生了什么变化吗?我检查了变更日志,但找不到任何有关它的信息。 https://developers.google.com/android/guides/releases

谢谢你的帮助

最佳答案

尝试使用您的 IDE 查看 GcmListenerService 的反编译类文件。当我使用 8.3.0 版的 Android Studio 执行此操作时,似乎抛出异常的代码试图从调用服务的 Intent 中获取 ACTION。因为您是以明确的 Intent 调用服务,所以 ACTION 为空。

我想知道您为什么要显式调用 GcmListenerService 的子类?消息接收的正常 GCM 处理是将消息传送到 GcmReceiver,然后将其传递到应用程序的 GcmListenerService 实例进行处理。您不应该显式调用您的监听器服务,GcmReceiver 会这样做。看看 sample project .

关于android - GCM 更新 7.5 到 8.3.0 致命异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33692070/

相关文章:

android - Cordova/Phonegap/Ionic - 通过 PushPlugin 接收推送消息并将数据保存到 localStorage,即使用户关闭通知也是如此

android - GCM ACCOUNT_MISSING 错误

android - 如何在Android通知中创建可点击的Textview?

Android:activity.getResources().getConfiguration().orientation 在 Samsung galaxy 设备上返回错误值

java - 广播接收器作为Android中的内部类

android-studio - Android Studio 无法识别 InstanceID 类

java - 如何在互联网连接上显示通知?

安卓通知问题

android - X509TrustManager 接口(interface)的不安全实现 - Google Play 服务

android - 从服务调用时 Activity 重新启动