Android从Uri获取实际路径和文件名
Retrurns/external/file/59但我需要/sdcard/downloads/…+文件名Android从Uri获取实际路径和文件名,android,hash,Android,Hash,Retrurns/external/file/59但我需要/sdcard/downloads/…+文件名 我需要这个,因为我想得到一个sha-1,md5,。。。任何文件的哈希。 如果我使用“/external/file/xx”,它会给我一个FileNotFoundException。 我尝试了一些已经提出的解决方案,但似乎没有一个对我有效,或者我不知道如何使用它 Retrurns/external/file/59 这是因为您没有查看Uri的方案getPath()仅当方案是文件时才有意义。使用文件
我需要这个,因为我想得到一个sha-1,md5,。。。任何文件的哈希。
如果我使用“/external/file/xx”,它会给我一个FileNotFoundException。
我尝试了一些已经提出的解决方案,但似乎没有一个对我有效,或者我不知道如何使用它 Retrurns/external/file/59 这是因为您没有查看
Uri
的方案getPath()
仅当方案是文件时
才有意义。使用文件
方案很少会得到Uri
。通常,它将有一个内容
方案,在这种情况下,路径对您来说毫无意义
我需要这个,因为我想得到一个sha-1,md5,。。。任何文件的哈希
使用ContentResolver
和openInputStream()
在Uri
标识的内容上获取InputStream
。将该InputStream
传递给
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();
}
}