Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
kozak95
34 / 34 / 10
Регистрация: 01.11.2013
Сообщений: 319
#1

Что происходит при открытии файла (любого) в проводнике - Android

07.09.2016, 22:20. Просмотров 220. Ответов 4
Метки нет (Все метки)

Будь-то картинка или медиа файл, но при клике на него в проводнике он наверно посылает intent с uri то ли с path. Но как потом в Activity считать эту информацию чтобы открыть этот файл?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2016, 22:20     Что происходит при открытии файла (любого) в проводнике
Посмотрите здесь:

Android Ошибка при открытии AlertDialog
Android Что происходит при вызове метода popBackStack?
Android ListView и мультивыбор при открытии активити
Android Нет New Android Studio project при открытии
Android Google Developer Console - за что происходит оплата?
Android Ошибка при открытии новой activity
Вызов метода при каждом открытии приложения Android
Подскажите у кого происходит вылет при переходе на Activity Android
Android Переход на фрагмент при открытии приложения
Android Сжимается фон фрагмента при открытии клавиатуры
Съезжающая разметка при открытии клавиатуры Android
Ошибка при открытии проекта Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
REALIST07
Автор FAQ
Автор FAQ
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
07.09.2016, 22:24     Что происходит при открытии файла (любого) в проводнике #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Передать то, что ты получаешь в функцию getPath (intent.getData()):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 /*
   * Gets the file path of the given Uri.
   */
    @SuppressLint("NewApi")
    public static  String getPath(Uri uri, Context context) throws URISyntaxException {
        final boolean needToCheckUri = Build.VERSION.SDK_INT >= 19;
        String selection = null;
        String[] selectionArgs = null;
        // Uri is different in versions after KITKAT (Android 4.4), we need to
        // deal with different Uris.
        if (needToCheckUri && DocumentsContract.isDocumentUri(context, uri)) {
            if (isExternalStorageDocument(uri)) {
                final String docId = DocumentsContract.getDocumentId(uri);
                final String[] split = docId.split(":");
                return Environment.getExternalStorageDirectory() + "/" + split[1];
            } else if (isDownloadsDocument(uri)) {
                final String id = DocumentsContract.getDocumentId(uri);
                uri = ContentUris.withAppendedId(
                        Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
            } else if (isMediaDocument(uri)) {
                final String docId = DocumentsContract.getDocumentId(uri);
                final String[] split = docId.split(":");
                final String type = split[0];
                if ("image".equals(type)) {
                    uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                } else if ("video".equals(type)) {
                    uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                } else if ("audio".equals(type)) {
                    uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                }
                selection = "_id=?";
                selectionArgs = new String[] {
                        split[1]
                };
            }
        }
        if ("content".equalsIgnoreCase(uri.getScheme())) {
            String[] projection = {
                    MediaStore.Images.Media.DATA
            };
            Cursor cursor = null;
            try {
                cursor = context.getContentResolver()
                        .query(uri, projection, selection, selectionArgs, null);
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                if (cursor.moveToFirst()) {
                    return cursor.getString(column_index);
                }
            } catch (Exception e) {
            }
        } else if ("file".equalsIgnoreCase(uri.getScheme())) {
            return uri.getPath();
        }
        return null;
    }
 
    /**
     * @param uri The Uri to check.
     * @return Whether the Uri authority is ExternalStorageProvider.
     */
    public static boolean isExternalStorageDocument(Uri uri) {
        return "com.android.externalstorage.documents".equals(uri.getAuthority());
    }
 
    /**
     * @param uri The Uri to check.
     * @return Whether the Uri authority is DownloadsProvider.
     */
    public static boolean isDownloadsDocument(Uri uri) {
        return "com.android.providers.downloads.documents".equals(uri.getAuthority());
    }
 
    /**
     * @param uri The Uri to check.
     * @return Whether the Uri authority is MediaProvider.
     */
    public static boolean isMediaDocument(Uri uri) {
        return "com.android.providers.media.documents".equals(uri.getAuthority());
    }
_Night_Scream_
07.09.2016, 23:50
  #3

Не по теме:

За это я ненавижу андроид

CoolMind
08.09.2016, 13:42
  #4

Не по теме:

_Night_Scream_, +1.

kozak95
34 / 34 / 10
Регистрация: 01.11.2013
Сообщений: 319
10.09.2016, 10:14  [ТС]     Что происходит при открытии файла (любого) в проводнике #5
REALIST07, А как получить этот intent? Так может?
Java
1
2
        Intent intent = getIntent();
        getPath(intent.getData())
Добавлено через 11 часов 36 минут
Да, так работает.
Yandex
Объявления
10.09.2016, 10:14     Что происходит при открытии файла (любого) в проводнике
Ответ Создать тему
Опции темы

Текущее время: 18:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru