Как получить регистрационный идентификатор для c2dm - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь получить регистрационный идентификатор для C2DM в Android для мобильного приложения. Я попробовал некоторый код, но он не работает должным образом, не предоставляя регистрационный идентификатор, может ли кто-нибудь помочь мне в этом случае, чтобы я мог успешно получить регистрационный идентификатор для c2dm.

Моя основная деятельность

 public class IdTest1Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER");
        intent.putExtra("app",PendingIntent.getBroadcast(this, 0, new Intent(), 0));
        intent.putExtra("sender", "youruser@gmail.com");
        startService(intent);
    }
}  

мой класс приемника

public class C2dmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    Log.w("C2DM", "Registration Receiver called");
    if ("com.google.android.c2dm.intent.REGISTRATION".equals(action)) {
        Log.w("C2DM", "Received registration ID");
        final String registrationId = intent
                .getStringExtra("registration_id");
        String error = intent.getStringExtra("error");

        Log.d("C2DM", "dmControl: registrationId = " + registrationId
                + ", error = " + error);
        // TODO Send this to my application server
    }
}



    }

Мой файл манифеста

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.IdTest1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <permission
        android:name="com.IdTest1.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.IdTest1.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".IdTest1Activity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name=".C2dmReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" >
                </action>

                <category android:name="com.IdTest1" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

1 Ответ

0 голосов
/ 20 марта 2012

Измените com.google.android.c2dm.intent.REGISTRATION в вашем receiver - .C2dmReceiver на com.google.android.c2dm.intent.RECEIVE, и тогда все должно быть в порядке.

...