Наистина искам да имам достъп до файлове в системата Android. Успявам да чета файлове и директории във външно хранилище на Android. моите въпроси:
- Как мога да получа достъп до директории и файлове за вътрешно съхранение (особено за видеоклипове, снимки на всички приложения, които работят в android).
- Къде се съхраняват данните на всяко приложение, което е инсталирано във вътрешното хранилище?
- Възможно ли е да се прехвърлят данни, които съществуват във вътрешна памет (от вътрешна памет към външно хранилище?
- Четох, че външното хранилище е световно четиво? какво означава? (ако създадете приложение, тогава това приложение има достъп до всички файлове, инсталирани във външно хранилище?)
2 отговора
По подразбиране едно приложение няма достъп до данни, съхранявани в друго приложение. Към вътрешното хранилище се прилагат разрешения, които правят данните, записани от приложение, недостъпни извън това приложение (вашето приложение не може да чете нищо, написано от друго приложение). Това може да се промени, когато дадено приложение може да посочи различни разрешения за СОБСТВЕН СОБСТВЕН данни; по принцип едно приложение може да позволи на други да четат неговите данни. Въпреки това, освен ако приложение не зададе специално разрешенията си, за да го позволи, други приложения нямат достъп до неговите данни. Това е основен принцип на модела за сигурност/изолация на Android и се извършва на ниво Linux/ядро, тъй като всяко приложение работи под собствен Linux UID и разрешенията са зададени във файловата система, позволявайки на този UID да има достъп до структурата на директорията на приложението (групови и световни разрешения зададен на 0 по подразбиране).
Всичко това излиза извън кутията, ако имате root достъп на устройството (телефонът е вграден и приложението работи като root), но трябва да вземем предвид, че това е извън обхвата на вашия въпрос.
Външното хранилище (SD карта) е различно по това, че се счита за безплатно за всички и разрешенията не се прилагат там (това се дължи основно на файловата система, която обикновено се използва в SD, която не поддържа разрешения). Всяко приложение обикновено може да чете всичко, записано на SD картата от всяко друго приложение, освен ако оригиналното приложение не направи нещо, за да го защити (криптиране и т.н.).
Когато се опитва да изтегли файл на телефон Xiaomi, потребителят на устройството може да получи съобщението „Изтеглянията изискват достъп до паметта на устройството“. Тази дисфункция обикновено се причинява от настройките на приложенията Downloads и Browser, поради което достъпът на тези приложения до паметта на телефона е блокиран. Ще се занимаваме със спецификата на този проблем и вариантите за решаването му.
Същността на проблема с изискванията за достъп
Както знаете, операционната система Android позволява на потребителя да регулира спецификата на достъпа на определено мобилно приложение до системните компоненти на вашия телефон. Това се дължи както на политиката за сигурност (зловредните приложения не могат автоматично да имат достъп до системните компоненти), така и на особеностите на работата с батерията, което ви позволява да използвате нейния потенциал по-внимателно.
![](https://i2.wp.com/rusadmin.biz/files/2018/06/3.png)
Получаването на съобщението „Изтеглянията изискват достъп до паметта на устройството“ обикновено означава, че настройките на вашия мобилен браузър са блокирали достъпа до паметта на притурката, от която се нуждае.
В някои случаи подобно известие може да важи и за приложението за изтегляния, на което също е отказан споменатия достъп.
Нека да разберем как да решим проблема „Изтеглянията изискват достъп“ на Xiaomi.
Какво да направите, ако в Xiaomi - изтеглянията изискват достъп до паметта на устройството
За да отстраните проблема с изтеглянето на Xiaomi, не е необходимо да получавате root права, да флаширате устройството или да правите други подобни операции. Решенията на проблема са доста прости.
- Преди всичко проверете цялостната производителност на вашия мобилен браузър.
- Затворете го, след това отидете в настройките на устройството и изберете "Всички приложения" там.
- В списъка с приложения намерете вашия браузър, докоснете го и отидете на настройките му, щракнете върху „Изчистване на данни“, както и върху „Изчистване на кеша“.
- След това затворете настройките на притурката, стартирайте браузъра и опитайте отново да изтеглите нужните файлове.
Ако грешката продължава да се повтаря, тогава трябва да промените настройките за достъп на вашия браузър и приложението Downloads. Отидете в настройките на вашия Xiaomi, там изберете "Всички приложения" - ("Трета страна"), след това "Браузър", след това "Разрешения за приложения" и активирайте плъзгача "Памет" там.
Също така се препоръчва да извършите подобно действие по отношение на приложението „Изтегляне“ (или на английски „Изтегляния“). В настройките на устройството трябва да намерите посоченото приложение, да го докоснете и след като въведете неговите настройки, преместете плъзгача „Памет“, който отговаря за достъпа на приложението до последното. Проблемът ще бъде решен.
Заключение
В по-голямата част от случаите появата на съобщението „Изтеглянията изискват достъп до паметта на устройството“ означава, че настройките на браузъра не му позволяват достъп до паметта на вашата притурка. Едно просто и ефективно решение на проблема е да отидете в настройките на устройството и да дадете на браузъра (или на приложението Downloads) необходимите разрешения, след което този проблем ще бъде ефективно решен.
Последна актуализация: 21.03.2017
В последната тема разгледахме записването и четенето на файлове от директорията на приложението. По подразбиране тези файлове са достъпни само за самото приложение. Въпреки това можем да поставяме и работим с файлове от външно хранилище. Това също така ще позволи на други програми да отварят тези файлове и да ги променят според нуждите.
Целият механизъм за работа с файлове ще бъде същият като при работа с хранилището на приложението. Ключовата разлика тук ще бъде получаването и използването на пътя към външното хранилище чрез метода Environment.getExternalStorageDirectory()
И така, нека имаме същото маркиране на интерфейса във файла activity_main.xml:
И кодът на класа MainActivity ще изглежда така:
Пакет com.example.eugene.filesapp; импортиране на android.Manifest; импортиране android.content.pm.PackageManager; импортирайте android.os.environment; импортиране android.support.annotation.NonNull; импортирайте android.support.v4.app.ActivityCompat; импортирайте android.support.v4.content.ContextCompat; импортирайте android.support.v7.app.AppCompatActivity; импортиране на android.os.Bundle; импортирайте android.view.View; импортирайте android.widget.EditText; импортирайте android.widget.TextView; импортиране на android.widget.Toast; импортирайте java.io.File; импортирайте java.io.FileInputStream; импортирайте java.io.FileOutputStream; импортиране на java.io.IOException; публичният клас MainActivity разширява AppCompatActivity ( частен краен статичен низ FILE_NAME = "content.txt"; частен статичен окончателен int REQUEST_PERMISSION_WRITE = 1001; частно булево разрешение Предоставено; @Override защитена void onCreate(Bundle savedInstanceState(SuperStateR)View(SuperStateR); .layout.activity_main); ) частен файл getExternalPath() ( return(new File(Environment.getExternalStorageDirectory(), FILE_NAME)); ) // запазване на файла public void saveText(View view)( if(!permissionGranted)( checkPermissions() ; return; ) FileOutputStream fos = null; опитайте (EditText textBox = (EditText) findViewById(R.id.save_text); String text = textBox.getText().toString(); fos = new FileOutputStream(getExternalPath()); fos .write(text.getBytes()); Toast.makeText(this, "File saved", Toast.LENGTH_SHORT).show(); ) catch(IOException ex) ( Toast.makeText(this, ex.getMessage(), Toast .LENGTH_SHORT).show(); ) finally( try( if(fos!=null) fos.close (); ) catch(IOException ex)( Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show(); ) ) ) // отваряне на файла public void openText(View view)( if(!permissionGranted)( checkPermissions (); return; ) FileInputStream fin = null; TextView textView = (TextView) findViewById(R.id.open_text); File file = getExternalPath(); // ако файлът не съществува, излезте if(!file.exists( ) ) върнете; опитайте ( fin = нов FileInputStream(файл); байт байтове = нов байт; fin.read(байтове); String text = нов низ (байтове); textView.setText(text); ) catch(IOException ex) ( Toast .makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show(); ) finally( try( if(fin!=null) fin.close(); ) catch(IOException ex)( Toast.makeText( това , ex.getMessage(), Toast.LENGTH_SHORT).show(); ) ) ) // Проверете дали външното хранилище се чете/записва публична булева isExternalStorageWriteable()( String state = Environment.getExternalStorageState(); return Environment. MEDIA_MOUNTED.equals(state); ) // проверява дали външното хранилище е най-малко публична булева isExternalStorageReadable()( String state = Environment.getExternalStorageState(); return (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ)ls ; ) частна булева checkPermissions()( if(!isExternalStorageReadable() || !isExternalStorageWriteable())( Toast.makeText(това, "Външно хранилище не е налично", Toast.LENGTH_LONG).show(); връщане на false; ) int permissionCheck = ContextCompat.checkSelfPermission(това, Manifest.permission.WRITE_EXTERNAL_STORAGE); if(permissionCheck!= PackageManager.PERMISSION_GRANTED)( ActivityCompat.requestPermissions(това, нов низ (Manifest.permission.WRITE_EXTERNAL), REQUSTOR false return true;) REQUSTOR false return; ) @Override public void onRequestPermissionsResult(int requestCode, @NonNull String разрешения, @NonNull int grantResults)( switch (requestCode)( case REQUEST_PERMISSION_WRITE: if(grant Results.length > 0 && grantResults == PackageManager.PERMISSION_GRANTED)( permissionGranted = true; Toast.makeText(това, "Предоставени разрешения", Toast.LENGTH_LONG).show(); ) else( Toast.makeText(това, "Разрешенията трябва да бъдат дадени", Toast.LENGTH_LONG).show(); ) break; ) ) )
Използвайки израза Environment.getExternalStorageDirectory(), ние осъществяваме достъп до папката на приложението във външно хранилище и задаваме файловия обект:
Частен файл getExternalPath() ( return(нов файл(Environment.getExternalStorageDirectory(), FILE_NAME)); )
Тъй като се изискват разрешения за четене/запис на външно хранилище, трябва да проверите за разрешения, преди да запазите и напишете файл. За това е дефиниран методът checkPermissions(). Когато разрешенията са зададени, методът onRequestPermissionsResult() се задейства, който задава променливата permissionGranted на true, ако разрешенията са зададени успешно.
За да използвате външно хранилище, трябва също да зададете разрешения във файла AndroidManifest.xml:
Имате ли въпрос защо изтеглянията на Xiaomi изискват достъп до паметта на устройството и какво да направите в този случай? За да разрешите сами проблема, ви представяме стъпка по стъпка ръководство със снимки.
Ограничението на достъпа до паметта на телефона за повечето приложения е забелязано от много потребители на смартфони Xiaomi, както и от собственици на устройства с Android. В крайна сметка, преди първото стартиране на всяко изтеглено приложение от Play Market, системата изисква достъп до паметта на устройството, местоположението, обажданията и др. Преди това всяко приложение получаваше разрешение за автоматично изхвърляне на данни и потребителят можеше да знае за изискванията на програмите само от тяхното описание в Play Market. Сега собственикът на устройството може сам да прави ограничения.
Важно: Много приложения искат разрешение за проследяване на местоположението ви. Това не само поставя под въпрос условията за поверителност, но и се отразява негативно на потреблението на енергия. В крайна сметка смартфонът ще бъде принуден да има постоянен достъп до GPS или да увеличава натоварването на мрежата, за да изчисли координатите.
Самата грешка възниква, защото на приложението не е предоставено разрешение за достъп до паметта. Съответно, без това програмата „Изтегляния“ не може да работи, което уведомява собствениците на смартфони Xiaomi. Грешката може да бъде причинена и от браузъри на трети страни, които имат ограничения за определени елементи.
Как да поправя
Решението е много просто и не изисква специални познания. Виновни са използваните браузъри, както и приложението "Изтегляния", при някои смартфони от тази марка се казва "Изтегляния". Трябва да проверите настройките и на двете приложения и да ги настроите правилно.
Проверка на браузъра
Проверете дали браузърът работи. Ако се отвори без никакви предупреждения, тогава трябва да преминете към други стъпки:
- Въведете настройките на устройството. За да не търсите съответната икона в менюто, трябва да преместите горната завеса надолу и да кликнете върху иконата на зъбно колело.
- Отидете на „Всички приложения“.
- В списъка намерете браузъра, от който планирате да изтеглите. За удобство можете да използвате търсенето по име и да кликнете върху него.
- След отваряне ще трябва да влезете в секцията "Разрешения за приложение".
- В тях, за да започнете да зареждате, трябва да разрешите достъп до паметта. За да направите това, преместете плъзгача в колоната "Памет".
- След това трябва да натиснете бутона "Назад" на корпуса на устройството, да се върнете към предишния елемент и да отворите реда "Памет".
- В него кликнете върху „Изтриване на данни“ и „Изчистване на кеша“.
- Отново се върнете една стъпка назад и отидете на елемента „Трафик“.
- В него преместете плъзгача надясно във всички точки.
Забележка: „Фонов трафик“ може да бъде деактивиран (не премествайте плъзгача надясно). В този случай приложението няма да може да се свърже с интернет, когато не се използва. Поради това той ще спре да изпраща известия.
Въпреки това, има програми, които могат да изразходват до 300 MB трафик за 2 седмици по време на неактивен период (игрите са особено виновни за това). И по този начин значително намаляване на обемите, предоставени от клетъчните оператори. Следователно трябва да проверите консумацията и да деактивирате фоновия достъп до Интернет за такива програми (консумацията във фонов режим се показва срещу елемента „Фонов трафик“).
Проверка на изтегляния
Алгоритъмът на действията е идентичен. Необходимо е да се повтори всичко по-горе, но за приложението "Изтегляния" (или "Изтегляния" за по-ранни версии на смартфони). Тук обаче трябва да се разреши използването на фонов трафик. Тъй като по време на престой мегабайтите практически не се използват. Забраната може да допринесе за причиняване на грешка, така че не се препоръчва да деактивирате потреблението на фонов трафик в тази ситуация.
Описаните действия ще помогнат за пълно премахване на появата на грешки. Като направите всичко точно, ще предотвратите грешката „Изтеглянията изискват достъп до паметта на устройството“ на Xiaomi от всички модели и ще можете да започнете да изтегляте всякакви файлове.
Някъде дълбоко в гърдите на вашия телефон с Android лежи устройство за съхранение. Това е като твърд диск на компютър: нещото не може да бъде изтрито, но не е това. Въпросът е, че хранилището се използва за вашите приложения, музика, видеоклипове, снимки и много друга информация. Ето няколко неща, които можете да направите, за да управлявате това хранилище.
Телефоните с Android се предлагат с 8GB, 16GB, 32GB или повече вътрешна памет.
На някои телефони се предлага подвижно съхранение под формата на microSD карта, въпреки че тази опция става все по-малко популярна. Капацитетът на MicroSD картата варира от 8GB до 64GB или повече.
GB е гигабайт,или 1 милиард байта (знака) за съхранение. Типичен 2-часов филм заема около 4 GB място за съхранение. Повечето от нещата, които държите на телефона си, не заемат толкова много място. Всъщност медиите, съхранявани в облака, почти нямат място за съхранение.
Преглед на статистиката за съхранение
За да разберете колко свободно място има на телефона ви, изпълнете следните стъпки:
Изберете Съхранение.
На телефони Samsung ще намерите елемента Съхранение в раздела Общи на приложението Настройки.
Типичният екран за съхранение на данни съдържа информация за мястото на съхранение във вътрешната памет на телефона и, ако е налично, на MicroSD картата.
Информация за съхранение на телефона.
Ако телефонът ви има външно хранилище, потърсете категорията SD карта в долната част на екрана за съхранение.
Докоснете категория на екрана за съхранение, за да видите информация за това как се използва хранилището или да стартирате съответното приложение. Например щракнете върху Приложения, за да видите списък с работещи приложения. Ако щракнете върху "Снимки", "Видеоклипове", можете да преглеждате изображения и видеоклипове.
Видеоклиповете, музиката и снимките (в този ред) заемат най-много място на телефона ви.
Медиите, които изтегляте на телефона си от облака на Google, като филми или видеоклипове, се проследяват в категорията Приложения.
Не плачете, че стойността на Total Space е много по-малка от паметта на телефона. Например, 16 GB телефон показва само 12,55 GB. Липсващото пространство се счита за режийни разходи, както и няколко гигабайта, взети от правителството за данъчни цели.
Управление на файлове
Вероятно не сте получили телефон с Android, защото харесвате да управлявате файловете си на компютъра си и искате още нещо, за да усъвършенствате уменията си. Въпреки това, можете да практикувате същия тип манипулиране на файлове на телефона си, както бихте направили на компютър. Трябва ли да се направи? Разбира се, че не! Но ако искате да се заразите с файлове, можете.
Някои телефони с Android имат приложение за управление на файлове. Нарича се „Моите файлове“ или „Файлов мениджър“ и е традиционен тип файлов мениджър, което означава, че ако не управлявате файлове на компютъра си, ще изпитате този вид същата болка и разочарование на вашия телефон.
Ако просто искате да прегледате файлове, изтеглени от интернет, отворете приложението Downloads, което се намира в чекмеджето на приложението.
Ако на телефона ви липсва приложение за управление на файлове, можете бързо да го получите. В Google Play Store има много приложения за управление на файлове. ASTRO файлов мениджър/браузър на Metago е добър вариант.
Деактивиране на microSD картата
MicroSD картата осигурява подвижно съхранение на множество телефони с Android. Когато телефонът е изключен, можете да поставите или извадите microSD картата, както желаете. MicroSD картата може да бъде извадена и докато телефонът е включен, но първо трябва да деактивирате картата. Направете следното:
Отворете приложението Настройки.
Изберете "Съхранение".
На някои телефони на Samsung отворете раздела Общи, за да намерите елемента Съхранение.
Изберете Демонтиране на SD карта.
Този елемент се намира в долната част на екрана. В противен случай на телефона ви липсва възможност за хостване на сменяема microSD карта.
Игнорирайте предупреждението и щракнете върху OK.
Когато видите действието Монтиране на SD карта, можете да извадите MicroSD картата.
Важно е да следвате стъпките по-долу, за да премахнете безопасно MicroSD картата. Ако не направите това и просто издърпате картата, това може да повреди картата и да загуби информация.
Можете да поставите microSD карта по всяко време.
Форматиране на MicroSD памет
Вашият телефон с Android е проектиран да разпознава незабавно MicroSD карта, когато я поставите. Ако това не стане, можете да опитате да форматирате картата, за да видите дали това решава проблема.
Всички данни на MicroSD картата се изтриват от процеса на форматиране.
За да форматирате MicroSD карта, първо я поставете в телефона си. След това направете следното, за да определите дали форматът е наред:
Отворете приложението Настройки.
Изберете Съхранение.
Изберете формата на SD картата.
Щракнете върху бутона Форматиране на SD карта.
Щракнете върху бутона Изтриване на всички, за да потвърдите.
MicroSD картата е демонтирана, форматирана и след това отново монтирана и готова за използване.
След като форматирате картата, можете да я използвате за съхраняване на информация, музика, приложения, снимки и т.н.