2012-01-10 202 views
1

我正在創建一個應用程序,我需要調用按鈕單擊時已經安裝在設備中的另一個應用程序。從我的應用程序調用另一個應用程序

我已經對它做了一些研究,我知道我需要調用相同的意圖。我不明白的是我沒有我想要調用的應用程序的類名。例如,如果我想通過按鈕單擊我的應用程序來調用設備的圖庫,那麼我該怎麼做?

Uri uri = Uri.parse("file:///sdcard/"); 
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(uri); 
intent.setType("application/pdf"); 
startActivity(intent); 
return true; 

謝謝你們。我已經試過這段代碼,但它說文檔無法打開。

回答

0

如果精確的應用是次要的,你只需要的東西,會顯示你的內容,你也可以完全省略組件名稱。只需在意圖上設置操作,數據和(可選)類型,並讓操作系統完成這項工作。

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(/*your data uri*/); 
intent.setType(/*your data's MIME type*/); 
startActivity(intent); 

此意圖將通過已註冊與視圖操作和適當的MIME類型意圖一些應用程序進行處理。這是一個隱含的意圖,就像阿迪爾提到的那樣。

+0

我有一個名爲printershare的應用程序,我需要從我的應用程序打開。你能提供給我這個uri來打開嗎?我想我錯過了正確的URI .. – Khush 2012-01-10 09:06:22

+0

如果它是一個你沒有寫的應用程序,你應該檢查printershare文檔。沒辦法真正猜測包或類名稱。一般來說,您可能無法假定Printerhare也已安裝。 – dokkaebi 2012-01-12 18:41:33

1

這裏調用 享受編碼....

Intent res = new Intent(); 
    String mPackage = "com.ReachOut"; 
    String mClass = ".splash1"; 
    res.setComponent(new ComponentName(mPackage,mPackage+mClass)); 
    startActivity(res); 
+0

「我不明白的是我沒有我想要調用的應用程序的類名」是作者所說的。所以他/她不能真正喜歡用這個編碼! – 2012-01-10 09:45:54

+0

好的,你知道哪個應用程序? – 2012-01-10 09:53:03

3

您需要調用Implicit Intents

從文檔:沒有指定組件

隱性意圖;相反,它們必須包含足夠的信息以供系統確定哪個可用組件最適合爲該意圖運行。

這些意圖,可以觸發提供任何行動類別信息

例如
要打開瀏覽器 Activity,你不知道 Activity類名你

會使用類似這樣的東西:

Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); 
startActivity(in); 

又如:你不知道的Gallery Activity類,你將它用Implicit Intent這樣的呼籲:

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 
相關問題