2014-06-18 48 views
1

我使用以下代碼獲取Android設備中的設備令牌。但是,我第一次嘗試時得到了空值。設備令牌第一次返回null

GCMRegistrar.checkDevice(this); 
    GCMRegistrar.checkManifest(this); 
    String regId = GCMRegistrar.getRegistrationId(this); 
    if (regId.equals("")) { 
     GCMRegistrar.register(this, UtilsGcm.GCMSenderId); 
     } 

這裏是我的GCM類我用

public class GCMIntentService extends GCMBaseIntentService { 


    public GCMIntentService() { 
     super(UtilsGcm.GCMSenderId); 
    } 

    @Override 
    protected void onError(Context context, String regId) { 
     Log.e("", "error registration id : " + regId); 

    } 

    @Override 
    protected void onMessage(Context context, Intent intent) { 
     handleMessage(context, intent); 
    } 

    @Override 
    protected void onRegistered(Context context, String regId) { 
     System.out.println("on registered" + regId); 
     UtilsGcm.registrationId = regId; 
     handleRegistration(context, regId); 
    } 

    @Override 
    protected void onUnregistered(Context arg0, String arg1) { 

    } 
} 
+0

問題是,它需要時間來生成設備ID如果你試圖導航之前,它返回null,你可以請張貼你的gcm類.. –

+0

@George:編輯 –

回答

1

我不知道天氣的戈納鍛鍊或不反正試一試....,讓我知道 在您的GCM類檢查這天氣存在或不存在如果不將它放在這裏

private void handleRegistration(Context context, String regId) 
    { 
     // TODO Auto-generated method stub 
     Utils.registrationId = regId; 
     SavePreferences("PUSHNOT",regId); 
     Log.e("", "registration id : "+regId); 


     //sendDeviceIdFuction(context,UtilsGcm.registrationId); 


    } 
    private void SavePreferences(String key, String value) 
    { 
     // TODO Auto-generated method stub 
     SharedPreferences sharedPreferences = getSharedPreferences("myPrefs", MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putString(key, value); 
     editor.commit(); 
    } 

這裏保存登記後REGID在一個應用程序優先嚐試檢索偏好值,而不是取字符串regId。

相關問題