2011-01-12 205 views
19

在這個應用程序,我正在開發我需要加載/調用另一個已經安裝在手機上的應用程序。這是一款僅供我個人使用的應用程序,因此無需檢查是否安裝了其他應用程序 - 我知道它是。從另一個應用程序調用應用程序

我已經搜索了幾個小時這個問題,但我找不到任何工作。主要是因爲查找包名和類名的準則非常糟糕。

通過cmd和adb我能夠找到關於我想要調用的應用程序的信息: package:/data/app/com.soundcloud.android-1.apk=com.soundcloud.android (這也正是它在cmd窗口說。)

我想是這樣的:

Intent i = new Intent(); 
i.setClassName("/data/app/com.soundcloud.android-1.apk", "com.soundcloud.android"); 
startActivity(i); 

但我的應用程序崩潰,只是代替。我用上面的代碼,因爲有人說,這可能會調用一個應用程序:

Intent i = new Intent(); 
i.setClassName("<package_name>","<Class Name(with package name)>"); 
startActivity(i); 

有誰知道該寫什麼?

P.S .:我自己的應用程序不需要關於被調用應用程序中發生的事情的任何信息。

+0

什麼你難道不明白呢? i.setClassName(「」,「」); ? – Falmarri 2011-01-12 22:04:35

+0

我不知道應該在每個參數中放置什麼。或者,如果它甚至會以這種方式工作。 – eightx2 2011-01-12 22:05:45

回答

36

使用PackageManager以獲取包的意圖:

PackageManager pm = getPackageManager(); 
Intent intent = pm.getLaunchIntentForPackage("com.example.package"); 
startActivity(intent); 
1

該文檔是 here

我想在你的例子中,com.soundcloud.android實際上是包名,所以應該是第一個參數。對於第二個,你仍然需要找出要使用的類。

如果您沒有該代碼,您可以通過this查看如何從apk中找到該類。

相關問題