Как мне вызвать с моей программы файловый менеджер чтобы выбрать файл?

210
06 июля 2017, 01:03

Моя программа должна работать с парой форматов (в будущем будет до 10). Мне необходимо что бы пользователь мог выбрать файл и моя уже программа этот файл как-то обработала. Это файлы субтитров и текста все различного.

Answer 1

Если не хотите зависеть от сторонних файл-менеджеров берите aFileChooser вставляйте проект как либу и вперед. Вызов элементарный:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Create the ACTION_GET_CONTENT Intent
    Intent getContentIntent = FileUtils.createGetContentIntent();
    Intent intent = Intent.createChooser(getContentIntent, "Select a file");
    startActivityForResult(intent, REQUEST_CHOOSER);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case REQUEST_CHOOSER:   
            if (resultCode == RESULT_OK) {
                final Uri uri = data.getData();
                // Get the File path from the Uri
                String path = FileUtils.getPath(this, uri);
                // Alternatively, use FileUtils.getFile(Context, Uri)
                if (path != null && FileUtils.isLocal(path)) {
                    File file = new File(path);
                }
            }
            break;
    }
}

Метод getContentIntent() легко кастомизируется под нужный тип файла, заданием mime типа:

public static Intent createGetContentIntent() {
        // Implicitly allow the user to select a particular kind of data
        final Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("*/*"); //задаем mime тип
        // Only return URIs that can be opened with ContentResolver
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        return intent;
    }

Update

Проект слегка морально устарел, но тем не менее вполне работоспособен. Кое-какие action можно уже и другие использовать, есть проблемы с FileUriExposedException, но если руки не сильно кривые то все можно приспособить

READ ALSO
Push уведомления

Push уведомления

В фоновом режиме приложение отправляет запросы на сервер, в циклеПо задумке если ответ сервера содержит 1, надо отправить пуш уведомление

191
Java, асинхронная отправка множества get-запросов

Java, асинхронная отправка множества get-запросов

Здравствуйте! Возник такой вопросКак правильно отправлять N (N > 100) get-запроcов в секунду на указанный url?

226
Глобальная обработка Нажатий мыши Java

Глобальная обработка Нажатий мыши Java

Хотелось бы обработать нажатие мыши не только в своем приложении, но и глобальноЕсть такой код :

179