0

我已经使用了本指南。但是如果我将它添加到另一个项目中,我不会收到任何东西:我已经对清单进行了更改,因此它与指南相匹配(我认为):

问题:但现在我的注册尝试没有得到任何回应。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.vogella.android.c2dm" android:versionCode="1"
    android:versionName="1.0">
    <permission android:name="de.vogella.android.c2dm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="de.vogella.android.c2dm.permission.C2D_MESSAGE" />
    <!-- Permissions -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />


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

        <service android:name="de.vogella.android.c2dm.C2DMReceiver" />

        <!-- Only C2DM servers can send messages for the app. If permission is 
            not set - any other app can generate it -->
        <receiver android:name="com.google.android.c2dm.C2DMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND">
            <!-- Receive the actual message -->
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="de.vogella.android.c2dm" />
            </intent-filter>
            <!-- Receive the registration id -->
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="de.vogella.android.c2dm" />
            </intent-filter>
        </receiver>
        <activity android:name="ResultActivity"></activity>
    </application>
</manifest>

如何开始注册(已检查是否达到 if 条件)(从 C2DM2Activity 调用):

public void checkRegistered() {
        String registered = C2DMessaging
                .getRegistrationId(getApplicationContext());
        if (registered.equals("")) {
            Log.i(TAG, "starting registration of C2DM");
            C2DMessaging.register(this, C2DMID);
        }
    }

文件结构:

文件结构

4

5 回答 5

1

如果你添加一个“。”怎么办?对于您的服务名称,我认为应该是这样。

试试这个<service android:name=".c2dm.C2DMReceiver" />

于 2012-05-21T08:24:14.653 回答
1

在代码部分。C2DMBaseReceiver,有一个地方定义了 C2DMReceiver 在应用程序包的默认文件夹中。

感谢所有其他人试图提供帮助。

于 2012-05-22T06:47:59.170 回答
0

尝试改变

android:name="com.google.android.c2dm.C2DMBroadcastReceiver"

android:name="dk.lector.cms.c2dm.YourReceiverClassName"
于 2012-05-21T08:20:03.177 回答
0

你在上面的评论中说那C2DMBroadcastReceiver是你的接收者。那C2DMReceiver我在你的de.vogella.android.c2dm包裹里看到的是什么?

你的问题是关于如何开始注册。在第2.2 节下的教程中。获取移动应用程序的注册 IDregister需要调用一个方法。当registrationId从 Google 服务器返回时,它会在您的接收者的onReceive. 在他的教程中,注册的接收者是C2DMRegistrationReceiver. 如果您说那C2DMBroadcastReceiver是您的接收者并且您确定这一点,只需调用register并且onReceive应该会收到消息。

此外,您应该尝试发布整个 Manifest.xml。确保您使用的是 INTERNET 权限和自定义权限,例如:

<permission
    android:name="de.vogella.android.c2dm.simpleclient.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission 
    android:name="de.vogella.android.c2dm.simpleclient.permission.C2D_MESSAGE" />
于 2012-05-21T09:08:31.293 回答
0

您注册的包名称与C2DM您转移的其他项目相同,因为对于 C2DM,它使用其Package名称识别应用程序

于 2012-05-21T09:12:13.860 回答