Intereting Posts
Утечка памяти класса ClassLoader Определите собственный андроид моего приложения: versionCode во время выполнения Android: добавление представления к определенному макету из кода TypeArray в Android – Как сохранить пользовательские объекты в xml и получить их? Анимация с фрагментами не воспроизводится Прослушать показ клавиатуры или скрыть событие в android Пример утечки памяти для Android из Google I / O RecyclerView вызывает проблемы при утилизации Установка Android sdk. Ошибка: был найден недопустимый контент, начиная с элемента 'd: skin'. На данный момент не ожидается никакого дочернего элемента Панель просмотра студии Android не отображается в ActionBar? Как я могу заполнить RecyclerView с помощью GridLayoutManager справа налево Настройка пунктов меню PopupMenu программно Как сохранить положительные / отрицательные кнопки DialogFragment над мягкой клавиатурой Android: I18n с параметрами Как создать оверлейный вид в рамках действия

Android – Как получить выбранное имя файла из документа

Я запускаю намерение выбрать documnets, используя следующий код.

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 to Upload"), 1); } catch (android.content.ActivityNotFoundException ex) { // Potentially direct the user to the Market with a Dialog Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show(); } } 

В onActivity результаты, когда я пытаюсь получить путь к файлу, он дает другой номер вместо имени файла.

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 1: if (resultCode == RESULT_OK) { // Get the Uri of the selected file Uri uri = data.getData(); File myFile = new File(uri.toString()); String path = myFile.getAbsolutePath(); } break; } super.onActivityResult(requestCode, resultCode, data); } 

Это значение пути я получаю как это. "Content: //com.android.providers.downloads.documents/document/1433" Но я хочу иметь реальное имя файла, например doc1.pdf и т. Д. Как его получить?

Solutions Collecting From Web of "Android – Как получить выбранное имя файла из документа"

Когда вы получаете контент: // uri, вам нужно запросить средство распознавания контента, а затем захватить отображаемое имя.

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 1: if (resultCode == RESULT_OK) { // Get the Uri of the selected file Uri uri = data.getData(); String uriString = uri.toString(); File myFile = new File(uriString); String path = myFile.getAbsolutePath(); String displayName = null; if (uriString.startsWith("content://")) { Cursor cursor = null; try { cursor = getActivity().getContentResolver().query(uri, null, null, null, null); if (cursor != null && cursor.moveToFirst()) { displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); } } finally { cursor.close(); } } else if (uriString.startsWith("file://")) { displayName = myFile.getName(); } } break; } super.onActivityResult(requestCode, resultCode, data); } 

Вы можете попробовать это, я надеюсь, что это поможет u:

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.i("inside", "onActivityResult"); if(requestCode == FILE_MANAGER_REQUEST_CODE) { // Check if the user actually selected an image: if(resultCode == Activity.RESULT_OK) { // This gets the URI of the image the user selected: Uri selectedFileURI = data.getData(); File file = new File(getRealPathFromURI(selectedFileURI)); // Create a new Intent to send to the next Activity: } } } private String getRealPathFromURI(Uri contentURI) { String result; Cursor cursor = getContentResolver().query(contentURI, null, null, null, null); if (cursor == null) { // Source is Dropbox or other similar local file path result = contentURI.getPath(); } else { cursor.moveToFirst(); int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); result = cursor.getString(idx); cursor.close(); } return result; }