Невозможно сохранить файл storage emulated 0 Xiaomi

У меня есть виджет с фоновым изображением из девяти патчей. Изображение было сохранено в / sdcard / mydir / bgs.

Когда я пытаюсь загрузить изображение с помощью метода setImageViewUri, у меня появляется эта ошибка:

Unable to open content: file:///storage/emulated/0/sdcard/mydir/bgs
open failed: EACCES (Permission denied)

Это появляется только на главном экране и только с Nexus 10 и Nexus 7 (в последней версии 4.4 этой ошибки не существует). У меня также есть некоторые RemoteViews в моем приложении, и все работает правильно.

Я также добавил в манифест либо READ_EXTERNAL_STORAGE, либо WRITE_EXTERNAL_STORAGE.

Как я могу решить?

ОБНОВЛЕНИЕ: я проверил метод setImageViewUri и обнаружил, что он меняет путь моего файла.

if (value != null) < // Resolve any filesystem path before sending remotely value = value.getCanonicalUri(); if (StrictMode.vmFileUriExposureEnabled()) < value.checkFileUriExposed(«RemoteViews.setUri()»); >>

Этот метод получает мое значение (/sdcard/mydir/bgs) и изменяет его на (storage/emulated/0/sdcard/mydir/bgs). Но этот файл не существует в системе через ADB.

Огромный МИНУС ВСЕХ СМАРТФОНОВ с Андроид 11! Но есть решение, как открыть папку data, obb, android

user353030 17 дек ’13 в 10:19 2013-12-17 10:19
2013-12-17 10:19

4 ответа

Кажется setImageViewUri больше не безопасно использовать с file:// uris.

Зачем?

Желе представило READ_EXTERNAL_STORAGE разрешение. Приложения, которые хотят читать из внешнего хранилища, должны иметь это разрешение. Это не было применено по умолчанию до KitKat.

Программа запуска не имеет этого разрешения. На самом деле, вам не гарантируется, что любой RemoteView, к которому вы подключаетесь, имеет это разрешение. Это делает небезопасным использование setImageViewUri, так как вы не знаете, сможет ли удаленный просмотр изображений даже прочитать данный URI.

Что теперь?

Вариант 1: использовать setImageViewBitmap.

Возможно, вы отошли от этой опции из-за неудачных операций связывания. Хитрость в том, чтобы убедиться, что ваш образ меньше 1 МБ. Это не так сложно, как кажется. Вы можете точно рассчитать, насколько большим будет ваше изображение. Например, если вы используете изображение ARGB_8888, это означает, что вам потребуется 4 байта на пиксель. Мы можем рассчитать максимальный размер:

1 МБ = 1048576 байт = 262144 пикселей = 512 x 512 изображений

Конечно, вы можете выжать из него больше, используя RGB_565, чтобы получить в 2 раза больше пикселей.

Также обратите внимание, что вам может не понадобиться огромное изображение, если ваш виджет маленький. Ваше приложение может спросить о его конкретных параметрах следующим образом:

Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetIds[i]); int minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH); int minHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT); int maxWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH); int maxHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);

Просто имейте в виду, что возвращаемые значения представлены в виде пикселей, а не пикселей, поэтому вам необходимо преобразовать их для масштабирования растрового изображения.

Невозможно открыть файл на Android — Причина и Исправление

Вариант 2. Использование контент-провайдера

Если по какой-то причине вам все еще не нравятся ограничения IPC, вы всегда можете создать собственного поставщика контента. Передайте этот URI в setImageViewUri, и все будет хорошо.

Как насчет переключения пути?

Переключатель пути не является реальной проблемой. Похоже, это проблема, но эмуляция на самом деле работает нормально. Попробуйте создать файл внутри //storage/emulated/0/sdcard/mydir/bgs и файл создаст просто отлично.

Вы заметите, что в то время как исключением является FileNotFoundException, сообщение «Отказано в доступе».

Источник: stackru.com

Как получить доступ к / storage / emulated/0 / DCIM на устройстве android?

Я недавно потерял содержимое карты micro-SD и не резервное копирование содержимого в последнее время достаточно. К счастью, я заметил, что фотографии, которых мне не хватало, оказались в /storage / emulated/0/DCIM/.эскизы на устройстве Android 5.1. Печально то, что я не могу добраться до этих файлов, чтобы сделать что-нибудь с ними на моем устройстве.

