Запись и чтение на SD-карту - PullRequest
0 голосов
/ 05 марта 2012

Я хочу сделать приложение, которое будет делать что-то ежедневно.Мне удалось сохранить день, а в последующие дни я хочу сравнить его с текущим днем.

Пример: день = 5;aux = 5;

Завтра:

день = 6;aux = 5;

Если (день! = aux) сделать что-то еще, не делать что-то

Я хотел сохранить состояние aux в файле на SD-карте, но это так сложнонайти рабочий код.Я надеюсь, что кто-то взглянет и ответит, мне это понадобится на завтра.

public class Castle extends Activity {
/** Called when the activity is first created. */

@Override    
public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.castle);


    Calendar calendar = Calendar.getInstance();      
    int day = calendar.get(Calendar.DAY_OF_WEEK);

    int aux=Reading();

    if(day==aux)
    { 
        Intent intent = new Intent(Castle.this, Hug.class);
        startActivity(intent);
    }
    else 
    {
        Intent intent = new Intent(Castle.this, Hug_Accepted.class);
        startActivity(intent);

    try {
        File root = Environment.getExternalStorageDirectory();
        if (root.canWrite()){
            File file = new File(root, "Tedehlia/state.txt");
            file.mkdir();
            FileWriter filewriter = new FileWriter(file);
            BufferedWriter out = new BufferedWriter(filewriter);
            out.write(day);
            out.close();
        }
    } catch (IOException e) {

    }}




}
public int Reading()
{int aux = 0;
    try{


       File f = new File(Environment.getExternalStorageDirectory()+"/state.txt");

       FileInputStream fileIS = new FileInputStream(f);

       BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS));

       String readString = new String();

       if((readString = buf.readLine())!= null){

          aux=Integer.parseInt(readString.toString());


       }

    } catch (FileNotFoundException e) {

       e.printStackTrace();

    } catch (IOException e){

       e.printStackTrace();

    }

    return aux;
} 

}

1 Ответ

1 голос
/ 05 марта 2012

Похоже, вы пытаетесь прочитать файл, прежде чем приложение сможет его создать.Я настоятельно рекомендую использовать для этого SharedPreferences вместо файла на SDCard.

public void onCreate() {
    . . .
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    int aux = prefs.getInt("AUX", -1);
    if (day == aux) {
        . . .
    } else {
        aux = day;
        SharedPreferences.Editor editor = prefs.edit();
        editor.putInt("AUX", day);
        editor.apply(); // or editor.commit() if API level < 9
    }
    . . .
}
...