我正在从 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/