Как подключить выключатель aqara к Xiaomi gateway 3

Единственный способ, которым я даже знал, что они там, — это то, что файловый менеджер ASTRO поднял их, когда я искал фотографии. Я хотел бы быть в состоянии поставить их в безопасное место и надеялся сделать это через мой компьютер. Кто-нибудь знает способ заставить мой компьютер (Windows 7) распознать этот файл? (Естественно, я сказал своему компьютеру просматривать скрытые файлы, так что это не проблема.) Все, что я вижу /Внутренняя память и SD-карта (не для хранения). Если у вас есть обходной путь, пожалуйста, дайте мне знать тоже. Если бы я мог переместить (или еще лучше скопировать) эти фотографии в другое место на своем телефоне, а затем переместить их, это было бы абсолютно замечательно.

3 ответов

папка «/storage/emulated / » на самом деле не существует. Это то, что можно назвать «символической ссылкой», или, проще говоря, ссылкой на то, где хранятся реальные данные. Вам нужно будет найти фактическое физическое местоположение на вашем устройстве, где оно хранится. Так как он находится в /storage / emulated/0/DCIM/.миниатюры, вероятно, находятся в /Internal Storage/DCIM/.ноготь большого пальца./ Обратите внимание, что эта папка, вероятно, содержит только «эскизы», которые являются очень маленькими версиями реальных файлов. Возможно, ваши реальные файлы ушли навсегда, если ваша SD-карта неисправима.

изменить: «Никогда Не Говори Никогда» Ссылка на самом деле относится к эмулированной SD-карте на вашем устройстве. Получите доступ к данным «сразу» * как карта СД, и вы будете иметь доступ ко всем данным на этой карте. * Файл «приложение» Airdroid позволит это. И, если память служит, то доступ через кабель данным по USB будет также.

отвечен phyrfox 2017-03-02 03:03:03

Я мог бы восстановить мои файлы, перейдя в » Настройки — > хранение и usb — > изображения — > камера. Там, если вы выберете фотографию, то правое верхнее меню изменится на «Выбрать все» и «копировать в»..». Сначала выберите все, а затем скопировать в папку, как «загрузки» или какой виден в проводнике. После копирования в нужную папку. Скопируйте из этой папки в папку компьютеры.

отвечен The Analyst 2016-06-12 14:28:39

у меня была аналогичная проблема, только папке не начинаться с . . То, что решило для меня было сброс Media Manager.

на Settings -> Apps , убедится Show System проверяется в меню, искать Media Store или что-то подобное, нажмите на него и Clear Data . Затем перезагрузите телефон и подождите, пока Media Store восстановит себя.

перестройка занимает несколько минут. вы можете проверить сделано ли оно путем контролировать использование данных в этих же место, где вы его очистили. Как только он перестает расти в течение нескольких минут, это делается. Например, мой остановился на 21 МБ.

Источник: kompsekret.ru

storage/emulated/0 что это за папка на андроиде ?

Это такая часть памяти на Андроиде, для доступа к которой root-права, к счастью, не нужны. Там хранится всё то, что может редактировать и удалять пользователь. Т. е., этот раздел памяти не защищён и можно удалить оттуда хоть все папки — систему эту не повредит (это, можно сказать, системонеповреждающие папки, в отличие от тех, для которых root нужен).

Примеры, что там может храниться:
1. Фотографии с камеры (/storage/emulated/0/DCIM/Camera)
2. Скачанные файлы (/storage/emulated/0/Download)
3. Некоторые данные приложений, которые доступны пользователю (/storage/emulated/0/Android/data). Но основные данные всё равно находятся в защищённой (она называется внутренней (а /storage/emulated/0/ находится во внешней) памятью), для доступа к которой нужны рут-права.
4. Музыка (/storage/emulated/0/Music)
5. Скриншоты [делаются одновременнвм нажатием на кнопки уменьшения громкости и питания] (/storage/emulated/0/Pictures/Screenshots)
И другое.

Обзор телефонов сяоми редми

-Ученик (100) 4 месяца назад

Что, если у меня есть старые файлы, которые с помощью Google Files нельзя удалить, но и в разделе Downloads их нет? Вообщем они весят 4 гб.

Источник: otvet.mail.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
Китай Покупай