android выбрать изображение из sdcard

У меня есть imageview с изображением по умолчанию, я хочу, когда пользователь нажимает на изображение, чтобы открыть селектор изображений, затем он выбирает свое изображение с SD-карты, затем изображение находится на изображении,

это мое изображение

XML


Ява

ImageView iv ;
iv_image = (ImageView)findViewById(R.id.iv_signup_image);
        iv_image.setOnClickListener(this);
public void onClick(View v) {
switch (v.getId()) {
        case R.id.iv_signup_image:
break;
}
2
nl ja de
Вы пытаетесь выбрать изображение из галереи onclick изображения и что выбранное изображение снова установлено в Imageview? Это то, что вы хотите ?
добавлено автор GrIsHu, источник
Проверьте мой ответ.
добавлено автор GrIsHu, источник
Позвольте мне попытаться рассказать вам «Секреты поиска» ... прежде всего иметь в виду проблему. Приготовьтесь задавать вопрос об Stackoverflow для этого .. когда вы начнете писать вопрос .. вам придется писать название для что .. сделайте один заголовок ... сейчас STOP ... остановитесь прямо там .. скопируйте заголовок, который вы написали, и вставьте в окно поиска Google. Надеюсь, это поможет вам в следующий раз. !!
добавлено автор MKJParekh, источник
Почему в мире вы поедете для ответа на повторяющийся вопрос, который уже задан и проголосован 100-ю пользователем. stackoverflow.com/questions/2507898/ & hellip;
добавлено автор MKJParekh, источник
Я пробовал свой путь, и Google дал мне ответы, но не точно название, которое я использовал, почему бы вам понравиться? и в этом случае я могу спросить здесь?
добавлено автор user user, источник
@MKJParekh да, это ответ на вопрос, кто мне помогает, извините, я не очень хорошо разбираюсь
добавлено автор user user, источник
@Grishu да, что мне нужно
добавлено автор user user, источник

4 ответы

Я думаю, это то, что вы ищете

if (Environment.getExternalStorageState().equals("mounted")) {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_PICK);
    startActivityForResult(
        Intent.createChooser(
            intent,
            "Select Picture:"),
        requestCode);
}

и для обработки обратного вызова

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Uri selectedImageUri = data.getData();
    String selectedImagePath = getPath(selectedImageUri);
    Bitmap photo = getPreview(selectedImagePath);
}


public String getPath(Uri uri) {
    String res = null;
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = getActivity().getContentResolver().query(uri, proj, null, null, null);
    if(cursor.moveToFirst()){;
        int column_index = cursor.getColumnIndexOrThrow(proj[0]);
        res = cursor.getString(column_index);
    }
    cursor.close();
    return res;
}

public Bitmap getPreview(String fileName) {
    File image = new File(fileName);

    BitmapFactory.Options bounds = new BitmapFactory.Options();
    bounds.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(image.getPath(), bounds);
    if ((bounds.outWidth == -1) || (bounds.outHeight == -1)) {
        return null;
    }
    int originalSize = (bounds.outHeight > bounds.outWidth) ? bounds.outHeight
        : bounds.outWidth;
    BitmapFactory.Options opts = new BitmapFactory.Options();
    opts.inSampleSize = originalSize/64;
    return BitmapFactory.decodeFile(image.getPath(), opts);
}

Надеюсь, поможет

3
добавлено
теперь добавил все, что я надеюсь
добавлено автор Ajay, источник
жаль, что строка была просто заголовком для выбора, а requestCode используется, когда несколько намерений запускают onActivityResult (), это просто дифференциатор.
добавлено автор Ajay, источник
Что такое getPath? Что такое getPreview?
добавлено автор user user, источник
ваш ответ поможет открыть SD-карту для выбора изображения, теперь как установить изображение в мое изображение?
добавлено автор user user, источник
что такое R.string.select_pic и что такое код кода ?
добавлено автор user user, источник
private final int GET_USER_IMAGE_FROM_GALLERY = 10;

ImageView imageView = findViewById(R.id.ivImage);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
        "Select Picture"),
GET_USER_IMAGE_FROM_GALLERY);
});


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

if (requestCode == GET_USER_IMAGE_FROM_GALLERY) {

        if (data != null) {

            Uri selectedImageUri = data.getData();
            String selectedImagePath = getPath(selectedImageUri);

            try {
                File imageFile = new File(selectedImagePath);
                Bitmap bitmap = BitmapFactory.decodeFile(imageFile
                        .getAbsolutePath());

                imageView.setImageBitmap(bitmap);
            } catch (Exception e) {
            }

        }
}

