1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. berndschneider, 13.04.2012 #1
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    Hallo Leute,

    ich habe da folgendes Problem. In einer Activity möchte ich ein Passwort FILE auslesen, jedoch stürzt die App ab. Ich glaube er findet das "SECRET" FILE nicht(laut logcat). Kann mit jemand helfen?

    Hier der CODE in Kürze:

    Hier Auszug der onCreate()-Methode der aufrufenden Activity
    Secret secret;
    String inhalt;
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_activity);

    secret = new Secret(this);
    inhalt=secret.passwortAuslesen();//HIER der Aufruf
    .
    .
    .//usw
    }

    In der Klasse Secret.java ist folgende Methode definiert

    boolean read =false;

    String passwortAuslesen() {

    FileInputStream fin = null;

    try {
    fin = context.openFileInput(FILENAME);
    byte[] dataArray = new byte[fin.available()];
    while (fin.read(dataArray) != -1) {
    collected = new String(dataArray);//fin.read();

    }
    read=true; // wenn es geklappt hat
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if(fin!=null){
    try {
    fin.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }}
    if(read)
    return collected;
    else
    return "LESEFEHLER";
    }
     
  2. swordi, 13.04.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    existiert denn das file überhaupt ?
     
  3. berndschneider, 13.04.2012 #3
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    Ich denke ob das FILE existiert fängt er in der catch ab oder liege ich da falsch?
     
  4. swordi, 13.04.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    jap - wo sollte denn deiner meinung nach die file liegen ?

    falls auf der sd karte => berechtigungen gesetzt ?
     
    berndschneider gefällt das.
  5. berndschneider, 13.04.2012 #5
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    hi swordi, danke erstmal für deine hilfe!!!:smile:

    ich arbeite zum ersten mal mit files ind android.

    Data Storage | Android Developers

    hatte ich mir durchgelesen.

    ok folgende methode benutze ich zum Schreiben in ein FILE. aber wenn ich die activity zum ersten mal auf das device aufspiele wurde diese methode noch nie benutzt. haste ne idee? ich hänge seit paar stunden beim debuggen

    sie liegt auch in der Secret.java

    /*Passwort setzen*/
    void passwortSchreiben(String EINGABE){
    try {
    FileOutputStream fos = context.openFileOutput(FILENAME, Context.MODE_PRIVATE);
    fos.write(EINGABE.getBytes());
    fos.close();
    Toast.makeText(context, "Passwort erfolgreich erneuert!" , Toast.LENGTH_SHORT).show();
    //Toast.makeText(b.getContext(), "Passwort erfolgreich erneuert!" , Toast.LENGTH_SHORT).show();
    } catch (FileNotFoundException e) {
    e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
    } catch (IOException e) {
    e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
    }

    }
     
  6. swordi, 13.04.2012 #6
    swordi

    swordi Gewerbliches Mitglied

    ja rufst sie denn irgendwo auf auch ?

    ich kapier nicht ganz wo das problem ist.


    btw: java coding standard nutzen erleichtert die lesbarkeit
     
  7. berndschneider, 13.04.2012 #7
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    Ok ich erläuter ess dir kurz.

    die Activity, die gestartet wird ist die LoginActivity.java.
    Durch einen Intent kommt man in die SetPWActivity.java.

    In der SetPWActivity.java wird die Methode passwortSchreiben(...) aufgerufen.

    Jedoch bevor passwortSchreiben(...) jemals aufgerufen wird, wird schon in der LoginActivity.java passwortAuslesen() aufgerufen.

    Für den Fall dass er das FILE nicht findet ,(was ja auch beim ersten aufruf der fall sein wird) dienen mir doch die catch blöcke...

    Hab ich nen denkfehler? Danke schonmal
     
  8. swordi, 13.04.2012 #8
    swordi

    swordi Gewerbliches Mitglied

    nein ist ok

    setzt dir einfach ne sharedpreference für den ersten start.

    wenns der erste start ist, braucht er ja das passwort nicht lesen - einfach direkt zur passwort eingabe springen

    das passwort muss er ja generell erst nach der passworteingabe lesen. vorher ist das ja sowieso noch unnötig.
     
    berndschneider gefällt das.
  9. berndschneider, 13.04.2012 #9
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    gut ich zieh mir da die doku in android rein zu sharedpreference.

    Also haste nen kleinen codeschnippsel? nur um den bug zu lösen damit ich weiter machen kann.
    also wenn LoginActivity zum ersten mal gestartet wird. springe zu SetPWActivity.java
     
  10. swordi, 13.04.2012 #10
    swordi

    swordi Gewerbliches Mitglied

    pseudocode

    if firststart
    start password input activity
     
  11. berndschneider, 13.04.2012 #11
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    ich glaub es funzt:smile:) danke

    hier die funktionen die ich in die Activity1 schreibe bzw dort definiere:
    SharedPreferences mPrefs;
    /**
    * get if this is the first run
    *
    * @return returns true, if this is the first run
    */
    public boolean getFirstRun() {
    return mPrefs.getBoolean("firstRun", true);
    }

    /**
    * store the first run
    */
    public void setRunned() {
    SharedPreferences.Editor edit = mPrefs.edit();
    edit.putBoolean("firstRun", false);
    edit.commit();
    }



    /**
    * setting up preferences storage
    */
    public void firstRunPreferences() {
    Context mContext = this.getApplicationContext();
    mPrefs = mContext.getSharedPreferences("myAppPrefs", 0);
    }



    in Activity1 schreib ich in der onCreate()

    firstRunPreferences();

    if(getFirstRun()){
    Intent intent = new Intent(Activity1.this, Activity2.class);
    startActivity(intent);
    setRunned(); }

    else{// wenn nicht mehr 1. Lauf
    secret = new Secret(this);
    collected=secret.passwortAuslesen();
    }
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Verständnisprobleme: APK Expansion Files für eine APK > 100MB Android App Entwicklung 10.09.2017
[OFFEN] App schließt nach Öffnen sofort Android App Entwicklung 04.09.2017
[ERLEDIGT] Bitmap von Activity an Activity übergben Android App Entwicklung 03.09.2017
[OFFEN] Activity als Dialog - RecyclerView funktioniert nicht mehr Android App Entwicklung 14.08.2017
[ERLEDIGT] Android Studio - EditText (Passwort) mit Button einfügen? Android App Entwicklung 22.07.2017
[OFFEN] Problem mit meiner Login App Android App Entwicklung 10.06.2017
[GELÖST] Nach AS Update Fehler Error running app: Default Activity not found Android App Entwicklung 16.05.2017
[GELÖST] Übergabe an zweite Activity Android App Entwicklung 11.05.2017
[ERLEDIGT] Problem beim Starten einer neuen Activity Android App Entwicklung 21.03.2017
Display-Breite zum App-Start auslesen Android App Entwicklung 11.03.2017
Du betrachtest das Thema "Activity schließt sich bei Passwort FILE auslesen" im Forum "Android App Entwicklung",