1

アプリにプッシュ通知を実装しようとしていますが、C2DMReceiver が機能していないようです。私は見つけることができるすべての解決策を試しました。ここに私が持っているものがあります:

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

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

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

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.WAKE_LOCK" />

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />

<activity>....</activity>

<service android:name=".C2DMReceiver"/>
<receiver 
          android:name="com.google.android.c2dm.C2DMBroadcastReceiver"
          android:permission="com.google.android.c2dm.permission.SEND">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
        <category android:name="com.my.app"/>
    </intent-filter>
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
         <category android:name="com.my.app"/>
    </intent-filter>
 </receiver>

私が使用する onCreate メソッドで: C2DMessaging.register(this, "mymail@gmail.com");

String id = C2DMessaging.getRegistrationId(this);

id は常に空です。LogCat を見ると、Permission Denial: received Intent { act=com.google.android.c2dm.intent.REGISTRATION So, what do I do?Thanks) が表示されます。

4

2 に答える 2

1

レシーバーのandroid:nameは、レシーバーを実装するクラスへのパスを指定する必要があります。C2DMBroadcastReceiver以下に示すように、あなたのクラスはパッケージに含まれていないと確信しています。com.google.android.c2dmあなたはパッケージを使用していcom.my.appます。

たとえば、でC2DMBroadcastReceiverクラスを作成しcom.my.app.receiver、レシーバーを次のadroid:nameように指定します。

<receiver 
      android:name="com.my.app.receiver.C2DMBroadcastReceiver"
      android:permission="com.google.android.c2dm.permission.SEND">
      ......
</receiver>
于 2012-05-09T09:35:29.307 に答える
1

タグ内の を からに変更android:nameし、送信者の電子メールとサーバー側のログイン用電子メールが同じであることを確認してください。receivercom.google.android.c2dm.C2DMBroadcastReceivercom.my.app.YourReceiverClassName

于 2012-04-27T11:59:10.377 に答える