Das Verfahren OpenFileOutput () ist nicht definiert!
-
26-09-2019 - |
Frage
Zum einen codierten ich einige Methoden in Hauptaktivität Aber ich beschloss, sollten sie eine Klasse sein.
Das ist mein Code ... openFileOutput und openFileInput nicht definiert sind. Irgendeine Idee?? vielleicht sollte es Service oder eine Aktivität ... ??
sein package spexco.hus.system;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import spexco.hus.cepvizyon.CepVizyon;
import android.content.Context;
public class LicenseIDB {
private String PHONECODEFILE = "CepVizyonCode";
private static String PhoneCode = null;
public LicenseIDB() {
if (readLocal(PHONECODEFILE, 8) == null)
createSystemCode();
}
public static long getDate() {
Date currentTime = new Date();
return currentTime.getTime();
}
public void createSystemCode() {
long date = getDate();
String str = Integer.toHexString(Integer.MAX_VALUE - (int) date);
for (int i = str.length(); i < 8; i++) {
str += "" + i;
}
PhoneCode = str.substring(0, 8);
saveLocal(PhoneCode, PHONECODEFILE);
}
public static String getPhoneCode() {
return PhoneCode;
}
public void saveLocal(String fileString, String Adress) {
try {
FileOutputStream fos = openFileOutput(Adress, Context.MODE_PRIVATE);
fos.write(fileString.getBytes());
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String readLocal(String Adress, int lenght) {
byte[] buffer = new byte[lenght];
String str = new String();
try {
FileInputStream fis = openFileInput(Adress);
fis.read(buffer);
fis.close();
str = new String(buffer);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
}
Lösung
Diese definiert sind Methoden auf der Context
Klasse, nicht Methoden in der Klasse definiert. Wenn Ihr Code Teil einer Aktivität war, könnte es eine bequeme Methode openFileInput () in seiner Activity
Basisklasse den darunter liegenden Context.getApplicationContext (). openFileInput () (und ähnlich für openFileOutput()
).
Sie werden nun die mit den direkten Anrufe auf die zugrunde liegenden Context Methoden ersetzen müssen .
Andere Tipps
Ersetzen
FileOutputStream fos = openFileOutput(Adress, Context.MODE_PRIVATE);
mit folgenden Zeilen
FileOutputStream fos = getApplicationContext().openFileOutput(filename, getActivity().MODE_PRIVATE);
Wenn innerhalb Fragments verwendet
FileOutputStream fos =getActivity().openFileOutput(filename, getActivity().MODE_PRIVATE);