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:
- Comprobar la versión de Xamarin.Android mediante programación
- ¿Cómo registrar mi propia subclase de aplicación en Xamarin.Android?
- Cómo determinar el tipo MIME de archivo en android?
- Xamarin.Android - ¿la compilación de código nativo hace la ingeniería inversa más difícil?
- La aplicación no se implementa en el emulador de Android Intel en la API 19 (plataforma 4.4.2)
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?
- VM con la versión 1.6.0 no tiene soporte multidex: No se puede encontrar la aplicación Mono.Android.Platform.ApiLevel_23 o Xamarin.Android.Platform
- ParseInstallation.SaveAsync () que causa UnhandledException en formularios Xamarin Android
- C # barra de progreso circular xamarin - Android
- Configuración de la versión de Android
- ¿Cómo puedo incluir programaticamente en Android?
- MvvmCross: ¿Cómo crear un MvxListView con un adaptador personalizado mediante programación?
- Actualización de Xamarin hace que "el archivo de clase tenga versión incorrecta 52.0, debe ser 50.0" error
- Manera correcta de almacenar la clave de cifrado para la base de datos SqlCipher
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
- Quitar TextChangedListener y volver a agregarlo
- API cercana, ¿cuál es la manera correcta de escanear balizas en segundo plano?