Obținerea căii către cardul SD pe Android. Actualizați la Android Lollipop și funcțiile de lucru cu un card de memorie extern

eu am cumparat telefon nou Samsung Galaxy S5, și imediat a întâmpinat o problemă în sala de operație sistem Android. Mai exact, versiunea Android 4.4 KitKat. Această versiune de Android a fost introdusă optiune noua Dezvoltatorii Google.

Aplicațiile nu au acces acum la editarea fișierelor de pe cardul SD!Acest lucru face ca unele aplicații să nu funcționeze!

Îți voi spune cum să rezolvi această problemă!

Bună ziua, dragi cititori ai blogului nostru!

Zilele trecute mi-am cumpărat un telefon nou! Samsung Galaxy S5!

VA BUCUȚI NOUL TĂU TELEFON

Mă felicit pentru o achiziție reușită, la care visez de câțiva ani! Telefonul s-a dovedit a fi remarcabil de rapid, puternic, frumos și convenabil!

L-am avut deja înainte telefon HTC(are deja vreo 4-5 ani) cu sistem Android. Unul dintre primele telefoane cu un astfel de sistem (la momentul achiziției). L-am studiat pe dinăuntru și pe dinafară, am refașat sistemul de mai multe ori și am ales firmware-ul Android, care era mult superior ca funcționalitate celui oficial la acea vreme.

Pentru cei care nu cunosc, intermiterea este un înlocuitor sistem de operare telefon. Ei bine, cam atât reinstalând Windows pe computer.

A trecut mult timp, au fost lansate multe versiuni de Android (la momentul achiziției aveam Android 2.2). Noile versiuni și telefoanele pe care au fost instalate sunt mult superioare vechiului meu smartphone. Prin urmare, am fost foarte surprins de putere, viteză și funcționalitate.

M-am bucurat de el cam 4 zile. Atunci am dat peste o problema!

PROBLEMĂ! Sistemul de fișiere interzice editarea fișierului!

După următoarea actualizare, sistemul de operare al telefonului în sine a fost actualizat la Android 4.4.

Imaginează-ți surpriza mea când nu am reușit să editez un singur fișier propriul telefon! La început m-am făcut vinovat de erori, m-am înregistrat foldere diferite, a încercat să editeze fișierul de pe computer (prin conectarea cablului la telefon). Nu a existat nicio modalitate de a edita fișierele!

După ce m-am uitat la informațiile despre sistemul de operare din Setări - Despre dispozitiv - Stare SE pentru Android, am văzut cuvântul Enforcing.

Acesta este codul cuvântul Googleînseamnă o versiune de Android în care drepturile aplicației sunt limitate la nivelul nucleului sistemului de operare! EMAE! Ei bine, am înțeles!

Am apelat la internet pentru a rezolva problema

Iată ce am găsit:

X Tocmai am observat că telefonul meu este complet nou, cu o garanție de producător de 5 ani!

Dacă obțineți acces Root (drepturi de administrator în sistemul Android), atunci garanția de la producător (Samsung) dispare. De fapt, unele site-uri de hackeri susțin că există metode speciale pentru a readuce contorul din fabrică în poziția inițială. Contorul din fabrică este resetat la zero atunci când se obține accesul root. Acest lucru indică companiei de service că telefonul a fost spart și nu este acoperit de garanție.

Pentru a influența acest contor, trebuie să dezasamblați telefonul și să intrați în cipuri. Prin urmare, nu cădea în astfel de înșelăciuni!

Dacă obțineți acces Root, garanția dvs. va dispărea! Testat pe vechiul meu telefon!


ÎN versiune noua Android 5.0 Google folosește o logică diferită pentru a refuza accesul la carduri SD externe memorie.

1. Cum funcționează noua logică?

Aplicațiile sunt instalate în sistem în formă compilată. Adică într-o formă gata de lansare. Acest lucru crește performanța, multitasking-ul și reduce consumul de baterie.

Cu alte cuvinte, anterior existau fișiere de distribuție în sistem ( fișiere de configurare) iar sistemul, la pornirea aplicației, a compilat-o înainte de lansare. Cu alte cuvinte, fișierele au fost împachetate, în timp ce aplicația rula, fișierele au fost despachetate și lansate.

Acum, în Android 5.0, toate aplicațiile sunt instalate într-o formă compilată, dezarhivată. Astfel, aplicațiile folosesc mai mult spațiu, dar rulează mai repede!

