我正在关注这里的教程http://developer.android.com/google/gcm/gs.html http://developer.android.com/google/gcm/gs.html为了设置 GCM。
我目前正在尝试注册设备。
然而,由于某种原因,应用程序似乎总是崩溃
gcm = GoogleCloudMessaging.getInstance(this);
堆栈跟踪似乎指向以下内容:
06-18 13:42:20.909:I / dalvikvm(11613):找不到方法com.google.android.gms.gcm.GoogleCloudMessaging.getInstance,从方法pushNotification.PushNotification$1.run引用
这是我迄今为止所拥有的示例
public PushNotification(Context c, Activity activity)
{
context = c;
this.activity = activity;
regid = getRegistrationId(context);
if (regid.length() == 0) {
Log.d("IN PUSHNOTIFICATION ","NOT REGISTERED. REGISTERING NOW.....");
registerBackground();
}
Log.d("IN PUSHNOTIFICATION ","REGISTRATION COMPLETE.....");
Log.d("IN PUSHNOTIFICATION ","REGISTRATION ID IS: " + regid);
gcm = GoogleCloudMessaging.getInstance(activity); //never reaches this code
}
private void registerBackground() {
Thread thread = new Thread(new Runnable()
{
public void run()
{
String msg = "";
try {
if (gcm == null) {
Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. gcm == NULL");
gcm = GoogleCloudMessaging.getInstance(context);
Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. AFTER gcm.GETINSTANCE");
}
Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. BEFORE gcm.register");
regid = gcm.register(SENDER_ID);
msg = "Device registered, registration id=" + regid;
Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. regid == " + regid);
// You should send the registration ID to your server over HTTP,
// so it can use GCM/HTTP or CCS to send messages to your app.
// For this demo: we don't need to send it because the device
// will send upstream messages to a server that echo back the message
// using the 'from' address in the message.
// Save the regid - no need to register again.
setRegistrationId(context, regid);
} catch (IOException ex) {
Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. EXCEPTION ERROR ERROR: ex = " + ex.getMessage());
msg = "Error :" + ex.getMessage();
}
}
}
);
thread.start();
}
这是完整的堆栈跟踪
06-18 13:42:20.909:D/IN 推送通知 (11613):未注册。
立即注册...... 06-18 13:42:20.909:I/dalvikvm(11613):无法
查找方法
com.google.android.gms.gcm.GoogleCloudMessaging.getInstance,
从方法pushNotification.PushNotification$1.run 引用 06-18
13:42:20.909:W/dalvikvm(11613):VFY:无法解析静态方法
5967: Lcom/google/android/gms/gcm/GoogleCloudMessaging;.getInstance
(Landroid/content/Context;)Lcom/google/android/gms/gcm/GoogleCloudMessaging;
06-18 13:42:20.909: D/dalvikvm(11613): VFY: 替换操作码 0x71
0x0015 06-18 13:42:20.909: I/dalvikvm(11613): 找不到方法
com.google.android.gms.gcm.GoogleCloudMessaging.register,引用
来自方法pushNotification.PushNotification$1.run 06-18
13:42:20.909:W/dalvikvm(11613):VFY:无法解析虚拟方法
5969: Lcom/google/android/gms/gcm/GoogleCloudMessaging;.注册
([Ljava/lang/String;)Ljava/lang/String; 06-18 13:42:20.909:
D/dalvikvm(11613):VFY:替换 0x0039 06-18 处的操作码 0x6e
13:42:20.909:D/IN 推送通知(11613):注册完成......
06-18 13:42:20.909:D/IN 推送通知 (11613):注册 ID 是:
06-18 13:42:20.909: D/AndroidRuntime(11613): 关闭虚拟机 06-18
13:42:20.909: W/dalvikvm(11613): threadid=1: 线程退出
未捕获的异常(组=0x2b542210)06-18 13:42:20.909:D/IN
推送通知 (11613):在后台。 gcm==NULL 06-18
13:42:20.909: W/dalvikvm(11613): threadid=20: 线程退出
未捕获的异常(组=0x2b542210)06-18 13:42:20.909:
I/Process(11613):发送信号。 PID:11613 SIG:9 06-18
13:42:20.919:I/ActivityManager(278):进程 com.gotoohlala(pid
11613)已经去世。
我解决了这个问题。
虽然我链接到 google-play-services_lib 项目,但我还必须将 jar 文件 google-play-services_lib.jar 添加到项目中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)