gpt4 book ai didi

java - 在 Android AIR 应用程序中设置 BroadcastReceiver

转载 作者:行者123 更新时间:2023-11-29 09:14:54 25 4
gpt4 key购买 nike

我正在使用 Adob​​e AIR 编写应用程序并尝试使用 native 扩展将其部署到 Android。该应用程序需要能够使用 Google 的 C2DM 服务(相当于 Apple 的推送通知服务)。这需要设置 BroadcastReceiver 以便从 Google 接收设备注册。我能够在独立的 native Android 应用程序(无 AIR)中正常运行,但似乎无法在 AIR 应用程序中运行。我想我一定是错误地设置了 list XML,但我看不出如何设置。

这是 AIR 应用程序 list 文件中 XML 的相关部分:

<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>

在标记中引用的 native Java 类 C2DMBroadcastReceiver 中,它所做的只是注销一条消息,说明它已收到广播。我已经验证我正在正确设置 Intent(请参阅下面的 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 应用程序的 list XML 中设置 BroadcastReceiver?具体来说,您如何在 XML 中告诉应用程序在收到给定的广播后运行正确的 BroadcastReceiver?显然,我的做法是不正确的...

最佳答案

你快到了。我认为您的 AIR 组件的 android 名称略有错误。试试下面的方法,注意一些类上的“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>

关于java - 在 Android AIR 应用程序中设置 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com