Android скопировать изображение из папки галереи на альтернативную папку SD-карты - PullRequest
3 голосов
/ 07 февраля 2011

Я ищу кого-то, кто поможет в коде, который мне нужен в моем приложении, чтобы скопировать изображение из того места, где оно хранится на HTC desire в стандартной комплектации (галерея), в другую папку на SD-карте. Я хочу, чтобы пользователь мог нажимать на кнопку, и определенный файл копируется из папки галереи на SD-карте в другую папку на SD-карте? Спасибо

Ответы [ 2 ]

25 голосов
/ 07 февраля 2011

Usmaan,

Вы можете запустить намерение выбора галереи следующим образом:

    public void imageFromGallery() {
    Intent getImageFromGalleryIntent = 
      new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
    startActivityForResult(getImageFromGalleryIntent, SELECT_IMAGE);
}

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

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        switch(requestCode) {
        case SELECT_IMAGE:
            mSelectedImagePath = getPath(data.getData());
            break;
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    startManagingCursor(cursor);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

Теперь, когда у вас есть путь в строке, вы можете скопировать его в другое место.

Ура!

РЕДАКТИРОВАТЬ: Если вам просто нужно скопировать файл, попробуйте что-то вроде ...

try {
    File sd = Environment.getExternalStorageDirectory();
    File data = Environment.getDataDirectory();
    if (sd.canWrite()) {
        String sourceImagePath= "/path/to/source/file.jpg";
        String destinationImagePath= "/path/to/destination/file.jpg";
        File source= new File(data, sourceImagePath);
        File destination= new File(sd, destinationImagePath);
        if (source.exists()) {
            FileChannel src = new FileInputStream(source).getChannel();
            FileChannel dst = new FileOutputStream(destination).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
        }
    }
} catch (Exception e) {}
1 голос
/ 07 февраля 2011

Галерея изображений уже хранится на SD-карте в телефонах Android.В официальной документации есть хороший раздел по работе с внешним хранилищем , который вы должны проверить.

...