Italian permessi DirRootExternal

giannimaione

Well-Known Member
Licensed User
Longtime 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.
 

giannimaione

Well-Known Member
Licensed User
Longtime 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 !?!?!
 

Star-Dust

Expert
Licensed User
Longtime 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 !?!?!
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:

LucaMs

Expert
Licensed User
Longtime User
il motivo potrebbe essere questo (vedi se sono convincente):
ma la dirRootexternal fa riferimento ad una eventuale scheda SD oppure non ho capito nulla !?!?!
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)
 

udg

Expert
Licensed User
Longtime 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.
 

LucaMs

Expert
Licensed User
Longtime User
Un motivo valido per non utilizzare la DirInternal è se hai la necessità che i dati sopravvivano ad una disinstallazione (ed eventuale re-installazione).
Vero, anche se, normalmente, una eventuale resintallazione non prevede/richiede l'utilizzo di dati locali precedentemente salvati.

Altro motivo potrebbe essere la condivisione di quei dati con altre app (tue o di altri)
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.
 

LucaMs

Expert
Licensed User
Longtime 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).
 

giannimaione

Well-Known Member
Licensed User
Longtime 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).
infatti , in fase di test, i dati (db) rimangono intatti.
un utente sbadato trova il file asdljlj.db nella Root e lo elimina.
e se volessi essere un utente sbadato, dove trovo il db ?
 

LucaMs

Expert
Licensed User
Longtime User
e se volessi essere un utente sbadato, dove trovo il db ?
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)
 
Top