2010-05-04 19 views
2

Modifier: C'était une erreur de l'utilisateur (désolé). J'ai répondu ci-dessous.Est-il possible de lire des données qui ont été copiées séparément sur la carte SD Android sans avoir de permissions root?

Je développe une application qui doit accéder aux données sur la carte SD. Quand je cours sur mon appareil de développement (un ODROID avec Android 2.1) J'ai accès root et peut construire le chemin en utilisant:

File sdcard = Environment.getExternalStorageDirectory(); 
String path = sdcard.getAbsolutePath() + File.separator + "mydata" 
File data = new File(path); 
File[] files = data.listFiles(new FilenameFilter() { 
    @Override 
    public boolean accept(File dir, String filename) { 
     return filename.toLowerCase().endsWith(".xyz"); 
    }}); 

Cependant, quand je l'installer sur un téléphone (2.1) où je n'ai pas racine accès j'obtiens des fichiers == null. Je suppose que c'est parce que je n'ai pas les bonnes permissions pour lire les données de la carte SD. Je reçois aussi des fichiers == null en essayant juste de lister les fichiers sur/sdcard. Donc, la même chose s'applique sans mon chemin construit.

En outre, cette application n'est pas destinée à être distribuée via le magasin d'applications et doit utiliser des données copiées séparément sur la carte SD, c'est donc un cas d'utilisation réel. C'est trop de données à mettre en res/raw (j'ai essayé, ça n'a pas marché).

J'ai aussi essayé d'ajouter:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

au manifeste, même si je veux seulement lire la carte SD, mais il n'a pas aidé. Je n'ai pas trouvé de type d'autorisation pour lire le stockage.

Il y a probablement un moyen correct de le faire, mais je n'ai pas réussi à le trouver. Tous les indices seraient utiles.

Répondre

1

Donc je viens de passer une demi-heure pour écrire cette question puis j'ai déconnecté le téléphone et je l'ai connecté sans le monter en tant que lecteur.

C'était le problème. Maintenant ça marche.

Désolé pour votre temps perdu. :/