2016-10-19 5 views
0

Я разрабатываю приложение для Android. В моем приложении я создаю файл изображения из растрового изображения, а затем сохраняю его на устройстве. Процесс создания файла изображения из растрового изображения и сохранения изображения на устройстве в порядке. Проблема в том, что я не могу найти это созданное изображение в галерее. Но файл действительно существует, когда я ищу его из файлового менеджера.Динамически созданный файл изображения не найден в приложении «Галерея» или «Выбор изображения» в Android

См. Мой код ниже.

File file = null; 
try{ 
    String fileName = String.valueOf(System.currentTimeMillis())+".jpeg"; 
    file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), fileName); 

    if(file.exists()){ 
     file.delete(); 
    } 

    OutputStream os = new BufferedOutputStream(new FileOutputStream(file)); 
    template.getBitmap().compress(Bitmap.CompressFormat.JPEG, 100, os); 
    os.close(); 
    Toast.makeText(context,"Templated saved to your device",Toast.LENGTH_SHORT).show(); 
} 
catch (Exception e) { 
    Toast.makeText(context,e.getMessage(),Toast.LENGTH_SHORT).show(); 
} 

Как вы можете видеть, я сохраняю его в папке с картинками. Я попытался сохранить его в папке загрузки. Файл сохранен на устройстве успешно, но проблема заключается в том, что изображение не отображается в Галерее. Но существуют в файловом менеджере. Как сделать это изображение доступным для поиска в галерее?

ответ

1

попробовать это:

File file = null; 
     try{ 
      String fileName = String.valueOf(System.currentTimeMillis())+".jpeg"; 
      file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), fileName); 

      if(file.exists()) 
      { 
       file.delete(); 
      } 
      OutputStream os = new BufferedOutputStream(new FileOutputStream(file)); 
      template.getBitmap().compress(Bitmap.CompressFormat.JPEG, 100, os); 
      os.close(); 

      Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
      Uri contentUri = Uri.fromFile(file); 
      mediaScanIntent.setData(contentUri); 
      sendBroadcast(mediaScanIntent); 
      Toast.makeText(context,"Templated saved to your device",Toast.LENGTH_SHORT).show(); 
     } 
     catch (Exception e) 
     { 
      Toast.makeText(context,e.getMessage(),Toast.LENGTH_SHORT).show(); 
     } 
+0

Спасибо большое. Это сработало. –

0

Используйте этот код после сохранения файла

try { 

       MediaScannerConnection.scanFile(context, 
         new String[] { mPath }, null, 
         new MediaScannerConnection.OnScanCompletedListener() { 
          public void onScanCompleted(String path, Uri uri) { 

          } 
         }); 

      } catch (Exception e) { 

      }