簡體   English   中英

如何從文件路徑獲取內容方案Uri?

[英]How to get content-scheme Uri from file path?

我遇到的情況是我知道文件的路徑,並以此方式解決:

File f = new File(Environment.getExternalStorageDirectory(), "image.jpg");

然后從中創建一個Uri:

Uri uri = Uri.fromFile(f);

但是,此Uri打印出類似以下內容:

file://.....

但我想要:

content://.....

“為什么?”。 因為某些應用程序對方案敏感,例如Facebook。 如果在附加圖像時將文件方案Uri傳遞給Facebook,則它什么都不做。 如果您將內容方案Uri傳遞給同一張圖片,則效果很好。

那么,如何通過知道絕對路徑或將文件方案Uri轉換為內容方案Uri來獲取內容Uri?

編輯(2012年8月24日):最新的Facebook應用更新通過簡單地刪除選擇器並僅顯示圖庫來“解決”了這一問題。 您再也無法在Facebook中通過意圖進行選擇。

到目前為止,我最好的選擇似乎是這種掃描文件的方法,然后返回帶有內容方案的Uri:

File f = new File(Environment.getExternalStorageDirectory(), "image.jpg");

MediaScannerConnection.scanFile(this, new String[]{f.toString()}, null, new MediaScannerConnection.OnScanCompletedListener() {
    public void onScanCompleted(String path, Uri contentUri) {
        // TODO: Do something useful with contentUri, which now has content-scheme
    }
});

嘗試這個'

Uri uri = Uri.parse(f);

而不是Uri uri = Uri.fromFile(f);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM