2013-09-26 108 views
0
  1. import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import static com.example.gcm_id.CommonUtilities.SENDER_ID;逆向GCM註冊ID但運行時錯誤發生

      import com.google.android.gcm.GCMRegistrar; 
    
          public class MainActivity extends Activity { 
          private String TAG = "** pushAndroidActivity **"; 
          private TextView mDisplay; 
          //static final String SENDER_ID ="628298704769"; 
          @Override 
          public void onCreate(Bundle savedInstanceState) { 
    
           super.onCreate(savedInstanceState); 
           checkNotNull(SENDER_ID,"SENDER_ID"); 
           //Log.v(TAG, "GCMRegistrar"); 
           GCMRegistrar.checkDevice(this); 
           GCMRegistrar.checkManifest(this); 
    
           setContentView(R.layout.activity_main); 
    
           mDisplay = (TextView) findViewById(R.id.display); 
    
    
           final String regId = GCMRegistrar.getRegistrationId(this); 
           Log.i(TAG, "registration id ===== "+regId); 
           if (regId.equals("")) 
           { 
            GCMRegistrar.register(this, SENDER_ID); 
           } 
           else 
           { 
            Log.v(TAG, "Already registered"); 
           } 
           mDisplay.setText("ffffff"+regId); 
          } 
    
    
    
          //   final String regId = GCMRegistrar.getRegistrationId(this); 
          //   Log.i(TAG, "registration id ===== "+regId); 
          //   
          //   if (regId.equals("")) { 
          //   GCMRegistrar.register(this, SENDER_ID); 
          //   } else { 
          //   Log.v(TAG, "Already registered"); 
          //   } 
          //   
          //   mDisplay.setText("ffffff "+regId); 
          //  
          //  } 
    
          private void checkNotNull(Object reference, String name) { 
           if (reference == null) { 
            throw new NullPointerException(getString(R.string.hello_world, name, name)); 
    
           } 
          } 
    
          @Override 
          protected void onPause() { 
           super.onPause(); 
           GCMRegistrar.unregister(this); 
          } 
    
    
    
    
    
    
          } 
    
    
    
    
    
    
    
    
    
    
    
        GCMBaseintentservice:- 
    
         package com.example.gcm_id; 
    
         import android.content.Context; 
         import android.content.Intent; 
         import android.util.Log; 
         import static com.example.gcm_id.CommonUtilities.SENDER_ID; 
         import com.google.android.gcm.GCMBaseIntentService; 
    
         public class GCMIntentService extends GCMBaseIntentService { 
         //static final String SENDER_ID = "628298704769"; 
         public GCMIntentService() { 
          super(SENDER_ID); 
         } 
    
         private static final String TAG = "===GCMIntentService==="; 
    
    
         @Override 
         protected void onRegistered(Context arg0, String registrationId) { 
          Log.i(TAG, "Device registered: regId = " + registrationId); 
         } 
    
         @Override 
         protected void onUnregistered(Context arg0, String arg1) { 
          Log.i(TAG, "unregistered = "+arg1); 
         } 
    
         @Override 
         protected void onMessage(Context arg0, Intent arg1) { 
          Log.i(TAG, "new message= "); 
         } 
    
         @Override 
         protected void onError(Context arg0, String errorId) { 
          Log.i(TAG, "Received error: " + errorId); 
         } 
    
         @Override 
         protected boolean onRecoverableError(Context context, String errorId) { 
          return super.onRecoverableError(context, errorId); 
         } 
    
         } 
    
        String KEY:= 
    
        public final class CommonUtilities { 
    
    static final String SENDER_ID = "628298704769"; } 
    

    錯誤LOG_CAT OUTPUT

    10-01 13:11:33.897:d/AndroidRuntime(1473):關閉VM 10-01 13:11:33.897:W/dalvikvm(1473): E/AndroidRuntime(1473):致命例外:main 10-01 13:11:33.967: E/AndroidRuntime() 1473):java.lang.RuntimeException:無法啓動 活動 ComponentInfo {com.example.gcm_id/com.example.gcm_id.MainActivity}: java.lang.Unsup portedOperationException:設備沒有 package com.google.android.gsf 10-01 13:11:33.967: E/AndroidRuntime(1473):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 10 -01 13:11:33.967:E/AndroidRuntime(1473):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 10-01 13:11:33.967:E/AndroidRuntime(1473):at Android.app.ActivityThread.access $ 2300(ActivityThread.java:125) 10-01 13:11:33.967:E/AndroidRuntime(1473):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033) 10-01 13:11:33.967:E/AndroidRuntime(1473):at android.os.Handler.dispatchMessage(Handler.java: 99)10-01 13:11:33.967:E/AndroidRuntime(1473):at android.os.Looper.loop(Looper.java:123)10-01 13:11:33.967: E/AndroidRuntime(1473) ):at android.app.ActivityThread.main(ActivityThread.java:4627)10-01 13:11:33.967:E/AndroidRuntime(1473):at java.lang.reflect.Method.invokeNative(Native Method) 10-01 13:11:33.967:E/AndroidRuntime(1473):在 java.lang.reflect.Method.invoke(Method.java:521)10-01 13:11:33.967: E/AndroidRuntime(1473) ):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868) 10-01 13:11:33.967:E/AndroidRuntime(1473):at com.android.internal.os .ZygoteInit.main(ZygoteI E/AndroidRuntime(1473):at dalvik.system.NativeStart.main(本地方法)10-01 13:11:33.967: E/AndroidRuntime(本機方法)10-01 13:11:33.967: E/1473):導致: java.lang.UnsupportedOperationException:設備沒有 com.google.android.gsf包10-01 13:11:33.967: E/AndroidRuntime(1473):在 com.google.android .gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:98) 10-01 13:11:33.967:E/AndroidRuntime(1473):at com.example.gcm_id.MainActivity.onCreate(MainActivity.java:21) 01 13:11:33.967:E/AndroidRuntime(1473):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 10-01 13: 11:33.967:E/AndroidRuntime(1473):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 10-01 13:11:33.967:E/AndroidRuntime(1473):...11多

+0

您需要expain您的問題時/如何分給logcat的輸出。 – cYrixmorten

+0

如果我評論此代碼GCMRegistrar.checkDevice(this)代碼已經運行..但註冊ID沒有給出... – aslam

+0

您仍然需要發佈錯誤輸出。否則無法猜測錯誤的來源。 – cYrixmorten

回答

0

刪除了答案,因爲它是所有具體的我的應用程序,到過長時間,因爲我有這個工作..我將等待logcat的輸出,而不是

0

要麼你有錯誤的目標設定您的項目或您的設備不支持Google API。在前一種情況下,將您的構建Traget更改爲其中一個Google API(> = GOOGLE API 10)。它不工作,因爲您的項目找不到GCM工作所需的Google Apis。右鍵單擊您的項目,轉到屬性> Android並更改構建目標。如果您沒有安裝Google Apis,則必須先通過SDK Manager安裝它。

如果您的設備不支持谷歌apis,例如您可能正在仿真器上測試它的目標設置爲Android Api而不是Google Api;創建目標設置爲谷歌API的一個新的仿真器(> = 10)

enter image description here

enter image description here

+0

我也使用谷歌API a17但沒有運行,並沒有給予註冊碼 – aslam

+0

你的設備是否支持谷歌API?例如,您可以在目標未設置爲Google apis的模擬器上嘗試它。如果是這樣的話;創建一個帶有目標集Google Apis(> = 10)的新仿真器。 –