2. La ce duce asta?

  1. Drepturile de acces sunt atribuite aplicației ÎN TIMPUL INSTALĂRII!
  2. Utilizatorul are dreptul de a-și stabili propriile drepturi aplicație specificăîn timpul instalării.
  3. Utilizatorul poate modifica permisiunile aplicației. De exemplu, dacă aveți încredere într-un program, îi puteți permite să editeze fișiere de pe un card de memorie extern.

VREAU SA ACTEZ ANDROID LA VERSIUNEA 5.0 pentru a rezolva problema!

Dacă actualizez versiunea OFICIALĂ a sistemului de operare, VOI PĂSTRA GARANȚIA!

Dar am nevoie de o versiune de Android pentru Rusia (special pentru ea, și nu pentru altă țară), ca să nu sufăr în cuvinte englezeștiîn interfață.

Voi încerca să o găsesc.

Program oficial Suport Samsung Telefoane Kies spune că telefonul meu este actualizat ultima versiune De.

Nu am găsit actualizări oficiale Android (pentru regiunea noastră) pe site-urile oficiale.

Am găsit informații pe forumuri că Google a lansat o versiune de firmware pentru Rusia în ianuarie 2015. Dar este implementat foarte lent pe dispozitivele clienților.

În acest fel, pot aștepta până când dispozitivul meu primește un mesaj că există o actualizare de software. După aceea, pot actualiza Android.

Puteți să-l flash singur fără să așteptați o invitație. firmware nou.

O modalitate FUNCȚIONALĂ de a edita fișiere (folosind un computer) pe un telefon cu versiunea Android 4.4 Enforcing.

După ce m-am hotărât să aștept actualizare oficială, a început să scormonească prin sistemul de fișiere de pe telefon. Și am descoperit ceva ciudat:

  1. Aveți drepturi de a edita dosare - mutați, redenumiți!
  2. Puteți șterge fișiere, le puteți muta în alte foldere (ca copii)
  3. Fără drepturi de editare a fișierelor!

Și am venit imediat cu o modalitate funcțională de a schimba fișierul folosind o copie intermediară! Analiza sistemelor în acțiune...

Adică ceea ce facem:

  1. Deschiderea fișierului pentru editare
  2. Salvați-l pe computer (nu vă va permite să salvați o copie pe telefon!)
  3. ștergeți un fișier de pe telefon
  4. rescrieți copia în locația fișierului șters!

Astfel obținem fișierul modificat (folosind o copie intermediară)!

Așa stau lucrurile, tovarăși!

Daca sunt noutati, o voi posta imediat!

Și acum la revedere, ne vedem în curând!

S-a terminat! Tableta, și anume Asus MeMO Pad 7, pe care l-am înlocuit pe muncitorul meu cinstit, a primit o actualizare la Android 5.0.1. Acum am un dispozitiv cu Lollipop, sau, cum se spune pe internet, cu Lollipop.

Actualizarea a sosit oarecum pe neașteptate. Sincer să fiu, așteptam un nou firmware pentru telefon în aprilie ( Asus ZenFone 5) - ea, de macar, promis. Nimeni nu a spus nimic despre tabletă, iar aici depinde de tine, iei-o și semnează pentru ea.

Acest lucru m-a descurajat de fapt (în sensul bun, desigur), și pentru că am achiziționat tableta în decembrie și avea versiunea 4.3. Adică, aceasta este a doua actualizare semnificativă a sistemului de operare (de fapt, au existat mai multe actualizări, dar numărul versiunii Android nu s-a schimbat). Producătorul anterior al dispozitivelor mele - Samsung - nu se putea lăuda cu o asemenea cadență de foc, deși a actualizat și sistemul de operare de două ori: de la Android 3.2 la Android 4.1.2 (prin 4.0.1). Dar a trebuit să așteptăm mult mai mult pentru aceste noi versiuni.

Ei bine, traiasca surprizele! După ce am primit o notificare despre lansarea unei noi versiuni de firmware, am descărcat-o imediat, care este mai mare de 700 de metri, și am lansat actualizarea. Deoarece am descărcat nu prin rețeaua de acasă, ci printr-o rețea mobilă, totul a durat puțin mai mult: de la începutul descărcării până la finalizarea actualizării, a trecut aproximativ o oră. Actualizarea în sine a durat aproximativ douăzeci de minute, dar ar putea dura mai mult - deoarece după instalarea sistemului de operare urmează procesul de actualizare programe instalate. Contorul meu a numărat până la 205. Dar acum, procesul s-a încheiat și este timpul să vedem ce s-a schimbat.

