Xamarin android guardar archivo de texto

Estoy usando Xamarin.Android y quiero guardar un archivo .txt en la tarjeta SD. Aquí está el código que estoy usando:

  private void SavetoSd() { var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.Path; var filePath = System.IO.Path.Combine(sdCardPath, "iootext.txt"); if (!System.IO.File.Exists(filePath)) { using(System.IO.StreamWriter write = new System.IO.StreamWriter(filePath,true)) { write.Write(etSipServer.ToString()); } } } 

Sin embargo, recibo el error siguiente:

System.UnauthorizedAccessException: Se ha denegado el acceso a la ruta "/mnt/sdcard/iootext.txt".

He añadido lo siguiente al manifiesto:

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

¿Cómo puedo corregir el error?

Si está en Android 6.0 o superior, deberá realizar una comprobación de tiempo de ejecución para obtener permisos. Esto se puede hacer así:

 if ((CheckSelfPermission(Permission.ReadExternalStorage) == (int)Permission.Granted) && (CheckSelfPermission(Permission.WriteExternalStorage) == (int)Permission.Granted)) 

Más información sobre esto se puede encontrar en la documentación aquí .

Si el archivo no existe en primer lugar crear, que obtener la ruta absoluta y escribir sus datos en ella.

  Java.IO.File sdCard = Android.OS.Environment.ExternalStorageDirectory; Java.IO.File dir = new Java.IO.File (sdCard.AbsolutePath + "/MyFolder"); dir.Mkdirs (); Java.IO.File file = new Java.IO.File (dir,"iootext.txt"); if (!file.Exists ()) { file.CreateNewFile (); file.Mkdir (); FileWriter writer = new FileWriter (file); // Writes the content to the file writer.Write (jsonData); writer.Flush (); writer.Close (); } 

Yo estaba teniendo el mismo problema y después de pasar un par de horas, me encontré con que si está ejecutando en sdk superior a 23, la versión de Android superior a 6, debe implementar la solicitud de acceso al usuario. Encontrará más información aquí en este enlace

  • Portar Card.IO a C # Xamarin Studio
  • Mono para Android: qué marcos de pruebas funcionan
  • Android - Bitmap.CreateBitmap - excepción de puntero nulo
  • Necesito un ejemplo de sqlite con Monodroid
  • ¿Son las aplicaciones MonoDroid (Xamarin) menos propensas al robo?
  • Manejo adecuado del cambio de configuración
  • ¿Xamarin Android ejecutará OnCreateView cuando se llama al constructor IntPtr?
  • Mono para Android - Todas las actividades en orientación vertical
  • ¿MonoDroid vale la pena el esfuerzo?
  • Android TextView defStyle parámetro ignorado?
  • En XNA a Mono Android Conversiones: ¿Qué es una manera simple (o la más simple) de manejar el ciclo de vida de la actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.