GCMをセットアップするために、http://developer.android.com/google/gcm/gs.htmlのチュートリアルに従っています。現在、デバイスを登録しようとしています。ただし、何らかの理由で、アプリケーションは常に gcm = GoogleCloudMessaging.getInstance(this); でクラッシュするようです。
スタックトレースは次を指しているようです: 06-18 13:42:20.909: I/dalvikvm(11613): メソッド com.google.android.gms.gcm.GoogleCloudMessaging.getInstance が見つかりませんでした。メソッド pushNotification.PushNotification$1 から参照されています。走る
ここに私がこれまでに持っているもののサンプルがあります
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;.register ([Ljava/lang/String;)Ljava/lang/String; 06-18 13:42:20.909: D/dalvikvm(11613): VFY: オペコード 0x6e を 0x0039 に置き換えます 06-18 13:42:20.909: D/IN プッシュ通知 (11613): 登録完了..... 06-18 13:42:20.909: D/IN PUSHNOTIFICATION(11613): 登録 ID は: 06-18 13:42:20.909: D/AndroidRuntime(11613): VM 06-18 をシャットダウンしています 13:42:20.909: W/dalvikvm( 11613): threadid=1: キャッチされない例外で終了するスレッド (group=0x2b542210) 06-18 13:42:20.909: D/IN PUSHNOTIFICATION (11613): バックグラウンドで。gcm == NULL 06-18 13:42:20.909: W/dalvikvm(11613): threadid=20: キャッチされない例外で終了するスレッド (group=0x2b542210) 06-18 13:42:20.909: I/Process(11613):信号を送信しています。PID: 11613 SIG: 9 06-18 13:42:20.919: I/ActivityManager(278): プロセス com.