Primul lucru care mi-a atras atenția a fost grafica mai sofisticată la deblocarea dispozitivului. A doua este mâna din zona de notificare. Am suportat-o ​​câteva zile, sperând că întâmplător voi vedea undeva ceva legat de el. Nu l-am văzut. Apoi am început să caut intenționat și am găsit o explicație pentru asta pe 4pda. Se pare că notificările sunt împărțite în importante și nu atât de importante și este posibil să specificați ce notificări doriți să primiți. Dacă setați opțiunea Anunțați întotdeauna , atunci mâna dispare dacă opțiunea Doar alerte importante , apoi apare mâna. Sincer să fiu, mi-am scos mâna de mai multe ori, dar dintr-un motiv oarecare se întoarce mereu. De ce? Nu știu încă.

Iată, de fapt, procedura pentru „înlăturarea” acestei mâini:

Metoda prezentată mai sus nu este deloc complicată. Dar puteți obține rezultatul și mai rapid și mai ușor: apăsați unul dintre cele două butoane de control al volumului - va apărea o fereastră pe ecran care vă permite să schimbați nivelurile de volum pentru diferite componente ale sistemului și, de asemenea, atenție, control Moduri de alertă . Adevărat, din anumite motive, acestea sunt la fel Moduri de alertă sunt afișate în acest fel varianta rapida nu intotdeauna. Nu am găsit încă un model, dar, să fiu sincer, nu l-am căutat cu adevărat.

Nu am găsit actualizări oficiale Android (pentru regiunea noastră) pe site-urile oficiale.

Am găsit informații pe forumuri că Google a lansat o versiune de firmware pentru Rusia în ianuarie 2015. Dar este implementat foarte lent pe dispozitivele clienților.

În acest fel, pot aștepta până când dispozitivul meu primește un mesaj că există o actualizare de software. După aceea, pot actualiza Android.

Să vorbim despre cum să eliminați protecția la scriere de pe un card de memorie SD pe Android. Mulți oameni se confruntă cu această problemă atunci când încearcă să copieze sau să mute fișiere pe un card SD. În acest articol veți găsi mai multe modalități de a elimina protecția Intrări Android.

Cum să eliminați protecția la scriere de pe cardul SD Android

Dacă primiți o eroare precum imaginea de mai sus când încercați să copiați fișiere sau să formatați cardul SD, atunci știți că aceasta nu este problema dvs. Mai mult, cardul de memorie nu este deteriorat sau infectat cu un virus, este pur și simplu protejat la scriere. Fără prea mult timp, ne vom uita la mai multe metode despre cum să eliminați protecția la scriere Android.

Cum să eliminați protecția la scriere Android de pe cardul SD folosind Regedit

Cele mai multe probleme și erori pot fi rezolvate cu ușurință folosind registry. De asemenea, îl putem folosi pentru a elimina protecția la scriere Android.


Această metodă funcționează în majoritatea cazurilor, dar dacă din anumite motive nu o puteți utiliza, încercați următoarele metode.

Cum să eliminați protecția la scriere Android de pe cardul SD folosind Diskpart

  1. Introduceți cardul de memorie SD în computer și lansați promptul de comandă. Puteți face acest lucru apăsând tasta WIN + R și tastând „CMD” sau pur și simplu tastând „Command Prompt” în meniul Start.
  2. La fereastră Linie de comanda trebuie să introduceți următoarele comenzi în ordine.

  • diskpart
  • listă disc
  • selectați discul x (unde X este numărul cardului SD)
  • atribute disc clear readonly
  • curat
  • creați partiția primară
  • format fs=fat32

Dacă această metodă nu a ajutat la eliminarea protecției la scriere Android, nu disperați, mai avem câteva soluții la această problemă.

Schimbați rezoluția

  1. Introduceți cardul de memorie SD în computer. Clic Click dreapta mouse-ul la cardul de memorie și selectați Proprietăți. Apoi, în fila Securitate veți găsi numele contului dvs.
  2. Schimbați rezoluția cardului SD la Citire/Scrie, Citire/Executare sau Control total.

Această metodă va elimina protecția la scriere Android.

