2012-04-09 100 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

相關問題