我正在尝试使用Android浏览器获取文件的完整路径。因此,我使用以下代码:
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a file"), FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "You don't have a browser installed", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==FILE_SELECT_CODE && resultCode==Activity.RESULT_OK) {
// Get the Uri of the selected file
Uri uri = data.getData();
Log.d(TAG, "URI del archivo a enviar: " + uri.toString());
// Get the path
final String path=Environment.getExternalStorageDirectory().toString()+uri.getPath();
Log.d(TAG, "Path del archivo a enviar: " +path);
File archivoPruebaParaSaberSiExiste = new File(path);
if(archivoPruebaParaSaberSiExiste.exists()) {
Log.d(TAG,"File exists");
else{
Log.d(TAG,"File does not exist");
}
}
super.onActivityResult(requestCode, resultCode, data);
}
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
但是,我没有得到文件路径:
The file path which i get is:
/storage/emulated/0/data/external/images/media/1949
The actual path is:
/storage/emulated/0/DCIM/Camera/20165481_133918.jpg
我不知道发生了什么。
答案 0 :(得分:0)
我正在尝试使用Android浏览器获取文件的完整路径。
您没有选择文件。您正在挑选一段内容。不要求这是一个文件。
但是,我没有得到文件路径
同样,所选内容不一定是文件。
根据您的结果,Uri
的方案为content
,而不是file
。这是完全正常的,将来会成为Uri
的主要形式。要consume a content
Uri
,请使用ContentResolver
和openInputStream()
等方法。