【问题标题】:Android get the real path and file name from UriAndroid从Uri获取真实路径和文件名
【发布时间】:2017-02-22 02:49:40
【问题描述】:
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。
我尝试了一些已经提出的解决方案,但似乎没有一个对我有用,或者我不知道如何使用它

【问题讨论】:

    标签: android hash


    【解决方案1】:

    返回 /external/file/59

    那是因为你没有看Uri的方案。 getPath() only 如果方案是 file 才有意义。您很少会得到带有file 方案的Uri。通常,它会有一个content 方案,在这种情况下,路径对你来说毫无意义。

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

    使用ContentResolveropenInputStream()Uri 标识的内容上获得InputStream。将InputStream 传递给your hashing algorithm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多