似乎在第一次启动应用程序时,注册 ID 是在 oncreate() 方法触发后设置的。如何将 GCMRegistrar.java 中的注册 ID 发送回活动?
我在 MainActivity 的 onCreate() 中调用它:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
String regId = GCMRegistrar.getRegistrationId(this);
//provide RegID for the Class that can communicate with Javascript.
Log.v(TAG, "regID: "+regId);
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
} else {
Log.v(TAG, "Already registered");
}
EDIT:
//Call after .register also returns empty String on first App Launch
String regId2 = GCMRegistrar.getRegistrationId(this);// returns ""
它在第一次启动时在此处返回一个空字符串。在日志中,我看到注册 ID 稍后在 GCMRegistrar.java 中设置
static String setRegistrationId(Context context, String regId) {
Log.v(TAG, "REGISTRATION ID IN SET: "+regId);
final SharedPreferences prefs = getGCMPreferences(context);
String oldRegistrationId = prefs.getString(PROPERTY_REG_ID, "");
int appVersion = getAppVersion(context);
Log.v(TAG, "Saving regId on app version " + appVersion);
Editor editor = prefs.edit();
editor.putString(PROPERTY_REG_ID, regId);
editor.putInt(PROPERTY_APP_VERSION, appVersion);
editor.commit();
return oldRegistrationId;
}
上面这个方法是在 GCMBaseIntentService 中调用的。
如果我第二次运行该应用程序,我可以获得注册。Mainactivity 中的 ID,我如何实现回调函数之类的东西,以便我可以访问 Reg。MainActivity 中的 ID?