繁体   English   中英

Android从Uri获取真实路径和文件名

[英]Android get the real path and file name from Uri

public void fileSearching(){
    try{
        // find1, find2 are buttons that open the file explorer
        find1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                Intent i = new Intent();
                i.setAction(Intent.ACTION_GET_CONTENT);
                i.setType("file/*");
                check = 0;
                startActivityForResult(i, CODE);
            }
        });
        find2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent();
                i.setAction(Intent.ACTION_GET_CONTENT);
                i.setType("file/*");
                check = 1;
                startActivityForResult(i, CODE);
            }
        });
    }
    catch (Exception ex){}
}
@Override
public void onActivityResult(int request, int result, Intent data){
    if (request == CODE && result == RESULT_OK){
        Uri u = data.getData();
        String path = data.getData().getPath();
    }
}

拒绝/ external / file / 59,但我需要/ sdcard / downloads / ... +文件名
我需要这个,因为我想获取任何文件的sha-1,md5,...哈希。
如果我使用“ / external / file / xx”,它将给我FileNotFoundException。
我已经尝试了一些已经提出的解决方案,但似乎对我没有用,或者我不知道如何使用它

拒绝/ external / file / 59

那是因为您没有看过Uri的方案。 如果方案为filegetPath() 具有含义。 您很少会获得带有file方案的Uri 通常,它将具有一个content方案,在这种情况下,该路径对您毫无意义。

我需要这个,因为我想获取任何文件的sha-1,md5,...哈希。

使用ContentResolveropenInputStream()获得有关Uri标识的内容的InputStream 将该InputStream传递给您的哈希算法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM