Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Kadagor
12 / 12 / 4
Регистрация: 17.09.2015
Сообщений: 47
#1

Обработка Uri.getPath() - Программирование Android

17.09.2015, 21:27. Просмотров 223. Ответов 0
Метки нет (Все метки)

Есть две активности.
Первая активность служит для выбора аватарки пользователя.
Структура: ImageView(1) для отображения фотки пользователя, ImageView(2) в качестве кнопки для запуска камеры, ImageView(3) в качестве кнопки для открытия галереи.
Принцип работы:
Вариант 1. По нажатию на картинку 2 запускается приложение камеры. Снимок сохраняется в файл. Путь к снимку сохраняется в настройках в переменную userAvaPath. Изображение картинки 1 меняется на сохранённый снимок.
Вариант 2. По нажатию на картинку 3 открывается приложение галереи. Пользователь выбирает изображение. Путь к изображению сохраняется в настройках в переменную userAvaPath. Изображение картинки 1 меняется на выбранное изображение.
Фрагмент кода обработки клика:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public void onClick(View v) {
        switch (v.getId()){
            case R.id.buttonFoto:
                File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+"ava.jpg");
                fileUri = Uri.fromFile(file);
                if(fileUri!=null) {
                    try {
                        Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                        captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
                        startActivityForResult(captureIntent, CAMERA_CAPTURE);
                    } catch (ActivityNotFoundException e) {                     
                    }
                }else{
                }//file error;
                break;
            case R.id.buttonGaleri:
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                photoPickerIntent.setType("image/*");
                startActivityForResult(photoPickerIntent, PICK_IMAGE);
                break;
        }
    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode){
                case CAMERA_CAPTURE:
                    File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+"ava.jpg");
                    fileUri = Uri.fromFile(file);
                    break;
                case PICK_IMAGE:
                    fileUri = data.getData();
                    break;
            }
            try {
                final InputStream imageStream = getContentResolver().openInputStream(fileUri);
                final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
                userAva.setImageBitmap(selectedImage);
                int mode = Activity.MODE_PRIVATE;
                mySharedPreferences = getSharedPreferences(MainActivity.preferenseFile, mode);
                SharedPreferences.Editor editor = mySharedPreferences.edit();
                    editor.putBoolean("fViewUserAvaDialog", false)
                            .putString("userAvaPath", fileUri.getPath())
                            .apply();
                Toast toast = Toast.makeText(this, fileUri.getPath(), Toast.LENGTH_SHORT);
                toast.show();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
Вторая активность обрабатывает переменную userAvaPath и выводит изображение пользователя.
Фрагмент кода обработки переменной:
Java
1
2
3
4
5
6
7
8
9
try{
  File file = new File(userAvaPath);
  Uri fileUri = Uri.fromFile(file);
  final InputStream imageStream = getContentResolver().openInputStream(fileUri);
  final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
  userFoto.setImageBitmap(selectedImage);
}catch (FileNotFoundException e) {
  e.printStackTrace();
}
Изменение картинки активности №1 происходит успешно в любом случае. В случае, когда userAvaPath хранит путь к снимку с камеры фото пользователя отображается корректно и на активности №2. Если userAvaPath хранит путь к картинке из галереи, вторая активность не отображает изображение картинки.
Подскажите пожалуйста в чем может быть причина и как ее можно устранить. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2015, 21:27     Обработка Uri.getPath()
Посмотрите здесь:

Работа с URI - Программирование Android
Здраствуйте... у меня в базе записан адрес к картинке в String-говом типе я ево читаю и мне теперь нужно открыть эту картинку в ImageView ...

Переменная типа Uri - Программирование Android
программа у меня при запуске предлагает выбрать фото из произвольного местал, после выбора я получаю fileUri тип этой переменной Uri, но...

Не достается картинка через Uri - Программирование Android
Добрый день! Есть такая проблема: андроид приложение с маленькой БД, в ней хранятся путь до файла с картинкой, дабы потом в другом месть...

Получить путь к текстовому файлу по его Uri - Программирование Android
Доброго времени суток. Необходимо прочитать и десериализовать файл XML. Запуская неявный Intent указываю нужный файл и в...

Чтение ассоциированного .txt файла с внутренней памяти по URI - Программирование Android
Добрый день. Необходимо в программе прочитать ассоциированный текстовый файл .txt из внутренней памяти по URI. Долго искал ответ на этот...

Положение GetPath - Delphi
подскажите пожалуйста, как задать положение GetPath (выбор директории), что-то вроде как MessageDlg и MessageDlgPos..?

Fatal error: Call to undefined method ::getPath() in - PHP
В работе модуля возникла ошибка: Огромная Просьба подсказать решение.

Relative URI - C#
Добрый день. Никак не могу написать правильный Relative URI путь для MediaPlayer. По полному пути файл проигрывается: player =...

Очистка URI - JavaScript
Доброе время суток. Появилась необходимость в регулярном выражении для замещения, которое "очищает" путь к какому-нибудь каталогу от "..",...

Request URI - PHP ООП
Есть скрипт который перебирает URL и перенаправляет на открытие нужного файла. Но из за него я не могу вывести картинку на сайте. Вроде все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru