如果应用程序至少启动一次,广播接收器不能在ICS中工作

Koz*_*lov 13 android broadcast broadcastreceiver android-intent android-4.0-ice-cream-sandwich

这个问题在堆栈溢出中已被问过几次,但还没有解决方案.我有一个广播接收器用于接收USB连接动作.广播接收器的责任是,如果我得到意图启动我的应用程序.在清单文件中我添加了接收器. 我在GingerBread中使用相同的逻辑,但我ICS无法正常工作. 许多问题,如 广播 - 不调用

1:Android启动BroadCast不调用广播密码- 不工作

如果我手动启动我的应用程序一次,那么从下次连接USB时,我的应用程序会自动启动.试图回答同样的问题,但没有回答.在ICS中有没有解决方案?

这是我的接收器

        <receiver android:name="com.test.MyReceiver">
                <intent-filter>
                    <action android:name="android.hardware.usb.action.USB_STATE" />
                    <action android:name="android.net.wifi.STATE_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
                </intent-filter>
            </receiver>
    and this is my class
    public class MyReceiver extends BroadcastReceiver {
    .
    .
    .

  public void onReceive(Context context, Intent intent) {
.
Run Code Online (Sandbox Code Playgroud)

我错了吗?

提前谢谢 - 科兹洛夫

Com*_*are 11

在ICS中有没有解决方案?

它工作正常.从Android 3.1开始,BroadcastReceiver在用户手动启动活动之前,不会有效.我八个月前写了这篇博文.

  • @Ben如果你知道你想让应用程序启动即使它已经停止,你也可以使用http://developer.android.com/reference/android/content/Intent.html#FLAG_INCLUDE_STOPPED_PACKAGES请记住你的意思这样做是将应用程序移动到启动状态,所以只有当您正在广播的内容和现在启动的应用程序之间存在某些用户连接时,才应该这样做. (2认同)