Сохранение таблицы рекордов с libgdx на android

Рейтинг: 0Ответов: 2Опубликовано: 06.01.2015

С десктопа сохранение и чтение работает, а когда запускаю на телефоне, ничего не работает.
Вот код:

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

import com.badlogic.gdx.Gdx;

public class ScoreManager {

    private int score;

    public void getScore(int score) {
        this.score = score;
    }

    private File f = new File("highscore.txt");

    public int s;

    public boolean isHigh(int score) {
        return score > s;
    }

    public void SaveScore() {
        try {
            PrintWriter out = new PrintWriter(f.getAbsoluteFile());
            out.print(score);
            out.close();
        } 
        catch(Exception e) 
        {
            e.printStackTrace();            
        }
    }

    public void LoadScore() {
        try {
            Scanner sc = new Scanner(f.getAbsoluteFile());
            while(sc.hasNext())
                s = sc.nextInt();
            sc.close();
        }
        catch(IOException e)
        {
            e.printStackTrace();
            Gdx.app.exit();
        }
    }

}

Ответы

▲ 2

Думаю, нужно указать директорию для файла. Например, так:

    String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getPath() + "/highscore.txt"
   f = new File(dir);

И не забудьте про пермишен в манифесте:

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

Вот статья на всякий случай.

▲ 2

В libgdx есть специальный класс для хранения конфигурации приложения:

Preferences pref = Gdx.app.getPreferences("MyPreference");

можете воспользоваться им