Android Studio 的 TextView 中的文件名未正确显示
File name is not displaying correctly in the TextView in Android Studio
我正在开发一个应用程序(是的,我是应用程序开发的初学者,所以如果您有任何建议可以代替我发布的代码,请说出来)。我正在尝试加载一个音频文件,以便稍后在使用该应用程序时进行处理。但我现在坚持的是以下内容。当您单击 "add" 时,它会将您带到需要 select 音频文件的文件资源管理器。一旦文件被 selected,文件名需要显示在 TextView 中。我遇到的问题是文件名显示不正确。
测试文件名:测试音频文件.mp3
TextView 中的结果:primary%3ADownload%2FTest%20audio%20file.mp3
所以它将整个路径设置为带有 % 符号等的 TextView,我不知道为什么。如何让它只正确显示文件名而不显示完整路径?
打开文件资源管理器的代码:
Intent explorer = new Intent(Intent.ACTION_GET_CONTENT, MediaStore.Audio.Media.INTERNAL_CONTENT_URI);
startActivityForResult(explorer, SELECT_AUDIO_FILE);
检索文件名并将其设置为 TextView 的代码:
audioUri = data.getData();
File fileToProcess = new File("" + audioUri);
String audioFileName = fileToProcess.getName();
fileNameDisplay.setText(audioFileName);
你可以尝试这样的事情。 %2F 是正斜杠 '/' 的 URL 编码,它是文件路径的一部分。通过在拆分后获取数组中的最后一个元素,您应该只获得 'Test%20audio%20file.mp3' 字符串。然后,您需要用真正的 ' ' 字符替换编码的 ' ' 字符。
/* String to split. */
String stringToSplit = "primary%3ADownload%2FTest%20audio%20file.mp3";
String[] tempArray;
/* delimiter */
String delimiter = "%2F";
/* given string will be split by the argument delimiter provided. */
tempArray = stringToSplit.split(delimiter);
String result = tempArray[tempArray.length - 1];
result = result.replace("%20", " ");
fileNameDisplay.setText(result);
我花了一些时间搜索和阅读,最后得到以下代码,它只显示文件名。它在我测试过的所有模拟器和物理设备上运行良好。
Uri returnUri = data.getData();
Cursor returnCursor =
getContentResolver().query(returnUri, null, null, null, null);
int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
returnCursor.moveToFirst();
fileNameDisplay.setText(returnCursor.getString(nameIndex));
我正在开发一个应用程序(是的,我是应用程序开发的初学者,所以如果您有任何建议可以代替我发布的代码,请说出来)。我正在尝试加载一个音频文件,以便稍后在使用该应用程序时进行处理。但我现在坚持的是以下内容。当您单击 "add" 时,它会将您带到需要 select 音频文件的文件资源管理器。一旦文件被 selected,文件名需要显示在 TextView 中。我遇到的问题是文件名显示不正确。
测试文件名:测试音频文件.mp3
TextView 中的结果:primary%3ADownload%2FTest%20audio%20file.mp3
所以它将整个路径设置为带有 % 符号等的 TextView,我不知道为什么。如何让它只正确显示文件名而不显示完整路径?
打开文件资源管理器的代码:
Intent explorer = new Intent(Intent.ACTION_GET_CONTENT, MediaStore.Audio.Media.INTERNAL_CONTENT_URI);
startActivityForResult(explorer, SELECT_AUDIO_FILE);
检索文件名并将其设置为 TextView 的代码:
audioUri = data.getData();
File fileToProcess = new File("" + audioUri);
String audioFileName = fileToProcess.getName();
fileNameDisplay.setText(audioFileName);
你可以尝试这样的事情。 %2F 是正斜杠 '/' 的 URL 编码,它是文件路径的一部分。通过在拆分后获取数组中的最后一个元素,您应该只获得 'Test%20audio%20file.mp3' 字符串。然后,您需要用真正的 ' ' 字符替换编码的 ' ' 字符。
/* String to split. */
String stringToSplit = "primary%3ADownload%2FTest%20audio%20file.mp3";
String[] tempArray;
/* delimiter */
String delimiter = "%2F";
/* given string will be split by the argument delimiter provided. */
tempArray = stringToSplit.split(delimiter);
String result = tempArray[tempArray.length - 1];
result = result.replace("%20", " ");
fileNameDisplay.setText(result);
我花了一些时间搜索和阅读,最后得到以下代码,它只显示文件名。它在我测试过的所有模拟器和物理设备上运行良好。
Uri returnUri = data.getData();
Cursor returnCursor =
getContentResolver().query(returnUri, null, null, null, null);
int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
returnCursor.moveToFirst();
fileNameDisplay.setText(returnCursor.getString(nameIndex));