Adobe AIRを使用してアプリケーションを作成し、ネイティブ拡張を使用してAndroidに展開しようとしています。アプリは、GoogleのC2DMサービス(Appleのプッシュ通知サービスに相当)を利用できる必要があります。これには、Googleからデバイスの登録を受信するためにBroadcastReceiverを設定する必要があります。私はスタンドアロンのネイティブのAndroidアプリ(AIRはありません)でこれを正常に動作させることができますが、AIRアプリケーションで動作させることはできません。私はマニフェストXMLを間違って設定しなければならないと思っていますが、どうやって見ることができません。それがないすべては言ってメッセージをログアウトされ、タグで参照されているネイティブのJavaクラスC2DMBroadcastReceiverでAndroid AIRアプリケーションでBroadcastReceiverを設定する
<android>
<manifestAdditions><![CDATA[
<manifest android:installLocation="auto">
<permission android:protectionLevel="signature" android:name="com.example.znotification.permission.C2D_MESSAGE" />
<uses-permission android:name="com.example.znotification.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:enabled="true">
<receiver android:name="com.example.znotification.C2DMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
</intent-filter>
</receiver>
</application>
</manifest>
]]></manifestAdditions>
</android>
:ここ
は、AIRアプリでマニフェストファイルからXMLの関連部分でありますそれは放送を受信しました。私はインテントを正しく設定していることを確認しましたが(下記のJavaコードを参照)、BroadcastReceiverは決してヒットしません。
Context appContext = context.getActivity().getApplicationContext();
Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app",PendingIntent.getBroadcast(appContext, 0, new Intent(), 0));
registrationIntent.putExtra("sender", args[0].getAsString());
appContext.startService(registrationIntent);
一般に、AIRアプリケーションのマニフェストXMLにBroadcastReceiverを設定する必要はありますか?具体的には、XMLでどのようにして、ブロードキャスト受信時に正しいBroadcastReceiverを実行するようにアプリに指示していますか?明らかに、私がやっていることは間違っています...