Android Studio : How to refresh android Gallery after save image to folder
เคยประสบปัญหาบ้างหรือไม่ว่า เวลาเซฟรูปจากแอปปลิเคชันแล้ว รูปที่เซฟไม่แสดงใน anroid gallery app ทันที แต่ถ้าค้นหารูปที่เซฟโดยการเปิดจาก “ไฟล์ส่วนตัว (Folder Manager)” แล้วไล่ดูจากโฟลเดอร์จะพบว่ามีไฟล์รูปภาพที่เราเซฟไว้แล้ว แต่ทว่าไม่เห็นใน android gallery ทันที
นั่นเพราะว่า android gallery ยังไม่ได้สแกนโฟลเดอร์ใหม่ที่มีการเพิ่มรูปเข้ามานั่นเอง เพราะฉะนั้นก็จะต้องรอเวลาที่ android gallery scan folder รูปภาพใหม่ๆก็จะไปแสดงใน android gallery ได้เอง
คำถาม : แล้วเรามีวิธีการทำให้เห็นใน android gallery ทันทีเลยหรือเปล่า เพราะบางแอปปลเคชันพอเซฟรูปก็ขึ้นใน android gallery ทันที
คำตอบ : มีวิธีสั่งให้ refresh android gallery เพื่อค้นหารูปภาพที่เพิ่งเซฟลงไป โดยเพิ่มโค้ดนี้เข้าไปหลังจากการเซฟ
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File f = new File(“file://”+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)); Uri contentUri = Uri.fromFile(f); mediaScanIntent.setData(contentUri); this.sendBroadcast(mediaScanIntent); } else { sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse(“file://” + Environment.getExternalStorageDirectory()))); } |
หรืออาจใช้วิธีการสแกนไฟล์ที่เพิ่งเซฟลงเครื่องได้ โดยโค้ดที่เรียกใช้มีดังนี้
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file))); |
คราวนี้ลองรันแล้วทดสอบการเซฟรูปดูใหม่ว่าจะเห็นรูปขึ้นมาใน android gallery เลยมั้ย