2016-12-08 3 views
0

Я осмотрел хороший способ открыть ресурс моего ImageView с помощью приложения Gallery по умолчанию, но придумал пустой. Теперь я больше не ищу хороший способ, но просто способ, который будет работать. Я использую новейший API Android, и я попробовал множество различных возможных решений, доступных на Stack и других ресурсах. Я в основном пытаюсь связать функции панорамирования и масштабирования приложения Gallery, используя его, чтобы открыть текущий образ моего слайд-шоу (в основном ImageView) при нажатии. Я попытался использовать .setData, .setDataAndType, несколько различных методов анализа URI, фильтры намерений и т. Д. Я даже попытался настроить преобразователь, чтобы предотвратить выполнение кода, если было возвращено нулевое значение, которое, казалось, работало. Это указывает на то, что, возможно, что-то не так правильно разрешается? Вот мой код:Как открыть ресурс ImageView с помощью приложения Gallery по умолчанию Android?

public void onImageClicked(View view) { 
    Intent intent = new Intent(); 
    intent.setAction(ACTION_VIEW); 
    Uri imgUri = Uri.parse("android.resource://com.mypackagename/" + images[current]); 
    intent.setDataAndType(imgUri, "image/*"); 
    startActivity(intent); 
} 

изображения [ток] имеет тип Integer и возвращает значение ресурса текущего изображения в моей слайд-шоу. Пример: R.drawable.myImage1

Примечание: com.mypackagename - это цензура. У меня есть фактическое имя пакета в моем исходном коде.

Ошибки:

java.lang.IllegalStateException: Не удалось выполнить метод деятельности

причиненном: java.lang.reflect.InvocationTargetException в java.lang.reflect.Method.invoke (Родной метод) на java.lang.reflect.Method.invoke (Method.java:372)

Вызванный: android.content.ActivityNotFoundException: нет активности не найдено для обработки Intent {действие = android.intent.action. VIEW dat = android.resour се: //com.mypackagename/2130837662 тип = изображение/*}

ответ

2

Как открыть ресурс ImageView с приложением Галерея Android по умолчанию?

Найдено тысяч моделей устройств Android. Существуют сотни реализаций приложения «Галерея по умолчанию», распространяемых на этих моделях устройств. Не существует единого приложения «Галерея по умолчанию», и ваш код имеет мало общего с «Приложением галереи».

Я в основном пытаюсь контрейлерным панорамирование и масштабирование функциональности приложения Галереи

Там нет требования для всех ACTION_VIEW деятельности, которые принимают изображения в качестве контента для поддержки панорамирования и масштабирования. Если вы хотите панорамирование и масштабирование, используйте библиотеку.

Это указывает на то, что, возможно, что-то не так правильно разрешается?

Немного приложений, которые поддерживают схему android.resource.

Ваше лучшее решение для обслуживания ресурсов сторонними приложениями - использовать ContentProvider. Это может быть my StreamProvider, что обеспечивает некоторую поддержку для обслуживания ресурсов «из коробки». Или это может быть ваша собственная реализация ContentProvider.

+0

Хороший ответ! Создайте собственный ContentProvider для ваших данных изображения и просто отправьте ACTION_VIEW Intent. Существует не больше, но приложение-получатель может не выглядеть так, как вы хотели. –

+0

Спасибо за помощь! Это я впервые создаю приложение для Android. Я изучаю Java и библиотеку Android, когда я иду. Я отдам его и посмотрю, что я могу придумать. –