Запись и чтение на SD-карту
Я хочу сделать заявление, которое будет делать что-то ежедневно. Мне удалось сохранить день, и в последующие дни я хочу сравнить его с текущим днем.
Пример: день =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 ответ
Решение
Кажется, вы пытаетесь прочитать файл, прежде чем приложение сможет его создать. Я настоятельно рекомендую вам использовать 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
}
. . .
}