2012-08-13 75 views
7

web和stackoverflow包含幾個示例,說明如何使用ACTION_GET_CONTENT意圖從另一個Android應用程序(例如,將其用作電子郵件附件)獲取文件。但是,我需要實現哪種類來創建爲ACTION_GET_CONTENT事件提供內容的應用程序,例如我可以選擇此應用程序(例如,用於選擇電子郵件附件)。如何爲Intent.ACTION_GET_CONTENT提供內容

ContentProvider是一個正確的解決方案嗎?我必須添加到我的AndroidManifest.xml文件中?

回答

15

經過幾個小時的網絡搜索,我找到了以下解決方案。

  1. 執行活動處理意圖。內,使用以下或者更具體的代碼:

    Uri resultUri = // the thing to return 
    Intent result = new Intent(); 
    result.setData(resultUri); 
    setResult(Activity.RESULT_OK, result); 
    finish(); 
    
  2. 添加下面的清單:

    <activity 
        android:name="ActivityName" 
        android:label="Some label" > 
        <intent-filter> 
         <action android:name="android.intent.action.GET_CONTENT" /> 
         <category android:name="android.intent.category.OPENABLE" /> 
         <category android:name="android.intent.category.DEFAULT" /> 
         <data android:mimeType="*/*" /> 
        </intent-filter> 
        <intent-filter> 
         <action android:name="android.intent.action.PICK" /> 
         <category android:name="android.intent.category.DEFAULT" /> 
         <data android:mimeType="*/*" /> 
        </intent-filter> 
    </activity> 
    
+0

請看它在這種情況下不起作用http://stackoverflow.com/questions/14151970/extra-slash-appends-with-file-uri -so-file-name-is-set-empty-in-file-input-contr – 2013-01-04 13:23:19

+0

似乎沒有ACTION_PICKT意圖過濾器爲我工作。任何想法,意圖過濾器需要回應什麼情況?似乎在KK之前/之後只使用GET_CONTENT意圖。 – cargo8 2014-10-16 01:02:35

0

從API級別18進入的意圖出發,也有EXTRA_ALLOW_MULTIPLE設置爲true,在這種情況下,您可以將結果發回多個文件。要做到這一點,你需要將其設置爲ClipData:

resultIntent.setClipData(clipData)