O método OpenFileOutput () é indefinido!
-
26-09-2019 - |
Pergunta
Em primeiro lugar, codifiquei alguns métodos na atividade principal, mas decidi que eles deveriam ser uma classe.
Este é o meu código ... OpenFileOutput e OpenFileInput são indefinidos. Qualquer ideia?? Talvez deva ser serviço ou atividade ... ??
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;
}
}
Solução
Esses são métodos definidos no Context
classe, não métodos definidos em sua classe. Quando seu código fazia parte de um Atividade, poderia usar um método de conveniência OpenFileInput () em seu Activity
classe base para acessar o subjacente Context.getApplicationContext (). OpenFileInput () (e da mesma forma openFileOutput()
).
Agora você terá que substituir aqueles por chamadas diretas para o subjacente Contexto métodos.
Outras dicas
Substituir
FileOutputStream fos = openFileOutput(Adress, Context.MODE_PRIVATE);
com linha abaixo
FileOutputStream fos = getApplicationContext().openFileOutput(filename, getActivity().MODE_PRIVATE);
Se usado dentro do fragmento
FileOutputStream fos =getActivity().openFileOutput(filename, getActivity().MODE_PRIVATE);