第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將content:// URI轉(zhuǎn)換為Android 4.4中的實(shí)際路徑

將content:// URI轉(zhuǎn)換為Android 4.4中的實(shí)際路徑

一只萌萌小番薯 2019-12-10 13:09:14
我嘗試了一種運(yùn)行良好的解決方案(請(qǐng)參見下文),但在Android 4.4中,該調(diào)用調(diào)出startActivityForResult()了一個(gè)名為“打開自”的活動(dòng),該活動(dòng)包含“最近”,“圖像”,“下載”以及可供選擇的多個(gè)應(yīng)用。當(dāng)我選擇“圖像”并嘗試解析返回的內(nèi)容URI(使用下面的代碼)時(shí),調(diào)用cursor.getString()返回null。如果我使用Gallery應(yīng)用程序選擇了完全相同的文件,則cursor.getString()返回文件路徑。我只在API級(jí)別16和19中對(duì)此進(jìn)行了測(cè)試。一切都可以在16中按預(yù)期進(jìn)行。就19而言,我必須選擇Gallery或其他應(yīng)用程序,否則它將不起作用。private String getRealPathFromURI(Context context, Uri contentUri) {    Cursor cursor = null;    try {         String[] proj = { MediaStore.Images.Media.DATA };        cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);        cursor.moveToFirst();        String path = cursor.getString(column_index);        return path;    } finally {        if (cursor != null) {            cursor.close();        }    }}
查看完整描述

3 回答

?
翻翻過去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

將content:// URI轉(zhuǎn)換為Android 4.4中的實(shí)際路徑


在任何Android版本上都沒有可靠的方法來執(zhí)行此操作。A content:// Uri不必代表文件系統(tǒng)上的文件,更不用說您可以訪問的文件了。


Android 4.4提供存儲(chǔ)框架的更改只是增加了您遇到content:// Uri值的頻率。


如果得到a content:// Uri,請(qǐng)使用ContentResolver和方法(例如openInputStream()和)使用它openOutputStream()。



查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

我也一直面臨這個(gè)問題,但就我而言,我想做的就是為Gallery指定一個(gè)具體的Uri,以便以后可以使用裁剪??雌饋碓谛碌腒itKat文檔瀏覽器中,除非您在導(dǎo)航抽屜中選擇galery,然后像您說的那樣直接從那里打開圖像或文件,否則我們將無法再這樣做。


在Uri情況下,從文檔瀏覽器打開時(shí),您仍然可以檢索路徑。


    Intent dataIntent= new Intent(Intent.ACTION_GET_CONTENT);

    dataIntent.setType("image/*"); //Or whatever type you need

然后在onActivityResult中:


@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == ACTIVITY_SELECT_IMAGE && resultCode == RESULT_OK) {

        myUri = data.getData();

        String path = myUri.getPath();

        openPath(myUri);


    }

}

如果您需要然后使用該路徑打開文件,則只需使用Content Resolver:


public void openPath(Uri uri){

    InputStream is = null;

    try {

        is = getContentResolver().openInputStream(uri);

        //Convert your stream to data here

        is.close();


    } catch (FileNotFoundException e) {

        e.printStackTrace();

    } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }

}



查看完整回答
反對(duì) 回復(fù) 2019-12-12
  • 3 回答
  • 0 關(guān)注
  • 528 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)