Android copy image from gallery folder onto SD Card alternative folder

后端 未结 2 1521
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-10 09:07

I am looking for someone to assist in the code i require in my application to copya image from where they get stored on the HTC desire as standard(the gallery) to a another

相关标签:
2条回答
  • 2020-12-10 09:28

    Usmaan,

    You can launch the gallery picker intent with the following:

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

    When it returns, get the path of the selected image with the following portion of code:

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

    Now that you have the pathname in a string you can copy it to another location.

    Cheers!

    EDIT: If you just need to copy a file try something like...

    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) {}
    
    0 讨论(0)
  • 2020-12-10 09:35

    Gallery images are already stored in the SD card in Android phones. The official documentation has a nice section on working with external storage, which you should check out.

    0 讨论(0)
提交回复
热议问题