2013-08-17 68 views
3

好的我想從應用程序打開一個特定的Activity,而不是我的應用程序。假設我想打開該包com.test.app並在該包TestActivity內。我怎樣才能做到這一點?如何打開特定的第三方活動?

我已經試過這樣:

Intent i = new Intent(); 
i.setClassName(pack, activity); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getApplicationContext().startActivity(i); 

Intent i = new Intent(pack+activity); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getApplicationContext().startActivity(i); 

Intent i = new Intent(); 
i.setClassName(pack, "."+activity); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getApplicationContext().startActivity(i); 

Intent i = new Intent(pack+"."+activity); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getApplicationContext().startActivity(i); 

與他們我有此錯誤:

Unable to find explicit activity class {PACKAGE/ACTIVITY}; have your declared this activity in your AndroidManifest.xml? 

注:我確實有包com.test.app並與活動安裝的應用程序TestActivity。那麼這怎麼做呢?

+0

試試這個i.setClassName(「com.test.app」,「com.test.app.TestActivity」); –

+0

@hemanthkumar這是不工作,因爲我已經設置它,並給出了同樣的錯誤。 –

回答

2

首先,您必須確保導出目標活動。它必須使用android:export =「true」顯式導出,或者用intent-filter隱式導出。您無法將意圖發送給任何應用程序的任何隨機活動。

+0

不知道這件事。謝謝。 –

0

你是否嘗試下面的代碼?

Intent i = new Intent();// if TestActivity has an action. please add by yourself 
i.setClassName("com.test.app", "com.test.app.TestActivity"); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// maybe no use here 
getApplicationContext().startActivity(i); 
+0

這不符合我以前的設置,並給出了相同的錯誤。 –

0

檢查第三方應用程序是否安裝在您的設備或模擬器中,那麼只有它會給出正確的結果。

0

我想你可能沒有在清單文件中聲明新的java類。如果沒有,然後打開你的清單文件,打開ANdroidmanifest.xml,並在標籤下面標籤寫這個

+0

+0

您能詳細解釋一下您提供的解決方案嗎? – abarisone

+0

您是否在manifest.xml中註冊了新類 –

相關問題