Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
34 / 34 / 21
Регистрация: 01.11.2013
Сообщений: 319
1

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

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

Будь-то картинка или медиа файл, но при клике на него в проводнике он наверно посылает intent с uri то ли с path. Но как потом в Activity считать эту информацию чтобы открыть этот файл?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2016, 22:20
Ответы с готовыми решениями:

При открытии любого файла постоянно выскакивает запрос на выбор программы
При открытии любого файла постоянно выскакивает запрос на выбор программы, при повторном запуске...

Ошибка при открытии любого приложения вследствие удаления файла StormII.exe
Антивирус обнаружил процесс StormII.exe и удалили его. Из за него невероятно тормозил компьютер,но...

Жутко тормозит MS word/excel при открытии любого файла doc, xls
Всем доброго времени суток, очередная контора, где я набегами. Суть проблемы указал в названии...

при открытии любого браузера выходит сайт goinf. возможно еще что то есть
Сейчас закину логи.

__________________

Записывайтесь на профессиональные курсы Android-разработчиков
4
Автор FAQ
Автор FAQ
199 / 198 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
07.09.2016, 22:24 2
Лучший ответ Сообщение было отмечено kozak95 как решение

Решение

Передать то, что ты получаешь в функцию 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());
    }
2
_Night_Scream_
07.09.2016, 23:50
  #3

Не по теме:

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

0
CoolMind
08.09.2016, 13:42
  #4

Не по теме:

_Night_Scream_, +1.

0
34 / 34 / 21
Регистрация: 01.11.2013
Сообщений: 319
10.09.2016, 10:14  [ТС] 5
REALIST07, А как получить этот intent? Так может?
Java
1
2
        Intent intent = getIntent();
        getPath(intent.getData())
Добавлено через 11 часов 36 минут
Да, так работает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2016, 10:14

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Зависает компьютер при открытии любого видео-файла, программы или серфинга в интернете.
В общем проблемка такая, купил я значит комп где то 8 месяцев назад (конфигурация указана ниже) на...

При открытии любого файла Project появляется ошибка: "address 005c53c"
При открытии любого файла Project вылазит такая вот ошибка:

При открытии любого файла ошибка: "Этому файлу не сопоставлена программа"
Всем доброго времени суток. При открытии абсолютно любого файла не важно исполняемый он или нет,...

Ошибки при открытии любого документа при установленном VS Community с пакетом для Office
Установил VS Community с пакетом для создания надстроек под Office. В Excel на машине уже...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.