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

#android #android-image

#Android #android-изображение

Вопрос:

Что я пытаюсь сделать, так это загрузить изображение из Интернета (в формате GIF, если это что-то меняет) и отобразить его на экране с возможностью масштабирования / панорамирования. Я успешно загрузил изображение в экземпляр Bitmap myBitmap, но в ImageView нет функции масштабирования. Поэтому вместо этого я готов представить его с помощью программы просмотра по умолчанию, которая имеет функции масштабирования / панорамирования. Для настройки намерения мне нужно указать URI для сохраненного файла. Итак, сначала я сохраняю файл во внутреннем хранилище (также предоставляя доступ к другим приложениям в РЕЖИМЕ_WORLD_READABLE):

     try {
        FileOutputStream out = openFileOutput("scrible",
                Context.MODE_WORLD_READABLE);
        myBitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
    } catch (FileNotFoundException e) {
        Log.d(myTag, e.toString());
    }
  

Затем я успешно проверяю его действительно читаемость:

     File myFile = new File(getFilesDir(), "scrible");
    if (myFile.canRead()) {
        Log.d(myTag, "Its readable");
    }
  

Затем я пытаюсь настроить намерение (что выдает ошибку: неожиданно остановлено):

     Uri fileUri = Uri.fromFile(myFile);
    startActivity(new Intent(Intent.ACTION_VIEW, fileUri));
  

Я пытался настроить намерение отдельно, и оно не выдает ошибку до вызова startActivity (намерение);

Что я делаю не так?

Ответ №1:

Для меня хорошо работает следующее:

 Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(outputFileName)),"image/jpeg");
startActivity(intent);
  

Разница, которую я вижу, заключается в том, что вы не вызываете setDataAndType .