Italian permessi DirRootExternal

Discussion in 'Italian Forum' started by giannimaione, May 31, 2018.

  1. giannimaione

    giannimaione Well-Known Member Licensed User

    sono certo che tra di voi c'è uno di buona volontà che mi spiega come attivare i permessi per poter scrivere (nel mio caso un database sql lite) in DirRootExternal per dispositivi android 6 e successivi.
     
  2. LucaMs

    LucaMs Expert Licensed User

    Prima dimmi che hai un motivo ben preciso per voler usare la DirRootExternal anziché la DirInternal che ha diversi vantaggi :)
     
  3. giannimaione

    giannimaione Well-Known Member Licensed User

    non lo so!
    in pratica sto modificando una APP che realizzai qualche tempo fa, e usavo dirRootexternal.
    intanto per verificare il comportamento (della APP) con diversi dispositivi utilizzo dirinternal senza problemi;
    il motivo potrebbe essere questo (vedi se sono convincente):
    ma la dirRootexternal fa riferimento ad una eventuale scheda SD oppure non ho capito nulla !?!?!
     
  4. Star-Dust

    Star-Dust Expert Licensed User

    Hallo John Mayonnai
    See this:
    https://www.b4x.com/android/forum/threads/runtime-permissions-android-6-0-permissions.67689/

    And this
    https://www.b4x.com/android/forum/threads/samsung.85306/#post-540988

    And
    https//www.b4x.com/android/forum/threads/externalstorage-access-sd-cards-and-usb-sticks.90238/#post-570456
     
    Last edited: May 31, 2018
    giannimaione likes this.
  5. LucaMs

    LucaMs Expert Licensed User

    No, DirRootExternal si riferisce comunque a memoria interna del dispositivo.

    A maggior ragione, ti consiglio vivamente di usare la DirInternal (personalmente per me la DirRootExternal e la DirDefaultExternal non esistono proprio :D)
     
  6. udg

    udg Expert Licensed User

    Un motivo valido per non utilizzare la DirInternal è se hai la necessità che i dati sopravvivano ad una disinstallazione (ed eventuale re-installazione).
    Altro motivo potrebbe essere la condivisione di quei dati con altre app (tue o di altri).

    Considera anche la più comoda RuntimePermissions.GetSafeDirDefaultExternal("") (e le relative righe da aggiungere al Manifest) che ti consente comunque un utilizzo di spazio "esterno" e condivisibile. Se non ricordo male, non richiede permessi run-time per dispositivi 4.4 o superiori (quindi quasi tutti). Su quest'ultimo punto non ci giurerei perché è passato troppo tempo da quando mi sono preso la briga di leggerne le caratteristiche. Segui il primo link proposto da @Star-Dust per avere certezze.
     
  7. LucaMs

    LucaMs Expert Licensed User

    Vero, anche se, normalmente, una eventuale resintallazione non prevede/richiede l'utilizzo di dati locali precedentemente salvati.

    Ma questo ha anche un contro, ovvero proprio il fatto che altre app e l'utente stesso abbiano la possibilità di modificare o addirittura elminare i tuoi dati.
    Questo secondo me è un punto importante; un utente sbadato trova il file asdljlj.db nella Root e lo elimina.
     
  8. LucaMs

    LucaMs Expert Licensed User

    Forse è bene anche ricordare che i dati nella DirInternal non vengono eliminati quando venga aggiornata l'app (lo scrivo perché magari qualcuno potrebbe pensare il contrario e proprio temendo questo preferisca salvare i dati nella Root).
     
  9. giannimaione

    giannimaione Well-Known Member Licensed User

    infatti , in fase di test, i dati (db) rimangono intatti.
    e se volessi essere un utente sbadato, dove trovo il db ?
     
  10. LucaMs

    LucaMs Expert Licensed User

    o magari il suo programmatore voglia fare verifiche? ;)

    In fase di test, per comodità, puoi effettuare copie dalla Internal alla Root, quando utile.

    Un utente sbadato dovrebbe avere comunque il dispositivo "rootato" per accedere al db.
    Non sono certissimo su quale sia il percorso della DirInternal; più precisamente, non so se possa cambiare in base alla versione di Android (penso e spero di no).

    Se proprio vuoi sapere dove finisca il db (cosa che in realtà non ti serve sapere), ti basta fare un log:
    Log(File.DirInternal)
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice