0

有没有办法在停止的应用程序中接收广播(如短信通知)?实际上它只在低于 Android 3.1 的情况下工作。

编辑 1:感谢@Squonk 的评论。所以我的问题是,这真的不可能吗?您可以在市场上查看 PlanB 应用程序,它会执行此操作。

编辑 2:这是我的广播接收器。onReceive 函数永远不会被调用(当应用程序停止时)。

public class SmsReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        Log.e("kpav", "kpav");
        String url = "http://www.google.com";
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        i.addFlags(32);
        i.setData(Uri.parse(url));

        arg0.startActivity(i);
    }
}
4

2 回答 2

1

对于 Android v3.1 及更高版本,任何已由用户手动启动至少一次的应用程序,即使在重新启动后也会收到它已在清单中注册的广播。

但是......用户必须手动启动该应用程序 - 安装应用程序并让它自动接收广播是不可能的。

此外,如果用户在设备的设置中手动使用“强制停止”,它将不再接收广播,直到用户再次手动启动应用程序。

所以基本上,回答你的问题......

有没有办法在停止的应用程序中接收广播(如短信通知)?

...答案是否定的,除非在我上面描述的情况下。

于 2012-06-12T07:30:51.300 回答
1

您可以通过简单地将以下标志添加到广播意图来包含已停止的包来接收广播。

intent.addFlags(32);

其中 as32指的是API 级别 12Intent.FLAG_INCLUDE_STOPPED_PACKAGES中可用的。

于 2012-06-12T07:44:27.467 回答