2012-04-11 10 views
2

Adob​​e 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を実行するようにアプリに指示していますか?明らかに、私がやっていることは間違っています...

答えて

0

あなたはほぼあります。私はAIRコンポーネントのアンドロイドの名前がちょっと間違っていると思います。いくつかのクラスで "air"接頭辞に注目して、以下を試してみてください。

<android> 
<manifestAdditions><![CDATA[ 
    <manifest android:installLocation="auto"> 
     <permission android:protectionLevel="signature" android:name="air.com.example.znotification.permission.C2D_MESSAGE" /> 

     <uses-permission android:name="air.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" /> 
        <category android:name="air.com.example.znotification" /> 
       </intent-filter> 

       <intent-filter> 
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
        <category android:name="air.com.example.znotification" /> 
       </intent-filter> 

      </receiver> 
     </application> 

    </manifest> 

]]></manifestAdditions> 

関連する問題