2011-01-25 124 views
3

如何從我的應用程序調用外部應用程序?調用外部應用程序

例如:我需要從我的應用程序調用Shazam(應用程序)。 我可以在logcat中看到應用程序的包名稱。

會對任何目的有用嗎?

回答

1

您可以通過以下方式調用第三方應用程序的活動。

final Intent shazamIntent = new Intent("com.shazam.android");     
shazamIntent .setComponent(new ComponentName("com.shazam.android","com.shazam.android.Splash")); 
startActivity(shazamIntent); 

但是,這不是一個好方法。如果軟件包名稱發生更改(這是一種非常遙遠的可能性)或活動名稱發生更改(Splash可能更改爲其他內容),則應用程序將中斷。 如果Shazam有一個Intent可以調用開始聽一首歌(使用它)(不知道他們是否有)。

另外,在沒有安裝Shazam的情況下進行必要的檢查,以確保您的呼叫不會崩潰。

1

創建應用程序的啓動器intent對象並說startActivity。

+0

我們無法在清單中添加外部類。 – Eby

+0

您不需要在清單文件中添加外部類。如果您確定該應用程序將可用並已安裝,那麼只需創建一個具有已知類名稱的Intent,然後啓動帶有意圖的startActivity。這是Android上的家庭應用程序如何列出所有已安裝的應用程序,並在您點擊應用程序快捷方式時啓動它們。 – Gopinath

+0

Class shazam = Class.forName(「com.shazam.android」); \t \t Intent intent = new Intent(shaz.this,shazam.getClass()); \t \t startActivity(intent); 是這樣嗎? – Eby

1

專門爲Shazam的,下面的代碼工作:

Intent intent = new Intent("com.shazam.android.intent.actions.START_TAGGING"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

if(!context.getPackageManager().queryIntentActivities(intent, 0).isEmpty()) { 
    context.startActivity(intent); 
} else { 
    // Shazam is not installed 
} 

START_TAGGING是當你輕按Shazam的部件,其發出的意圖。

相關問題