Запустите средство просмотра намерений для отображения изображения с URL - PullRequest
6 голосов
/ 01 июня 2010

У меня есть URL изображения. Что мне нужно сделать, это запустить средство просмотра изображений по умолчанию для изображений, используя намерение.

Я попытался запустить его с помощью:

Uri uri = Uri.parse("http://www.google.com/intl/en_ALL/images/srpr/logo1w.png");  
Intent it = new Intent(Intent.ACTION_VIEW);
it.setDataAndType(uri, "image/*")
startActivity(it);

Но это не работает. Если я не укажу тип данных, намерение запускает браузер, поскольку данные являются URL-адресом. Это работает в основном (так как вы можете видеть изображение в браузере), но мне бы хотелось, чтобы галерея отображала для меня изображение.

Я также могу загрузить изображение в растровое изображение, но я все равно не знаю, как отобразить растровое изображение с помощью галереи (если это вообще возможно). Есть идеи?

РЕДАКТИРОВАТЬ: Я попытался сохранить растровое изображение в кэш, а затем запустить средство просмотра для этого файла, но он не работает. Можете ли вы заметить ошибки в моем коде? (Класс Utilities - это класс, который я написал. Метод просто создает растровое изображение. Он работает, это не проблема)

File temp = File.createTempFile("tempImage", ".jpg", getContext().getCacheDir());
Bitmap bmp = Utilities.loadBitmap(largeUrl.toString());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(temp));
bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.close();
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(temp), "image/jpg");
((Activity) getContext()).startActivity(intent);

РЕДАКТИРОВАТЬ 2 : Я решил, что мне, возможно, понадобятся загруженные изображения, поэтому я решил сначала сохранить их на SD-карте. Это создало другие проблемы. Я задал новый вопрос , потому что это другая проблема.

Ответы [ 3 ]

1 голос
/ 14 июля 2010

Ваш код в порядке, но вам нужно сохранить изображение на SD-карте («временный» файл) для работы программы просмотра фотографий. Проверено на 1,5, 1,6, 2,1.

1 голос
/ 01 июня 2010

Возможно, галерея требует, чтобы изображение было сохранено в памяти.

Почему бы не загрузить изображение в растровое изображение, а затем сохранить его как файл, а затем запустить намерение изображения в этом файле?

(Если вы не хотите, чтобы файл потом оставался без присмотра, вы можете просто сохранить его в каталоге данных вашего приложения)

0 голосов
/ 11 августа 2017

Вы можете попробовать этот код для gridview наItemClickListner, чтобы показать в приложении галереи по умолчанию

OnItemClickListener myOnItemClickListener = new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,

        Intent it = new Intent(Intent.ACTION_VIEW);
        it.setDataAndType(Uri.parse("file://" + (String) parent.getItemAtPosition(position)), "image/*");
        startActivity(it);
    }
};

это работа для меня:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...