Нужно, чтобы по нажатию на кнопку открывалось меню выбора файла из внутренней памяти или флешки. Как это реализовать?
Можно использовать платформу доступа к хранилищу (Storage Access Framework) Платформа SAF облегчает пользователям поиск и открытие документов, изображений и других файлов в хранилищах всех поставщиков, с которыми они работают. Вот пример функции по открытию окна выбора файла из хранилища, её можно вызвать при нажатии на кнопку:
public void performFileSearch() {
// Создаём новый интент для доступа к хранилищу
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
// Фильтруем результаты на те, которые можно "открыть"
intent.addCategory(Intent.CATEGORY_OPENABLE);
// Показываем только картинки (ещё один фильтр)
intent.setType("image/*");
// запускаем интент
startActivityForResult(intent, READ_REQUEST_CODE);
}
Обработка результатов:
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent resultData) {
if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
// возвращаем URI нужного документа
Uri uri = null;
if (resultData != null) {
uri = resultData.getData();
Log.i(TAG, "Uri: " + uri.toString());
showImage(uri); //функция для показа документа (реализуйте сами)
}
}
}
Источник.
Очень абстрактный вопрос. Но самый простой способ получить доступ к файлу на Android - это использовать Intent
.
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setType("*/*");
startActivityForResult(Intent.createChooser(intent, "Выберите файлы с помощью..."), REQUEST_TAKE_DOCUMENTS);
Запуская этот код из Activity вы можете получить ответ в переопределённом методе:
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK)
{
switch(requestCode)
{
case REQUEST_TAKE_DOCUMENTS:
...
return;
}
}
}
В данном случае в объекте data
будут данные об одном файле:
Uri uri = data.getData();
Или о группе выбранных файлов:
ClipData clipData = data.getClipData();
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Допустим у меня есть понятие:
Я тут сделал небольшой проект на С++, и хотел поделиться с вами, вдруг вам понадобится создавать таблицу в консоли
Добрый деньПомогите установить графический движок OGRE под Visual Studio 2017 или (в идеале) под CLion 2017