При выборе Недавние файлы получают контент-провайдер с нулевым значением - PullRequest
0 голосов
/ 04 сентября 2018

Код работает нормально при выборе файла / изображения из Gallary, файлового менеджера, папки загрузки. я могу получить путь к файлу от URI с помощью поставщика содержимого. но при выборе последних файлов в naugat версия Android API 7.0 и выше поставщик содержимого возвращает ноль. Я уже потратил два дня на это, и теперь я собираюсь потрясти свой разум, чтобы заставить это работать. Я искал на SO и не нашел ни одного вопроса, связанного с моим. Поэтому я публикую свой вопрос.

Вот здесь палитра Intent

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(mimeTypes.length == 1 ? mimeTypes[0] : "*/*");
if (mimeTypes.length > 0) {
  intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
}
activity.startActivityForResult(intent, activity.Add_TOPIC_REQUEST_STORAGE);

И вот я извлекаю данные из намерения. Данные

if (data.getData() != null) {
  Uri uri = data.getData();
  Log.d(TAG, "onActivityResult:  => checkingIntentCodeAndShowImage => INTETNT_OPEN_FOR_GALLERY_RIGHT_IMAGE is called - getting imageurl from intent data" + uri);

  String mimeType = activity.getContentResolver().getType(uri);
      if (mimeType == null) {
          String path = getPath(activity, uri);
          cMethods.cmShowLog(TAG,"checkingIntentCodeAndShowImage => path => " +path);

          if (path == null) {
              cMethods.cmShowLog(TAG,"checkingIntentCodeAndShowImage => path => " +path);
              cMethods.cmShowToast(strings.unexpected_error_occured, getActivityContext);
              cMethods.cmShowToast("file path is null ", getActivityContext);

              //filename = FilenameUtils.getName(uri.toString());
          } else {
              picturePath = path;
              File file = new File(path);
              cMethods.cmShowLog(TAG,"checkingIntentCodeAndShowImage => file => " +picturePath);
              //filename = file.getName();
              updatingCamerImageList(cMethods, picturePath, activity, openedFor, filesFiledsListValue, productOptionValueIdAndOptionId, pojo);

          }
      } else {
          String[] filePath = {MediaStore.Images.Media.DATA};
          Cursor c = activity.getContentResolver().query(uri, filePath, null, null, null);
          c.moveToFirst();
          int columnIndex = c.getColumnIndex(filePath[0]);
          picturePath = c.getString(columnIndex);
          c.close();
          cMethods.cmShowLog(TAG,"checkingIntentCodeAndShowImage => picturePath => " +picturePath);
          if(picturePath!=null) {
              updatingCamerImageList(cMethods, picturePath, activity, openedFor, filesFiledsListValue, productOptionValueIdAndOptionId, pojo);
          } else {
              cMethods.cmShowToast(strings.unexpected_error_occured, getActivityContext);
              cMethods.cmShowToast("content provider return value", getActivityContext);
          }


      }
} else {
  Log.d(TAG, "onActivityResult:  addPostImagesList code 12  - intent data is null");
  cMethods.cmShowToast(strings.unexpected_error_occured, getActivityContext);
  cMethods.cmShowToast("uri is null", getActivityContext);
}

Я получаю только нулевое значение пути из URI при выборе последних файлов в Naugat.

...