0

OutputStream을 사용하여 res/drawable에서 Gallery까지 이미지를 저장하고 있습니다. 그것은 잘 작동하고 이미지를 저장합니다. 하지만 문제는 갤러리의 이미지를 업데이트하지 않는다는 것입니다. ES File Explorer을 사용하여 폴더를 확인하면 거기에 이미지가 표시됩니다. 나는 또한 ddms을 확인했는데, write 코드를 실행하자마자 이미지를 업데이트했다.

서버 이미지를 저장하면 정상적으로 작동합니다. 이 문제를 방지하는 방법은 무엇입니까? 이미지 저장과 동시에 갤러리를 업데이트하고 싶습니다.

MediaScanner도 폴더를 검사했지만 아무런 효과가 없습니다.

내 코드 : 당신의 sdcard에 외부 폴더를 만든 다음 그 다음 GALLARY에 표시 코드 아래 사용하지저장된 이미지는 갤러리 안드로이드에서 볼 수 없습니다.

Toast.makeText(context, "Downloading Image...\nPlease Wait.", 
       Toast.LENGTH_LONG).show(); 

     File direct = new File(Environment.getExternalStorageDirectory() 
       + "/Images"); 

     if (!direct.exists()) { 
      direct.mkdirs(); 
     } 

     DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy-HHmmss"); 
     Date date = new Date(); 
     String CurrentDateTime = dateFormat.format(date); 

     InputStream input = null; 
     OutputStream output = null; 

     try { 
      input = context.getResources().openRawResource(
        context.getResources().getIdentifier(
          "@drawable/" + picName, "drawable", 
          context.getPackageName())); 
      output = new FileOutputStream(direct + "/" + "IMG-" 
        + CurrentDateTime + ".jpg"); 

      byte[] buf = new byte[1024]; 
      int len; 
      while ((len = input.read(buf)) > 0) { 
       output.write(buf, 0, len); 
      } 

      MediaScannerConnection.scanFile(context, 
        new String[] { direct.toString() }, null, 
        new MediaScannerConnection.OnScanCompletedListener() { 
         public void onScanCompleted(String path, Uri uri) { 
          Log.i("ExternalStorage", "Scanned " + path + ":"); 
          Log.i("ExternalStorage", "-> uri=" + uri); 
         } 
        }); 

      Toast.makeText(context, "Image Saved.", Toast.LENGTH_LONG).show(); 
     } catch (Exception e) { 
      Log.e("Internal Image Save Error->", e.toString()); 

      Toast.makeText(context, 
        "Couldn't Save Image.\nError:" + e.toString() + "", 
        Toast.LENGTH_LONG).show(); 
     } finally { 
      try { 
       if (input != null) { 
        input.close(); 
       } 
       if (output != null) { 
        output.close(); 
       } 
      } catch (IOException ignored) { 
       Log.e("Internal Image Save Error->", ignored.toString()); 

       Toast.makeText(
         context, 
         "Couldn't Save Image.\nError:" + ignored.toString() 
           + "", Toast.LENGTH_LONG).show(); 
      } 
     } 
+0

@ZerO, 내 게시물은 이미지 저장 방법이 아닙니다. 그것은 갤러리 업데이트에 관한 것입니다. – CSAT

+0

예. 그리고 지금 복제물에있는 내용을 읽어보십시오. – PKlumpp

답변

1

외부 디렉토리를 방송한다 ...

sendBroadcast(new Intent(
       Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
       Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

합니다.

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
      Runtime.getRuntime().exec(
        "am broadcast -a android.intent.action.MEDIA_MOUNTED -d file://" 
          + CommonVariable.abc_FOLDER); 
     } else { 
      sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
        Uri.parse("file://" + CommonVariable.abc_FOLDER))); 
     } 

다른 검색 방법.

Uri contentUri = Uri.fromFile(destFile); 
     Intent mediaScanIntent = new Intent(
       Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
     mediaScanIntent.setData(contentUri); 
     sendBroadcast(mediaScanIntent); 

나는 당신에게 유용 할 것입니다.

+0

제가 이것을 시도하겠습니다. 그러나 서버에서 이미지를 저장하면 왜 제대로 작동합니까? – CSAT

+0

나는 모든 것을 시도했지만 그들 중 누구도 일하지 않고있다. – CSAT

+0

이 코드는 그 때 sdcard에 이미지를 저장할 때 .. – dipali

관련 문제