Java 雷吉德总是空的

Java 雷吉德总是空的,java,android,android-c2dm,Java,Android,Android C2dm,我现在正在我的应用程序中实现GCM。我用教程作为起点 问题是我的regId总是null: GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { GCMRegistrar.register(this, "627xxxx78"); } else {

我现在正在我的应用程序中实现GCM。我用教程作为起点

问题是我的
regId
总是
null

GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);

if (regId.equals(""))
{
    GCMRegistrar.register(this, "627xxxx78");
}
else
{
    if (GCMRegistrar.isRegisteredOnServer(this))
    {
        Log.i(TAG, "Already registered regId : " + regId );
    }
    else
    {
        final Context context = this;

        mRegisterTask = new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                boolean registered =
                        ServerUtilities.register(context, regId);

                if (!registered)
                {
                    GCMRegistrar.unregister(context);
                }
                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                mRegisterTask = null;
            }
        };

        mRegisterTask.execute(null, null, null);
    }
}
gcmregistar.checkDevice(这个);
GCMRegistar.检查清单(本);
最终字符串regId=gcmregistar.getRegistrationId(this);
if(regId.equals(“”)
{
GCMRegistrar.登记册(本文件为“627xx78”);
}
其他的
{
if(GCMRegistrar.isRegisteredOnServer(本))
{
Log.i(标签“已注册注册注册的注册ID:+regId”);
}
其他的
{
最终上下文=此;
mRegisterTask=newasynctask(){
@凌驾
受保护的Void doInBackground(Void…参数){
布尔注册=
register(上下文,regId);
如果(!已注册)
{
GCMRegistar.unregister(上下文);
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
mRegisterTask=null;
}
};
mRegisterTask.execute(null,null,null);
}
}
在上面的代码中,
ServerUtilities.register
从未被调用,因为
gcmregistar.getRegistrationId(this)
;始终返回空字符串


有什么想法吗?

我也有同样的问题。在应用程序清单文件中添加以下内容:

package=“yourApplicationPackage”
必须在应用程序包中保留此“yourApplicationPackage.gcMinentService”

yourApplicationPackage.gcMinentService代码如下所示

     public class GCMIntentService extends GCMBaseIntentService  {


@Override
protected void onError(Context arg0, String arg1) {
    // TODO Auto-generated method stub

}

@Override
protected void onMessage(Context context, Intent intent) {
    // TODO Auto-generated method stub


 }

@Override
protected void onRegistered(Context context, String registrationId) {
    // TODO Auto-generated method stub
      Log.i(TAG, "Device registered: regId = " + registrationId);
     GcmServer.register(context, registrationId);
}

@Override
protected void onUnregistered(Context arg0, String arg1) {
    // TODO Auto-generated method stub

}

我也有同样的问题。在应用程序清单文件中添加以下内容:

package=“yourApplicationPackage”
必须在应用程序包中保留此“yourApplicationPackage.gcMinentService”

yourApplicationPackage.gcMinentService代码如下所示

     public class GCMIntentService extends GCMBaseIntentService  {


@Override
protected void onError(Context arg0, String arg1) {
    // TODO Auto-generated method stub

}

@Override
protected void onMessage(Context context, Intent intent) {
    // TODO Auto-generated method stub


 }

@Override
protected void onRegistered(Context context, String registrationId) {
    // TODO Auto-generated method stub
      Log.i(TAG, "Device registered: regId = " + registrationId);
     GcmServer.register(context, registrationId);
}

@Override
protected void onUnregistered(Context arg0, String arg1) {
    // TODO Auto-generated method stub

}

确保您的模拟器或设备已使用Google帐户登录。我遇到了同样的问题。我只是简单地登录了这个设备的谷歌账号,哈哈,我得到了注册码

确保您的模拟器或设备已使用Google帐户登录。我遇到了同样的问题。我只是简单地登录了这个设备的谷歌账号,哈哈,我得到了注册码

您是否可以发布您的清单文件您在
gcminentservice
中的注册请求得到了什么?您是否可以发布您的清单文件您在
gcminentservice
中的注册请求得到了什么?