Alternativ, puteți să vă uitați îndeaproape la cardul SD pentru a găsi butonul de blocare. Dacă este, schimbă-l. Butonul de blocare este folosit pentru a proteja datele împotriva ștergerii sau formatare completă carduri de memorie.

Sperăm că ați reușit să eliminați protecția la scriere Android. Dacă aveți întrebări, vă rugăm să scrieți în comentariile de mai jos.

În timpul dezvoltării unei aplicații de competiție, am întâmpinat o problemă de stocare a bazei de date. Problema a fost cum identific cardul de memorie extern. În general, o căutare pe internet nu a dat un răspuns exact. Prin urmare, combinând toate rezultatele găsite, mi-am asamblat clasa. Dacă cineva este interesat, se uită sub tăietură.

Deci, să începem cu teoria.

Terminologie

Google ne spune că există următoarele concepte:
  1. Intern ( intern) memoria face parte din cardul de memorie încorporat în telefon. Când este utilizat în mod implicit, folderul aplicației este protejat împotriva accesului altor aplicații (Utilizarea memoriei interne).
  2. Extern ( extern) memoria este comună" stocare externă", adică aceasta poate fi fie parte a memoriei încorporate, fie un dispozitiv care poate fi îndepărtat. De obicei, aceasta face parte din memoria încorporată, ultima dată când am văzut un dispozitiv îndepărtat a fost pe Android 2.2, unde memoria încorporată era de aproximativ 2 GB, iar memoria conectată a devenit externă (Utilizarea stocării externe).
  3. Șters ( amovibil) memorie - toată stocarea care poate fi îndepărtată din dispozitiv fără intervenții „chirurgicale”.

Înainte de KitKat 4.4, API-ul nu oferea funcționalitate pentru preluarea căilor de memorie externe. Începând cu această versiune (API 19) a existat functie publica dosar abstract getExternalFilesDirs(Tipul șir), care returnează o matrice de șiruri cu căi către memoria internă și externă. Dar cum rămâne cu cardul nostru SD, care este introdus în slot? Din nou nu putem ajunge la ea.

rezultatele căutării

Pentru a răspunde la întrebare, am apelat la atotștiutorul Google. Dar nici el nu mi-a dat un răspuns clar. Au fost luate în considerare multe opțiuni de definire, de la utilizarea funcțiilor standard care duc la memorie externă, dar nu au nimic de-a face cu dispozitivele de stocare care sunt îndepărtate, până la regulile de montare a dispozitivelor de procesare (Android, pe de altă parte, Nucleul Linux lucrări). În ultimele cazuri, au fost folosite căi „cablate” către folderul cu dispozitive montate (în versiuni diferite acest director este diferit). Nu uitați că regulile de montare se modifică de la o versiune la alta.

În cele din urmă, am decis să combin toate cunoștințele acumulate și am scris propria mea clasă, care poate returna căile către dispozitivele externe și șterse.

Descrierea codului

A fost creată o clasă MountDevice, care conține calea către dispozitiv, tipul dispozitivului și un hash.
Există două tipuri de dispozitive ( memorie interna Nu l-am atins, deoarece poate fi accesat prin intermediul API-ului de sistem).

Enumerare publică MountDeviceType ( EXTERNAL_SD_CARD, REMOVABLE_SD_CARD )
Și clasa a fost creată StorageHelper, care efectuează căutarea carduri disponibile memorie.

Clasa StorageHelper implementează două metode de căutare - prin mediul de sistem ( Mediu inconjurator) și folosind Utilitare Linux montură, sau mai bine zis rezultatul executării lui.

Metoda unu - Mediul
Când lucrez cu mediul pe care îl folosesc functie standard getExternalStorageDirectory() pentru a obține informații despre stocarea externă. Pentru a obține informații despre memoria care este ștearsă, folosesc variabila de mediu " SECONDARY_STORAGE".

Există întotdeauna o memorie externă și de obicei există întotdeauna, așa că o verificăm pentru lizibilitate, calculăm hash-ul și ne amintim. Poate fi multă memorie de șters, așa că este necesar să împărțiți șirul rezultat după delimitator și să verificați fiecare valoare.

function fillDevicesEnvironment

