java - 来自 GCM "no empty constructor"错误的 Android 下游消息

标签 java android google-cloud-messaging

我正在从 php 脚本向 Android 应用程序发送一条下游消息。但是接收的 Android 应用程序崩溃了,我在 logcat 上收到“Caused by: java.lang.InstantiationException: can't instantiate class mypackage.myactivity$MyGcmListenerService; noempty constructor”。不过我有一个空的构造函数。这是接收者服务:

public class MyGcmListenerService extends GcmListenerService {
        public static final String UPDATE_COORDINATES = "mypackage.newcoordinate";
        LocalBroadcastManager coordintesupdater;

        public MyGcmListenerService() { super(); }

        @Override
        public void onMessageSent(String msgId) {
            Log.i("the damn message " + msgId, "sent");
            super.onMessageSent(msgId);
        }

        @Override
        public void onDeletedMessages() {
            super.onDeletedMessages();
        }

        @Override
        public void onSendError(String msgId, String error) {
            super.onSendError(msgId, error);
        }

        @Override
        public void onMessageReceived(String from, Bundle data) {

            String message = data.getString("lat") + ", " + data.getString("lon");

            if (message != null && !message.isEmpty()) {
                Intent mIntent = new Intent();
                mIntent.putExtra(UPDATE_COORDINATES, message);
                mIntent.setAction(UPDATE_COORDINATES); //should match the receiver intent filter at the registering
                coordintesupdater.sendBroadcast(mIntent);
            } else {
                Log.i("Received", "empty message");
            }
        }
    }

这是我的 list ,其中明确声明了服务

<service
            android:name=".myactivity$MyGcmListenerService"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>

我整个晚上都在研究这个问题几个小时,但我无法解决它。我认为这个异常(exception)只是广泛的,只是表明存在问题,但未能具体说明。有人能指出我的问题吗?

最佳答案

以此为基础

mypackage.MapActivity$MyGcmListenerService

我假设MyGcmListenerService是一个嵌套类。然而它不是静态的,这意味着它需要类 MapActivity 的实例作为要创建的隐式参数。

如果您不从 MyGcmListenerService 访问 MapActivity,您可以通过将后一个类声明为静态来解决问题:

public static class MyGcmListenerService extends GcmListenerService

关于java - 来自 GCM "no empty constructor"错误的 Android 下游消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32240810/

相关文章:

读取文件时出现 java.nio.file.AccessDeniedException

java - 从 Prim 的 MST 到 Dijkstra SPT 的 Java 算法

android - 我总是收到 1 台设备的不同注册 ID

android - GCM 新推送通知替换 android 中的旧通知数据

java - Viewpager 标签 fragment 和普通 fragment

android - 在 RecyclerView.ViewHolder 中找不到方法 getBindingAdapterPosition()

android - 将文本(或字符)与用户在 edittext for android 中的输入相结合

android - FirebaseUI-Android Auth UI - 如何使用 AuthUI.getInstance().createSignInIntentBuilder() 设置自定义背景图片

java - 错误 : cannot access AbstractSafeParcelable class file for com. google.android.gms.common.internal.safeparcel.AbstractSafeParcelable 未找到

java - 创建 EnityManagerFactory 时出现 NullPointerException