-1
if (!share_pref) {

            try {
                GCMRegistrar.checkDevice(CategoryPage.this);
                GCMRegistrar.checkManifest(CategoryPage.this);
            } catch (Exception e) {
                e.printStackTrace();
            }

            final String regId = GCMRegistrar.getRegistrationId(this);
            if (!regId.equals("")) {
                Log.i("GCM_STATUS", "Already Registered with Gcm");
            } else {
                GCMRegistrar.register(CategoryPage.this, Constants1.SENDER_ID);
            }
            Log.e("GCM", "ID----->"+regId);

我想在警报框中显示我的设备 ID。我已经为此编写了代码但它不起作用。在 LOG(控制台)中我正在获取设备 ID。请帮助我如何在警报框中显示设备 regId id,以便我可以在 UI 上看到我的设备 ID

4

2 回答 2

0

您无法在GCMRegistrar.register(context, senderIds) 之后立即获取注册 ID;, 所以你必须在 asynctask 中做它并重复直到你得到它......尝试下面的代码..

if (!share_pref) {
     registerInBackground();
 }
class GcmRegisterTask extends AsyncTask<Void, String, String> {

    @Override
    protected String doInBackground(Void... params) {
        GCMRegistrar.checkDevice(context);
        GCMRegistrar.checkManifest(context);
        GCMRegistrar.register(context, senderIds);

        regId = GCMRegistrar.getRegistrationId(context);
        return regId;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);


        if (result == null || result.length() == 0 || result.equals("")) {

            registerInBackground();

        } else {
             Log.i("regId=", result + " ==");
        }
    }

 }

    private void registerInBackground() {
    Log.e(TAG, "registerInBackground");
    GCMRegistrar.setRegisteredOnServer(context, false);
    new GcmRegisterTask().execute();
 }
于 2013-08-14T07:35:50.803 回答
0

您已经提到,您正在从 GCM 服务器的日志中获取注册 ID。

这意味着您从 GCM 服务器正确获取了注册 ID。

在 ALert Box 中获取设备 ID 是什么意思?

是否要在 UI 中的某处显示注册 ID?

或者您想在您从 GCM 收到的通知中显示它?

如果要在 UI 中显示,请创建一个文本视图并将注册 ID 设置为文本。

或者,如果您想在收到的通知中显示它,那么您应该从 GCM Intent 服务的 onMessageReceived 中的共享首选项中读取注册 id 的值,并将该值附加到通知中的文本中。

于 2013-08-14T07:53:16.790 回答