【问题标题】:Cannot receive broadcast in ICS无法在 ICS 中接收广播
【发布时间】:2012-03-14 03:30:45
【问题描述】:

我为 Android 4.0 编写了 1 个应用程序,它是通过广播接收器启动的。我的代码如下:

在 AndroidManifest.xml 中:

 <uses-permission android:name="android.permission.INTERNET" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <receiver android:name="com.Android.Exercise.StartUpReceiver"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <!--<action android:name="StartInstrument" /> 
                <action android:name="PrintControlName" />      -->     
            </intent-filter>
        </receiver>         
        <service android:enabled="true" android:name="StartAUT_Service">
            <intent-filter>
                <action android:name="com.Android.Exercise.StartAUT_Service" />
            </intent-filter>
        </service>  
    </application>

在 StartUpReceiver 类中:

public class StartUpReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {

        Log.i("Broadcast", "onReceive");

        Intent i = null;

        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
             i = new Intent(context, StartAUT_Service.class);          
             i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        }

        context.startService(i);            
    }       
}

重新启动设备后,我无法接收广播。 请帮助我,非常感谢

【问题讨论】:

    标签: android broadcastreceiver android-3.0-honeycomb android-4.0-ice-cream-sandwich


    【解决方案1】:

    从 Android 3.0 开始,引入了应用状态。 现在安装的所有应用程序都将状态设置为非活动状态,使其所有广播接收器都处于非活动状态。

    要使状态变为活动状态,用户必须至少启动一次应用程序,操作系统将自动激活应用程序及其所有的广播接收器。

    在您的情况下,您需要添加一个活动,无论是许可协议还是帮助页面。这将为您的应用创建一个图标,供用户单击并激活该应用。

    请注意,如果用户强行关闭应用程序,应用程序的状态将设置为不活动状态。

    我遇到了类似的问题:Android ICS not receiving data sms

    我希望这能解决你的问题,或者至少让你走上正轨。

    问候, 艾哈迈德

    【讨论】:

      【解决方案2】:

      试试

       <uses-permission android:name="android.intent.action.BOOT_COMPLETED" />
      

      互联网使用权限以下

      【讨论】:

      • 虽然我添加了你的标签,但我仍然无法接收广播命令。 android 2.2 还可以,android 4.0 就不行了。
      • 我重新启动了我的设备,但它仍然没有运行我的广播。hix|T_T|
      • 您是否删除了活动下的权限标签?
      • 一旦我无法获得 MESSAGE_RECEIVED 广播。然后只有我发现是否有其他应用程序具有相同广播的接收器,那么有时我们的应用程序不会得到广播(罕见情况)。我删除了那个消息应用程序,然后它对我有用。检查你是否有类似的东西..
      【解决方案3】:

      您需要执行以下操作来克服this 安全功能。

      如果您的 API 级别低于 12,则在广播之前将以下内容设置为您的意图:

      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 32);
      

      否则,添加以下标志以包含标记为已停止的包:

      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent. FLAG_INCLUDE_STOPPED_PACKAGES);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-12
        • 2017-07-02
        • 1970-01-01
        • 2020-06-10
        • 1970-01-01
        相关资源
        最近更新 更多