AIR Native Extension не может запустить службу намерения Android GCM
Привет всем, кто в последнее время играл с собственным расширением для Android, и мне нужно добавить Google Cloud Messaging. Мне удалось заставить приложение Google Cloud Messaging работать самостоятельно. Но теперь, когда я интегрировал его в собственное расширение для Flash, я обнаружил проблему, которую не могу решить.
08-21 17:58:01.661: W/ActivityManager(180): Unable to start service Intent { act=com.google.android.c2dm.intent.REGISTRATION cat=[air.GCMAppTest.debug] flg=0x10 cmp=air.GCMAppTest.debug/com.xxxxxxxxx.extensions.GCM.GCMIntentService (has extras) }: not found
Эта ошибка появляется, когда GCM Broadcast Receiver получает
08-21 17:58:01.661: V/GCMBroadcastReceiver(7604): GCM IntentService class: com.gamecloudstudios.popsportsandroidane.extensions.GCM.GCMIntentService
Ошибка вызвана тем, что контекст пакета Flash является пакетом по умолчанию. Когда мне нужен пакет по умолчанию, чтобы быть пакетом, содержащим GCMIntentService.
Кто-нибудь смог заставить GCMIntentService работать в родном расширении Android Flash? или любой AndroidIntentService по этому вопросу.
1 ответ
Необходимо убедиться, что вы добавляете Intent Service к дополнениям манифеста вашего дескриптора приложения AIR, а не к манифесту Android вашей библиотеки нативного кода. Например, следующий код - это то, что мы используем в нашем примере приложения нашего собственного расширения GCM, доступного здесь, если вам интересно.
Там есть несколько вещей, на которые стоит обратить внимание, особенно "воздух". префикс на некоторых именах андроидов. Но пока у вас есть все эти дополнения, фактическая реализация кода Android должна быть довольно похожа на примеры Google.
<android>
<manifestAdditions><![CDATA[
<manifest android:installLocation="auto">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- Only this application can receive the messages and registration result -->
<permission android:name="air.com.distriqt.test.debug.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="air.com.distriqt.test.debug.permission.C2D_MESSAGE" />
<application>
<receiver android:enabled="true" android:exported="true" android:name="com.distriqt.extension.pushnotifications.PushNotificationsBroadcastReceiver" 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="air.com.distriqt.test.debug" />
</intent-filter>
</receiver>
<service android:enabled="true" android:exported="true" android:name="com.distriqt.extension.pushnotifications.gcm.GCMIntentService" />
</application>
</manifest>
]]></manifestAdditions>
</android>