2

これらの c2dm 実装を自分のアプリで正常に動作させることができました。

c2dm メッセージがデバイスで突然受信されないという問題があります。今回は、私が混乱している許可拒否を与えてくれます:

パーミッション拒否: Intent {
act=com.google.android.c2dm.intent.REGISTRATION cat=[myapp.android] (has extras) } を myapp.android に受信するには、送信者 com.google により myapp.android.permission.C2D_MESSAGE が必要です。 android.location (uid 10037)

これは 2 回目の出来事で、ユーザーがコマンドを受け取らなかったときに工場出荷時設定へのリセットを実行する必要があることをユーザーに伝えることはできません。ここで誰かが同様の問題に遭遇しましたか? ヘルプや洞察、原因を教えていただければ幸いです。

要求された manifest.xml


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

            <category android:name="myapp" />
        </intent-filter>
    </receiver>

...

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

4

3 に答える 3

2

また、マニフェストで権限を定義する必要があります。これは、システムのものではなく、アプリに固有のものであるためです。

<permission android:name="myapp.android.gms.permission.C2D_MESSAGE" />

すでにお持ちの場合は、特定のデバイスや関連するGoogleライブラリの古いバージョンなどのバグである可能性があります。その場合、できることはあまりありません。

于 2012-12-17T03:41:53.520 に答える
0

マニフェストで権限が定義されていても、同じ問題に遭遇しました。

protectionLevel="signature" と関係があるようで、アプリが本番キーとデバッグ キーで再インストールされると権限の定義が破損します。

私にとってそれを修正したのは、一時的に protectionLevel="normal" を設定してから、アプリを再インストールしてから、「署名」に戻して再度再インストールすることでした。

于 2013-05-09T06:26:32.233 に答える