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;
}

}

Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top