Переименование выбранного изображения из галереи - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь создать приложение, в котором пользователь выбирает изображение из галереи и может переименовать его в нужное имя. Код для получения изображения из галереи:

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
            photoPickerIntent.setType("image/*");
            startActivityForResult(photoPickerIntent, RESULT_LOAD_IMG);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK){
        try {
            upload.setVisibility(View.INVISIBLE);
            Image.setVisibility(View.VISIBLE);
            final Uri imageUri = data.getData();
            final InputStream imageStream = getContentResolver().openInputStream(imageUri);
            final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);

            Image.setImageBitmap(selectedImage);
            Log.i("FileName is", fileName);
        } catch (FileNotFoundException e){
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),"Error Loading Image",Toast.LENGTH_LONG).show();
        }
    } else {
        Toast.makeText(getApplicationContext(),"Please select an image",Toast.LENGTH_LONG).show();
    }
}

Я видел несколько сообщенийкоторые используют from и to для переименования изображений, но я не могу понять, как это работает и как установить желаемое имя (которое будет введено пользователем через editText).

Любая помощьбудет оценена

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Вот код, который может вам помочь

    File sdcard = Environment.getExternalStorageDirectory();
    File from = new File(sdcard, "from.txt");
    File to = new File(sdcard, "to.txt");
    if (updateFileName(context, from, to))
        Log.d("File Rename", "Successfully renamed");
    else Log.d("File Rename", "Rename filed");

 public static boolean updateFileName(Context mContext, File from, File to) {
        if (from.renameTo(to)) {
            removeMedia(mContext, from);
            updateMediaInGallery(mContext, to);
            return true;
        } else {
            return false;
        }
    }

    public static void updateMediaInGallery(Context c, File f) {
        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        intent.setData(Uri.fromFile(f));
        c.sendBroadcast(intent);
    }

    private static void removeMedia(Context c, File f) {
        ContentResolver resolver = c.getContentResolver();
        resolver.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media.DATA + "=?", new String[]{f.getAbsolutePath()});
    }
0 голосов
/ 15 ноября 2018

Здесь вы можете найти соответствующее решение @Davewebb, и вы запутались в from to

File sdcard = Environment.getExternalStorageDirectory();
File from = new File(sdcard,"from.txt");
File to = new File(sdcard,"to.txt");
from.renameTo(to);

from.txt ваше старое имя и новое имя будет здесь to.txt

для внутреннего хранилища, вы можете прочитать файл, подобный этому, и проделаете тот же процесс, что и выше

private String readFileFromInternalStorage(){
ImageView imageView = (ImageView) findViewById(R.id.image);
ContextWrapper cw = new ContextWrapper(context);

//path to /data/data/yourapp/app_data/dirName
File directory = cw.getDir("dirName", Context.MODE_PRIVATE);          
File mypath=new File(directory,"imagename.jpg");

ImageView imageView = (ImageView) findViewById(R.id.image);
    imageView.setImageDrawable(Drawable.createFromPath(mypath.toString()));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...