0

私はとBroadcastReceiverとに慣れていません。http://developer.android.com/google/gcm/gs.htmlのチュートリアルに従っていますServiceGoogleCloudMessaging

ライブラリをワークスペースにインポートしてプロジェクトに参照した後、ランタイム例外"No class def found error" が発生します。インターネットをブラウズしたところ、間違いは私のものに関係してAndroidManifest.xmlいる可能性があり、チュートリアルで説明されているマニフェストに関するいくつかのことがわからないので、それは理にかなっている可能性があります。

例えば:

<receiver
    android:name=".MyBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <category android:name="com.my.package" />
    </intent-filter>
</receiver>
<service android:name=".MyIntentService" />

最初に、チュートリアルではreceiver"MyBroadcastReceiver" という名前で を宣言しますが、後で を拡張する "GcmBroadcastReceiver" という名前のクラスを定義しますBroadcastReceiver。したがって、それらが2つの異なるものなのか、それとも間違いであり、同じ名前にする必要があるのか​​ わかりません。

2 つ目はService. チュートリアルにはサービスはありません。だから私はサービスを作成することになっていると思います

BroadcastReceiver3 つ目は、 and/orServiceが からどのように、またはどこで呼び出されているMainActivityか、それらがどのようにリンクされているかなどがわからないことです。

編集: 新しい Google Cloud Messaging API を使用しています

4

1 に答える 1

1

このサービスは不要になりました。古い API で使用されていました。これは、受信メッセージと登録結果を処理するためにブロードキャスト レシーバーによって呼び出されましたが、現在、受信メッセージのすべての処理はブロードキャスト レシーバーで行われます。

ブロードキャスト レシーバー クラスが必要です。呼び方は何でも構いません。GcmBroadcastReceiverデモ アプリ用に作成したクラスです。名前MyBroadcastReceiverは、 on クラスを作成する必要があることを示唆しています。ブロードキャスト レシーバーはメイン アクティビティから呼び出されません。GCM メッセージがアプリに送信されると呼び出されます。

また、No class def found errorEclipse を使用していると仮定すると、Android プロジェクトで Java Build Path -> Order and Export -> Android Private Libraries フラグをチェックしていない可能性があります。

于 2013-07-16T16:45:48.773 に答える