我是新來的android,我複製文件到/存儲/ sdcard1從主機使用ADB推。 但無法從圖庫應用程序中查看文件。它通過ls命令顯示,當我重新啓動設備時,圖庫應用程序正常顯示文件。但立即它不在圖庫中更新,那麼任何人都可以幫我解決這個問題嗎?圖像不更新在畫廊
在此先感謝
我是新來的android,我複製文件到/存儲/ sdcard1從主機使用ADB推。 但無法從圖庫應用程序中查看文件。它通過ls命令顯示,當我重新啓動設備時,圖庫應用程序正常顯示文件。但立即它不在圖庫中更新,那麼任何人都可以幫我解決這個問題嗎?圖像不更新在畫廊
在此先感謝
因爲您的圖庫數據庫未更新。
您可以運行媒體掃描儀手動
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
或用手使用
MediaStore.Images.Media.insertImage();
您還可以插入畫廊(媒體)DB。
private Uri insertMediaStore(String dirPath, String filename, byte[] jpegByteArray) {
String filePath = dirPath + "/" + filename;
try {
ContentValues values = new ContentValues();
values.put(Images.Media.DATE_TAKEN, new Date().getTime());
values.put(Images.Media.ORIENTATION, "0");
String title = filename.replace(".jpg", "");
values.put(Images.Media.TITLE, title);
values.put(Images.Media.DISPLAY_NAME, filename);
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put(Images.Media.SIZE, jpegByteArray.length);
values.put("_data", filePath);
Uri uri = getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
OutputStream os = getContentResolver().openOutputStream(uri);
os.write(jpegByteArray);
os.close();
Logger.info("MediaStore Inserted URI:" + uri.toString());
return uri;
} catch(Exception ex) {
Logger.error(ex, "Failed to save the Bitmap file. FilePath: %s", filePath);
}
return null;
}
你必須通知媒體掃描儀捕捉到新創建的文件的元數據。像Gallery這樣的應用程序在元數據數據庫上工作,而不是直接在文件系統上。
以編程方式,您將使用MediaScannerConnection
。
由於您正在使用adb,因此您可以send a broadcast to invoke media scanner。
媒體掃描程序作爲引導順序的一部分運行,所以這就是重新啓動後它工作的原因。
你使用任何文件瀏覽器?這與刷新數據有關,如果你使用ES File Explorer,那麼你有一個刷新按鈕。點擊它刷新。 – Prateek