Как через Intent получить список вариантов для работы с камерой?
Как, используя Intent, получить список вариантов для "взятия" картинки? Т.е. надо, чтобы система предложила, как взять фото: камерой или из галереи.
В одном из приложений видел, как при нажатии на кнопку выводился список вариантов.
Или при отправке письма предлагаются разные варианты.
Ответы (1 шт):
Это 2 разных Intent'а:
1) Intent доступа к галерее:
Intent galleryIntent=new Intent(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
2) Intent доступа к камере:
Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE");
Проблема в том, что приложений доступа к галерее может быть несколько, равно как и приложений камеры и даже если их несколько, то может использоваться только дефолтная. Чтобы показывать в диалоге все, надо сделать собственный Dialog, контент которого генерится приблизительно так:
List<Intent> intentsList = new ArrayList<Intent>();
List<ResolveInfo> listCamera = packageManager.queryIntentActivities(cameraIntent, 0);
for (ResolveInfo res : listCamera) {
final Intent finalIntent = new Intent(cameraIntent);
finalIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
intentsList.add(finalIntent);
}
List<ResolveInfo> listGallery = packageManager.queryIntentActivities(galleryIntent, 0);
for (ResolveInfo res : listGallery) {
final Intent finalIntent = new Intent(galleryIntent);
finalIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
intentsList.add(finalIntent);
}
В итоге в переменной intentsList будет список Intentов которые могут иметь доступ галерее и запускать камеру. Эти данные надо вложить в список и отобразить в Dialog - что в общем то несложно. Уверен вы справитесь.