2013-04-02 10 views
1

Je crée un fichier de préférences partagées dans mon code android. Je veux ensuite envoyer ce fichier par courrier électronique dans mon code. Pour cela, j'ai besoin d'accéder au chemin du fichier de préférences partagées. Le code que j'utilise est ci-dessous. Mais cela ne semble pas fonctionner. Je suis en mesure d'ouvrir l'e-mail, mais il n'y a pas de pièce jointe car je suppose qu'il ne pouvait pas obtenir le fichier. Quelqu'un peut-il me suggérer une solution ici.Récupère le chemin d'accès au fichier sharedpreferences

File f = getDatabasePath("userPrefsFile.xml"); 
String filelocation=f.getAbsolutePath(); 
Intent email = new Intent(Intent.ACTION_SEND); 
email.setType("application/xml"); 
String[] to = {"[email protected]"}; 
email.putExtra(Intent.EXTRA_EMAIL, to); 
email.putExtra(Intent.EXTRA_STREAM,filelocation); 
email.putExtra(Intent.EXTRA_SUBJECT,"test file send"); 
startActivity(Intent.createChooser(email, "Send email")); 

Répondre

3

Alors SharedPreferences fichiers sont situés au répertoire

/data/data/your.package/shared_prefs 

Vous avez donc besoin d'utiliser le chemin ci-dessus.

Pseudo-code:

File root = new File("/data/data/your.package/shared_prefs"); 
if (root.isDirectory()) { 
    for (File child: root.listFiles()) { 
     Toast.makeText(this, child.getPath(), Toast.LENGTH_SHORT).show(); 
    } 
} 

Raison pour laquelle vous ne pouvez pas utiliser getDatabasePath() est qui retourne les bases de données dossier

/data/data/your.package/databases/ 


Même problème est également lié à getFileStreamPath() méthode qui renvoie

/data/data/your.package/files 
Questions connexes