Calea șirului = android.os.Environment.getExternalStorageDirectory() .getAbsolutePath(); if (!path.trim().isEmpty() && android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) ( testAndAdd(path, MountDeviceType.EXTERNAL_SD_CARD); ) // Obțineți dispozitivul de îndepărtare String rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE"); if (rawSecondaryStoragesStr != null && !rawSecondaryStoragesStr.isEmpty()) ( // Toate cardurile SD secundare sunt împărțite în matricea final String rawSecondaryStorages = rawSecondaryStoragesStr .split(File.pathSeparator); for (String rawSecondarySecondaryStorages toraj, MountDeviceType.REMOVABLE_SD_CARD);


Soluția a fost luată din stackoverflow. Răspunsul este undeva jos.
Metoda a doua - montare
Deoarece nu am putut face ca sistemul să-mi spună calea către memoria care este ștearsă pentru o lungă perioadă de timp, am decis să mă uit în direcția dispozitivelor montate. Sistemul are fișiere de configurare care descriu regulile de montare dispozitive externe. Totul ar fi bine, dar pe Android versiunea 4.* simplii muritori nu au acces la acest fișier, așa că nu voi lua în considerare această metodă.

Să revenim la utilitarul de montare. Când rulează fără parametri, comanda returnează o listă de sisteme de fișiere montate. Dispozitivele care trebuie șterse au de obicei formatul Sistemul de fișiere FAT, apoi vom evidenția linii care conțin caracteristica " gras". Memoria externă va fi caracterizată de parametrul " siguranța".

Notă: atunci când utilizați această metodă, tipurile de dispozitive montate nu sunt întotdeauna determinate corect (cel mai probabil nu am ținut cont de ceva). Am observat diferența pe versiuni diferite Android. Prin urmare, această metodă poate fi folosită ca una suplimentară.

Funcția fillDevicesProcess

încerca ( Timp de execuție= Runtime.getRuntime(); proc = runtime.exec("mount"); try ( is = proc.getInputStream(); isr = new InputStreamReader(is); br = new BufferedReader(isr); while ((line = br.readLine()) != null) ( if (line.contains("secure ")) continua; dacă (line.contains("asec")) continuă; dacă (line.contains("grasă")) (// TF card String coloane = line.split(" "); dacă (coloane != null && columns.length > 1) ( testAndAdd(columns, MountDeviceType.REMOVABLE_SD_CARD); ) ) else if (line.contains("fuzibil")) (// intern(Extern) // stocare String coloane = line.split(" "); dacă (columns != null && columns.length > 1) ( // mount = mount.concat(columns + "\n"); testAndAdd(columns, MountDeviceType.EXTERNAL_SD_CARD); ) ) ) în cele din urmă ( .. . ) ) prinde (Excepția e) ( ... )

SursăÎntreaga clasă nu se află încă nicăieri. Într-una din aceste zile voi încerca să-l postez pe gitHub.

Cine mai folosește ce metode?

Etichete:

  • android
  • dezvoltare pentru Android
  • card SD
Adaugă etichete

Odată cu actualizarea la, utilizatorii au primit o serie de restricții privind utilizarea cardurilor SD. Până de curând, această problemă putea fi rezolvată folosind firmware personalizat sau rollback la mai multe versiunea timpurie OS. Acum se pot reveni la vechile oportunități Android 4.4 KitKat. Citiți mai departe pentru a afla cum să faceți acest lucru.

În primul rând, va trebui să vă rootați Android dispozitive. Al doilea condiție importantă- aceasta aplicație SDfix. Descărcați aplicația de la Android gratuit poți direct din . Pentru a face acest lucru, utilizați linkul de mai jos.

Avand instalat SDfix de unul singur Android, vă veți restabili capacitățile anterioare în câteva atingeri. Principiul de funcționare al aplicației este că SDfix adaugă grupul Android UNIX „media_rw” la WRITE_EXTERNAL_STORAGE astfel folosit în Android 4.4 KitKat XML fisierul se schimba in platform.xml. Aceasta creează copie de rezervă configurare inițială platform.xml.original-pre-sdfix, care poate fi folosit pentru a restabili restricțiile. Pentru a readuce sistemul la stoc, trebuie să utilizați un explorator care acceptă accesul root și să înlocuiți platform.xml cu platform.xml.original-pre-sdfix.

Separat, trebuie menționat că aplicațiile care folosesc SD vor primi mai mult nivel scăzut Securitate. De asemenea, important este faptul că SDfix are ca rezultat modificări permanente, ceea ce înseamnă că odată ce vechile permisiuni sunt restaurate, aplicația poate fi ștearsă.