2013-06-20 6 views
0

J'ai lu tant de théories sur l'enregistrement d'un fichier sur le stockage interne et le stockage externe que je ne sais plus exactement quoi faire. J'ai créé un fichier PDF avec droidtext que je veux envoyer par e-mail en pièce jointe dans l'application de messagerie choisie. Ce n'est pas un problème. J'ai réussi à cela, cependant ... Je ne peux le faire qu'avec le stockage externe. Donc, je crée un PDF, le mettre dans le stockage externe avec Environment.getExternalStorageDirectory().getAbsolutePath(). Cependant, si aucun stockage externe n'est disponible, je veux enregistrer le PDF sur le stockage interne. Je l'ai fait comme ça jusqu'à présent: externe (fonctionne parfaitement):Stockage interne ou externe

pdf = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + java.io.File.separator + fileName); 
      PdfWriter.getInstance(document, new FileOutputStream(pdf)); 

Stockage interne:

pdf = new File(fileName); 
      PdfWriter.getInstance(document, openFileOutput(fileName, MODE_PRIVATE)); 

Avec les deux ayant Document document = new Document();. La méthode de mémoire interne ne fournit aucune erreur, mais je ne suis pas sûr si le fichier est enregistré en interne. En outre, je pense que parce qu'il est enregistré en interne, l'application de messagerie ne sera pas en mesure de le sélectionner en pièce jointe. Je ne peux pas tester cela parce que mon émulateur n'a pas d'application de messagerie. Je ne peux pas non plus passer en revue le contenu de l'appareil. Je n'ai pas non plus d'appareil qui ne possède pas de stockage externe ...

Quelle est la meilleure façon de le résoudre? Forcer les utilisateurs à avoir un stockage externe ou existe-t-il d'autres moyens de résoudre ce problème?

Répondre

1

"Quelle est la meilleure façon de résoudre cela? Forcer les utilisateurs à avoir un stockage externe ou existe-t-il d'autres façons de résoudre ce problème?" ... Je ne suis pas certain, mais je pense que vous devez forcer les utilisateurs avoir un stockage externe pour pouvoir envoyer une pièce jointe par courrier électronique.

+0

Merci pour votre réponse! J'espère que quelqu'un peut me répondre avec 100% de certitude. –

0

Vous ne pouvez pas utiliser MODE_PRIVATE pour enregistrer dans le stockage interne ou l'application de messagerie ne pourra pas accéder au fichier. Vous devrez utiliser MODE_WORLD_READABLE.

Pour obtenir le répertoire où le fichier est stocké, utilisez Context.getFilesDir() (http://developer.android.com/reference/android/content/Context.html#getFilesDir%28%29)

Vous pouvez aussi installer une application de messagerie sur l'émulateur pour tester. Il suffit de télécharger un apk et l'installer via adb.

Questions connexes