创建项目并从https://developers.google.com/cloud-messaging/android/start获取服务器api密钥和发送者ID,并使用以下代码生成注册ID

GoogleCloudMessaging gcm;
String   SENDER_ID = "mysenderid";
String Reg_id;
Context context;
EditText firstNumber;
@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Reg_id=registerGCM();
}
public String registerGCM()
{
    String regid=null;
    try {

        firstNumber = (EditText)findViewById(R.id.regisid_1);
        context = getApplicationContext();
        gcm = GoogleCloudMessaging.getInstance(context);
        regid = gcm.register(SENDER_ID);
        firstNumber.setText(regid);
    }
    catch(Exception ae)
    {

    }
    return regid;
}


但是执行代码后,regid显示为null。

最佳答案

如果gcm id为null尝试启动后台任务并获取id.check下面的代码

private void registerInBackground() {
        new AsyncTask() {
            @Override
            protected String doInBackground(Object[] params) {
                String msg = "";
                try {
                    if (gcm == null) {
                        gcm = GoogleCloudMessaging.getInstance(context);
                    }
                    regid = gcm.register(SENDER_ID);
                    msg = "Device registered, registration ID=" + regid;


                    sendRegistrationIdToBackend();


                    // Persist the regID - no need to register again.
                    storeRegistrationId(context, regid);
                } catch (IOException ex) {
                    msg = "Error :" + ex.getMessage();


                }
                return msg;
            }

            @Override
            protected void onPostExecute(Object msg) {
//                mDisplay.append(msg + "\n");

            }
        }.execute(null, null, null);
    }

09-12 05:28