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

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

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

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

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

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

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

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

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

4
REALIST07
Автор FAQ
Автор FAQ
195 / 194 / 21
Регистрация: 11.06.2010
Сообщений: 1,016
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
kozak95
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
10.09.2016, 10:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2016, 10:14

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

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

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


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

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

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