79 votes

Autorisation d’écriture sur la carte SD

J’aimerais que mon application pour archiver l’application DB sur la carte SD. Dans mon code, je vérifie si le répertoire existe et si non, jeter un . Dans ce cas particulier, j’essaie de copier le fichier dans le répertoire racine sur la carte SD, mais il est de lancer un `` . Comment puis-je changer l’autorisation sur un dossier/fichier pour pouvoir y écrire ?

208voto

Dave Webb Points 90034

Vous avez raison que le répertoire de la Carte SD est - /sdcard mais vous ne devriez pas être dur à coder ça. Au lieu de cela, faire un appel à l' Environment.getExternalStorageDirectory() pour obtenir le répertoire:

File sdDir = Environment.getExternalStorageDirectory();

Si vous ne l'avez pas déjà fait, vous devrez donner à votre application correcte de l'autorisation d'écrire sur la Carte SD en ajoutant la ligne ci-dessous pour votre Manifeste:

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

1voto

Samus Arin Points 1117

L'suggéré technique ci-dessus dans Dave réponse est certainement une bonne pratique de conception, et oui, finalement, de l'autorisation requise doit être définie dans le AndroidManifest.xml fichier pour accéder à l'appareil de stockage externe.

Cependant, le Mono-esque façon d'ajouter la plupart (si pas tous, pas sûr), "manifeste options" avec les attributs de la classe la mise en œuvre de l'activité (ou le service).

Visual Studio Mono plugin génère automatiquement le manifeste, mieux vaut ne pas manuellement la modifier (je suis sûr qu'il y a des cas où il n'y a pas d'autre option).

Par exemple:

[Activity(Label="MonoDroid App", MainLauncher=true, Permission="android.permission.WRITE_EXTERNAL_STORAGE")]
public class MonoActivity : Activity
{
  protected override void OnCreate(Bundle bindle)
  {
    base.OnCreate(bindle);
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X