Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Что происходит при вызове метода popBackStack? - Программирование Android
Всем привет ;-) Буду благодарен за подробнее обьснение. Читаю android Developers не могу понять принцип работы функции, popBackStack()....

Сохранение курса валют в файл,что бы каждый раз при открытии не синхронизироваться? - Программирование Android
Последние штрихи в программе . получается если нет доступа в инет не получится получить курсы валют,но если есть интернет то каждый раз...

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

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

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

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

4
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 938
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());
    }
2
_Night_Scream_
07.09.2016, 23:50
  #3

Не по теме:

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

0
CoolMind
08.09.2016, 13:42
  #4

Не по теме:

_Night_Scream_, +1.

0
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 минут
Да, так работает.
0
10.09.2016, 10:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2016, 10:14
Привет! Вот еще темы с ответами:

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

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

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

Ошибка при открытии изображений из любого архива - Программы архиваторы
День добрый. Наличествует такая проблема: На компьютере установлена Windows 7 x64, и 7-zip v.9.20. При попытке открыть *.jpg, находящееся...


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

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

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