如何始终保存新名称图像和删除previouse一个(机器人)(how to always save

2019-10-21 07:25发布

我的工作中,我现在的储蓄与同名的图像,并把它发送到画廊意图壁纸应用程序。

因为保存具有相同名称的每一个形象的我有在画廊意图每次都得到相同的图像的问题。

什么情况是新的图像被替换,但我在画廊意图年纪越来越大的图像。 新的图像取代旧图像,但仍意图画廊旧的显示图像,而不是新形象

所以我想每一次保存的图像与新名称同时也删除旧的保存的图像。

注意:始终保存图像为图像++也删除以前的形象了。

我的代码:

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();

        }

    }

Answer 1:

如果你不具备,你可以发送给你的方法参数图像的原始名称。 接着,下面的方法来生成随机文件名:

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();

    }

}


文章来源: how to always save image with new name and delete previouse one (android)