2015-04-30 98 views
1

我需要從服務啓動活動。我試着使用:從服務啓動第三方應用程序

public void openApplication(String packageName){ 
     Intent intent = new Intent(packageName); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     this.startActivity(intent); 
    } 

,但我得到這個錯誤:

E/AndroidRuntime(8563):android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.encrypted flg=0x10000000 } 
04-30 11:55:07.507: E/AndroidRuntime(8563):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765) 
04-30 11:55:07.507: E/AndroidRuntime(8563):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485) 

任何想法?

+1

您正在使用的'Intent'構造函數採用動作字符串。它不需要包名。顯然,您的設備上沒有任何活動將其包名稱作爲操作字符串。您需要使用標識存在活動的「Intent」。向第三方應用程序的開發者詢問他們建議使用什麼「Intent」。 – CommonsWare

回答

1

試試這個代碼,而不是。你需要得到一個推出Intent爲包:

public void openApplication(String packageName) { 
    PackageManager pm = getPackageManager(); 
    Intent intent = pm.getLaunchIntentForPackage(packageName); 
    startActivity(intent); 
} 
+1

謝謝!它完美的工作!我可以給你點點什麼嗎?我在這裏是新的,我不太瞭解stackoverflow。但是,如果我可以,讓我知道!再次感謝 – EzeBongiovi

0

您已創建一個帶有某個「操作」的Intent。找到由所需應用程序的IntentFilter處理的正確操作字符串。 packageName是不一樣的動作。

如果多個應用程序不應該有在IntentFilter的定義相同的操作,系統會彈出,所有這些應用程序中顯示的IntentChooser。

+0

嗨!謝謝你的回答。也許我不得不補充說,我想要啓動的應用程序是第三方應用程序,它不是由我創建的。它改變了什麼嗎? – EzeBongiovi

相關問題