PDA

Ver la Versión Completa : [ SOLUCIONADO ] Error de permisos en juego 2D LibGdx


leviatan7
22/02/16, 20:33:22
Buenas. He creado un juego 2D utilizando LibGdx y en Desktop me funciona perfectamente, pero en android me salta la siguiente excepción:

com.badlogic.gdx.utils.GdxRuntimeException: Error writing file: highscores.dat (External)
at com.badlogic.gdx.files.FileHandle.writeString(File Handle.java:353)
at com.badlogic.gdx.files.FileHandle.writeString(File Handle.java:339)
at com.mygdx.game.game.HighScores.save(HighScores.jav a:52)
at com.mygdx.game.game.HighScores.load(HighScores.jav a:15)
at com.mygdx.game.pantallas.PantallaFinJuego.show(Pan tallaFinJuego.java:93)
at com.badlogic.gdx.Game.setScreen(Game.java:61)
at com.mygdx.game.pantallas.PantallaJuego$5.run(Panta llaJuego.java:368)
...........
...........


Mi AndroidManifest:

android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<application
android:allowBackup="true"

......................

La clase donde da el error:

[COLOR="red"]public class HighScores {
public static String[] highscores = { "0", "0", "0" };
public static String archivoHighscores = "highscores.dat";

public static void load() {

FileHandle arquivo = Gdx.files.external("highscores.dat");
String linea;
if (!arquivo.exists())
HighScores.save();
linea=arquivo.readString();
highscores=linea.split(",");
// ---- CÓDIGO ----
}

public static void engadirPuntuacion(int puntuacion) {
boolean encontrado = false;
int i = 0;
load();

mocelet
22/02/16, 20:51:56
Más que de permisos es que desde KitKat la escritura en la SD por parte de apps es o bien imposible o limitada.

Lo mejor es que uses los ficheros solo para leer y las escrituras las hagas sólo con preferencias. Así la implementación te vale en escritorio, Android, web, iOS, etc.

P.D.: Además que en este caso es más limpio tener unas preferencias que crear un fichero, parsearlo, etc. cuando al final quieres tres valores nada más que con tres valores en las preferencias lo resuelves rápido.

leviatan7
23/02/16, 19:14:19
Buenas, he probado con un AVD de API 18 y funciona. Muchisimas gracias :)

Dexafree
24/02/16, 21:59:31
Marcamos como Solucionado :ok: