ANDROID - 从BroadcastReceiver启动其他应用程序

时间:2012-04-09 08:49:47

标签: android broadcastreceiver android-c2dm

我需要从BroadcastReceiver中启动/打开我的设备中安装的一个apk。

以下是代码:

公共类C2DMMessageReceiver扩展了BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();

    Log.w("C2DM", "Message Receiver called");
    if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
        Log.w("C2DM", "Received message");
        ComponentName toLaunch = new ComponentName("es.mypackage","es.mypackage.myapplication");
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER); 
        intent.setComponent(toLaunch); 
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);

我的设备接收广播,但因意外问题而失败。

启动其他apk的代码在应用程序的其他部分工作正常。

是否可以从广播中启动其他应用程序?

非常感谢。

1 个答案:

答案 0 :(得分:1)

根据我的经验,您无法从C2DM接收器启动活动,我找到了解决方法,创建一项服务并从该服务启动活动,在您开始活动后停止服务。

谢谢,