private String getPath(Uri selectedImageUri) {

    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = getContentResolver().query(selectedImageUri,
            projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
1
добавлено
К сожалению. Я добавил его :)
добавлено автор Archie.bpgc, источник
Что такое getPaht , eclipse не распознает его
добавлено автор user user, источник
+1 для вас ......
добавлено автор user user, источник

Вам нужно будет загрузить изображение с SDCard в растровое изображение, а затем установить растровое изображение в ImageView:

Bitmap bmp = BitmapFactory.decodeFile("/path/to/file.png");
iv_image.setImageBitmap(bmp);

Как указано в yahya , вы также можете создать вытаскиваемый из файла изображения SDCard, а затем установить изображение:

iv_image.setImageDrawable(Drawable.createFromPath("/path/to/file.png"));

Вы также должны убедиться, что в вашем манифесте вы включаете разрешение на чтение (/ запись) на SDCard.

1
добавлено
Рад помочь.
добавлено автор Matt Clark, источник
На этой неделе я проведу несколько тестов, чтобы узнать, какая из них эффективнее xD
добавлено автор Matt Clark, источник
Или как вытягиваемый ... iv_image.setImageDrawable (Drawable.createFromPath ("/ path/to/& zwnj; file.png"));
добавлено автор yahya, источник
Пожалуйста, сообщите нам, какой из них эффективнее :)
добавлено автор yahya, источник
я действительно спросил его @MattClark, потому что он сказал, что он сделает некоторые тесты :) В любом случае рад, что вы получили свое решение :)
добавлено автор yahya, источник
+1 для вас ..... и decodeFile для меня лучше
добавлено автор user user, источник
@yahya ok, когда он работает
добавлено автор user user, источник
Я не знаю путь к изображению, пользователь будет выбирать любое изображение из SD-карты, чтобы быть его образ профиля, а что такое path/to/file.png ?
добавлено автор user user, источник

Попробуйте приведенный ниже код.

public class MainActivity extends Activity {
ImageView iv_image,img1;
int column_index;
  Intent intent=null;
// Declare our Views, so we can access them later
String logo,imagePath,Logo;
Cursor cursor;
//YOU CAN EDIT THIS TO WHATEVER YOU WANT
private static final int SELECT_PICTURE = 1;

 String selectedImagePath;
//ADDED
 String filemanagerstring;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    img1= (ImageView)findViewById(R.id.image1);
    iv_image= (ImageView)findViewById(R.id.iv_signup_image);

    img1.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

           //in onCreate or any event where your want the user to
           //select a file
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent,
                    "Select Picture"), SELECT_PICTURE);
       }
    });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Uri selectedImageUri = data.getData();

            //OI FILE Manager
            filemanagerstring = selectedImageUri.getPath();

            //MEDIA GALLERY
            selectedImagePath = getPath(selectedImageUri);


            img.setImageURI(selectedImageUri);

           imagePath.getBytes();
           TextView txt = (TextView)findViewById(R.id.title);
           txt.setText(imagePath.toString());

           Bitmap bm = BitmapFactory.decodeFile(imagePath);
           iv_image.setImageBitmap(bm);



        }

    }

}

//UPDATED!
public String getPath(Uri uri) {
String[] projection = { MediaColumns.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
column_index = cursor
        .getColumnIndexOrThrow(MediaColumns.DATA);
cursor.moveToFirst();
 imagePath = cursor.getString(column_index);

return cursor.getString(column_index);
}

}

Надеюсь, это поможет вам.

Благодарю.

1
добавлено
Обратите внимание, что метод onActivityResult вызывается после выбора изображения. В этом методе мы проверяем, была ли инициированная деятельность действительно графической галереей (обычно для запуска разных целей из одного и того же вида деятельности и получения результата от каждого). Для этого мы использовали целое число SELECT_PICTURE, которое мы ранее передали методу startActivityForResult ().
добавлено автор GrIsHu, источник
Большое спасибо .. :) Рад помочь вам ..
добавлено автор GrIsHu, источник
+1 к тебе ......
добавлено автор user user, источник
не нужно ли мне использовать прослушиватель активности? или somethign?
добавлено автор user user, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)