같은 이름으로 이미지를 저장하고 갤러리 의도로 보내는 배경 화면 앱을 작업 중입니다.
모든 이미지를 같은 이름으로 저장하기 때문에 갤러리 의도에서 매번 같은 이미지를 얻는 데 문제가 있습니다.
무슨 일이 일어나고 있는지 새로운 이미지가 대체되지만 갤러리 의도에서 오래된 이미지를 얻고 있습니다. 새 이미지가 이전 이미지를 대체하지만 여전히 갤러리 의도에 새 이미지 대신 이전 이미지가 표시됨
그래서 매번 새 이름으로 이미지를 저장하고 이전에 저장된 이미지도 삭제하고 싶습니다.
참고 : 항상 이미지를 image ++로 저장하고 이전 이미지도 삭제하십시오.
내 코드 :
public void setAsWallpaper(Bitmap bitmap) {
String dirname2 = "/Wallpaper/";
File myDir2 = new File(Environment.getExternalStorageDirectory()
.getPath() + dirname2);
myDir2.mkdirs();
String fname2 = "image" + ".jpg";
File file2 = new File(myDir2, fname2);
if (file2.exists())
file2.delete();
try {
FileOutputStream out = new FileOutputStream(file2);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
success = true;
} catch (Exception e) {
Toast.makeText(_context, "failed", Toast.LENGTH_SHORT).show();
}
if (success) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_ATTACH_DATA);
intent.setDataAndType(Uri.parse("file://"
+ "/sdcard/Wallpaper/image.jpg"), "image/*");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(intent);
} else {
Toast.makeText(_context, "failed", Toast.LENGTH_SHORT).show();
}
}
이미지의 원래 이름이없는 경우 매개 변수로 메소드에 보낼 수 있습니다. 그런 다음 임의의 파일 이름을 생성하는 다음 방법 :
public String random() {
Random generator = new Random();
StringBuilder randomStringBuilder = new StringBuilder();
int randomLength = generator.nextInt(MAX_LENGTH);
char tempChar;
for (int i = 0; i < randomLength; i++){
tempChar = (char) (generator.nextInt(96) + 32);
randomStringBuilder.append(tempChar);
}
return randomStringBuilder.toString();
}
나는 보통 내 폴더의 모든 파일을 던지고 거기에서 모든 이미지를 삭제합니다 (항상 하나의 이미지 임). 그런 다음 다음과 같이 임의의 이름으로 새 이름을 저장하십시오.
public void setAsWallpaper(Bitmap bitmap) {
String dirname2 = "/Wallpaper/";
File myDir2 = new File(Environment.getExternalStorageDirectory()
.getPath() + dirname2);
// delete folder and all files in it. then re-create it.
if(myDir2.exists()) {
String[] myFiles = myDir2.list();
for (int i=0; i<myFiles.length; i++) {
File myFile = new File(myDir2, myFiles[i]);
myFile.delete();
}
myDir2.delete();
}
myDir2.mkdirs();
String fname2 = random() + ".jpg";
File file2 = new File(myDir2, fname2);
if (file2.exists())
file2.delete();
try {
FileOutputStream out = new FileOutputStream(file2);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
success = true;
} catch (Exception e) {
Toast.makeText(_context, "failed", Toast.LENGTH_SHORT).show();
}
if (success) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_ATTACH_DATA);
intent.setDataAndType(Uri.parse("file://"
+ "/sdcard/Wallpaper/" + fname2), "image/*");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(intent);
} else {
Toast.makeText(_context, "failed", Toast.LENGTH_SHORT).show();
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다