我建立一個應用程序,使人們能夠相互共享應用程序。我已經能夠從這個應用程序(我顯示已安裝的應用程序,用戶可以選擇他想要發送的內容)做到這一點,但現在我想分享未安裝的apks,所以apk只是在下載文件夾或類似的東西。假設你在下載文件夾中有一個apk例如,我希望能夠通過按Share來進入我的應用程序併發送該apk。它就像任何其他份額(圖像等)。分享意圖過濾
我能夠讓我的應用程序彈出可以共享該類型文件的應用程序列表(在本例中爲.apk),就像在此圖片(下圖)
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.android.package-archive" />
</intent-filter>
現在的問題是:在活動標籤的
1 - 我怎麼知道該人按份額文件的文件路徑?
2 - 如果在清單上接收到意圖,如何將該文件路徑傳遞給我的應用程序?注:目標是通過按下共享(長按,然後共享 - 取決於設備)從設備上的任何文件夾共享一個apk。
預先感謝所有幫助。
的'ACTION_SEND'實現是必需的,通過該協議,接受任何形式的Uri'的'(你的情況,只要它似乎指向一個APK)。這'Uri' *威力*有'file'的方案,在這種情況下'的getPath()'上'Uri'是將文件的路徑(你在哪裏得到來自'getIntent了'Uri'()。的getData ()')。但是,該'Uri'可以具有'content','http','https'等作爲方案,並且在這些情況下不存在「文件路徑」。 – CommonsWare
@CommonsWare我設法使用getClipData獲取文件路徑,問題是它只能從api 16轉發。對於以前的那些,getData()總是空的,所以我真的不知道該怎麼做:(另外我試着調試並檢查Uri內部的內容,並且沒有什麼是我明顯需要的,只有當這樣做't show on debug –
哎呀,對不起,我正在考慮其他操作,比如'ACTION_VIEW'。'ACTION_SEND'的'Uri',如果有的話,將會出現在'EXTRA_STREAM'中。 – CommonsWare