2011-03-13 97 views

回答

2

當然。你可以啓動「畫廊」挑這樣的照片:從manual

myIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(myIntent, IMAGE_UPLOAD); 

,我們發現你可以有2種類型的意圖的來電:

顯式意圖 指定一個 組分(經由 setComponent(組件名稱)或 setClass(上下文,類)),其提供 的確切類中運行。 通常這些信息不會包含任何其他 信息,只是作爲 應用程序啓動各種內部 活動的一種方式,其作爲用戶 與應用程序交互時具有。

沒有指定的部件

隱意圖;相反,他們 必須包括 系統確定該 可用組件最好爲目的運行 足夠的信息。

您正在尋找我猜隱含意圖。這解釋了一下下:

意圖解決機制 基本上圍繞匹配的 意圖對所有 描述在 安裝的應用程序包。 (另外, 在廣播的情況下,廣播接收器明確反對任何 與 registerReceiver(廣播接收器, IntentFilter的)。註冊)本 更多細節,可以在文檔中發現 的IntentFilter的類

(emph。mine)。 所以你需要知道某些東西來顯式調用它(比如類名等),或者調用意圖,然後你必須知道意圖過濾器。

我不認爲這是指對某事物只知道包名稱的方法:提個醒,你可以有幾個包,並非所有的活動都有一個應用程序,讓可運行單獨的活動。

+0

如果我沒有在運行時訪問包,該怎麼辦?我試圖做一些像 'Intent intent = getPackageManager()。getLaunchIntentForPackage(「com.something.or.other」); startActivityForResult(intent,0);' – Dested 2011-03-13 09:45:01

+0

如果未安裝應用程序(=包不可用),那麼您無法啓動它,對不對? – 2011-03-13 09:46:37

+1

我不認爲你可以從包名稱開始任何事情。一個軟件包不會與應用程序進行一對一的對話,所以你必須找到這個軟件包的位置,然後從該apk文件中獲取顯示內容......不會看到它發生了:) ..更新了答案。 – Nanne 2011-03-13 09:51:51

0

有什麼辦法來加載安裝的活動,沒有在我的應用程序清單中明確定義?

如果你真的想說:

我的應用程序在運行時創建一個Activity類... ...不知何故並啓動它?

然後答案是否定的。

+0

我沒有,第二個活動只存在於一個單獨的包中。 – Dested 2011-03-14 05:47:21