2012-04-09 66 views
0

我需要从BroadcastReceiver中启动/在设备中打开一个已安装的apk。ANDROID - 从BroadcastReceiver启动其他应用程序

下面是代码:

公共类C2DMMessageReceiver扩展广播接收器{

@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

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

谢谢你,

+0

我就可以开始从C2DM接收器的活动: 意向意图=新意图(); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setClass(context,MuestraTexto.class); context.startActivity(意向); 这工作正常,打开我的应用程序的窗口。 只有在我尝试启动安装的外部应用程序时发布的第一个代码失败。 谢谢:) – 2012-04-09 11:25:31

相关问题