Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
2.4.2010, 15:27
Сообщение
#1
|
|
![]() Администратор ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 63 Регистрация: 24.10.2008 Из: Донецк Пользователь №: 1 |
Поскольку данные для отображения у нас будут храниться в файлах, неплохо иметь механизм просмотра файлов и каталогов на устройстве. Немного поискав стандартных компонент для просмотра файловой системы, наподобие JFileChooser в Java, обнаружил, что ничего подобного Android не предлагает, зато на официальном форуме Google, посоветовали использовать для этих целей наработки сайта www.openintents.org. Я сначала расстроился, но в итоге обнаружил, что использовать возможности просмотра структуры каталогов придется через использование Intent. Для меня до сего времени понятие «интента» оставалось загадкой, но в итоге – это оказался вполне удобный механизм.
Итак приступим к доработке нашей программы, добавим возможность просмотра файловой системы. Последняя актуальная информация по необходимому нам интенту находится по адресу: http://www.openintents.org/en/node/159 Здесь же можно скачать само приложение FileManager для установки на устройстве, без предварительной установки ничего работать не будет, ведь, по сути, наша программа при необходимости выбрать файл занятий, вызовет программу FileManager и получит от нее имя выбранного файла. Первым делом создадим класс FileManagerIntents Где создадим константы, для передачи в Intent информации о том, что собственно мы от него хотим, например константа org.openintents.action.PICK_FILE сообщит о том что мы будем использовать режим выбора файлов, а передача параметра org.openintents.extra.BUTTON_TEXT сообщает FileManager о том что мы хотим написать на кнопке выбора файла. Теперь мы готовы вызывать внешнюю программу, для чего добавим в наше меню один пункт и повесим на него обработчик события выбора пункта меню. В menu.xml добавим: Изменим в MainActivity метод onOptionsItemSelected: Здесь мы добавили проверку нажатия нашего пункта меню R.id.open как видно из кода, при нажатии вызывается метод openFile(), в котором мы проведем все необходимые действия: В строковой переменной filename мы сможем передавать начальное имя файла, на котором откроется наш FileManager, сейчас пока, оно не играет особой роли. Далее создадим экземпляр класса Intent, куда передадим информацию о том какой собственно интент мы хотим вызвать. Через метод putExtra передадим параметры с которыми вызовем наш интент, по сути зададим надписи заголовка и на кнопке выбора файла. Если Android не обнаружит требуемого нам интента, то сработает исключение ActivityNotFoundException, где мы его обработаем, выведя соответствующее сообщение на экран устройства: Toast.makeText(this, R.string.no_filemanager_installed, Toast.LENGTH_SHORT).show(); Вызвав метод startActivityForResult мы запускаем Intent на выполнение. Осталось упомянуть пожалуй только еще об одном моменте, когда мы выбрали файл и закрыли FileManager наше приложение получит сообщение о том, какой файл был выбран, чтобы обработать это сообщение, достаточно переопределить метод onActivityResult: REQUEST_CODE_PICK_FILE_OR_DIRECTORY – константа, по которой мы определили, что значение возвратил именно наш интент, ранее мы передавали ее в метод startActivityForResult. Получив значение выбранного файла, мы выведем его в виде сообщения передав в метод showAlert. Приложение FileManager вызываемое из нашей программы будет выглядеть примерно так:
1.jpg ( 34.33 килобайт )
Кол-во скачиваний: 35Исходники:
frankoreader.zip ( 501.11 килобайт )
Кол-во скачиваний: 10 |
|
|
|
![]() ![]() ![]() |
| Текстовая версия | Сейчас: 10.9.2010, 0:02 |