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

}

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top