File Picker in PreferenceFragment einbinden

  • Hallo Zusammen,


    ich möchte diesen Filepicker in meine App einbinden.
    https://github.com/Angads25/an…icker/wiki/Implementation


    Das klappt soweit ganz gut, jedoch kann ich die Eingabe derzeit nicht in einer
    Variable ablegen, da ich das Ereignis "public boolean onPreferenceChange(Preference preference, Object o)"
    nicht angelegt bekomme.


    Die Klasse "public class SettingsActivity extends PreferenceActivity" zeigt mir keine entsprechende Override Funktion an,
    wenn ich "Generate / Override Methode" erzeugen will.


    Ebenso in "public static class GeneralPreferenceFragment extends PreferenceFragment {" zeigt mir auch nicht
    die entsprechende Funktion.


    Ich verwende die Basis SettingActivity, welche mir von Android Studio vorgeschlagen wurde, bei dem erstellen einer neuen Activity.


    Gibt es ein Beispiel, da mir der Teil "Implementation" nicht weiter geholfen hat.


    Auch scheint man mit diesem Tool nicht alle SD Card auswählen (bei mir jedenfalls) zu können. Auf dem Handy (reale Hardware),
    kann ich nicht die externe SD Karte auswählen (eingesteckte Karte).


    Viele Grüße
    R.

  • Hallo
    zeige mal etwas von deinem Quellcode so kann ich dir da nicht ganz folgen.
    Mit Fragmenten sollte das nichts zu tun haben.
    Zum Thema SdKarte hast du auch die Permission gesetzt im Manifest und in derApp zu Laufzeit?


    Zitat von https://github.com/Angads25/android-filepicker/wiki/Implementation


    FilePickerDialog dialog = new FilePickerDialog(MainActivity.this,properties); dialog.setTitle("Select a File");

    Welche Klasse gibst du hier an ? Meiner meinung nach müstest du hier die klasse des Fragmentes in dem du dich befindest angeben.

  • Hallo,


    hier meine XML-Definition:



    und hier die SettingsActivity.Java


    Bei einer Auswahl eines Verzeichnis wird der Wert nicht in den Einstellungen angezeigt.
    Z.B. Ich wähle ein Verzeichnis aus und beende die Einstellungen.
    Wenn ich dann wieder in die Einstellungen gehe, sind die Ursprungseinstellungen vorhanden.


    Laut der Wiki des Moduls soll man die folgende Methode überschreiben:

    Code
    @Override
        public boolean onPreferenceChange(Preference preference, Object o) {
            if(preference.getKey().equals("your_preference_key")) {   
                ...
            }
            return false;
        }

    Nur weiss ich nicht, wo ich diese Methode einbinden soll.


    Und hier noch der Teil der Berechtigungen:

    Code
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.STORAGE" />
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE_EXTERNAL_STORAGE" />


    Viele Grüße
    R.

  • Hallo
    etwas überschreiben kannst du nur wenn du auch von der Klasse erbst das machst du nicht.
    in den Tool gibt es die Klassen


    Zitat von https://github.com/Angads25/android-filepicker/wiki

    zum Thema Perimission ab API 23, den es reicht nicht mehr nur sie im Manifest zu setzen.


    https://developer.android.com/…ng/permissions/requesting


    Ps. Ganz nebenbei steht auch das du die Klasse implementieren sollst.


    Implement Preference.OnPreferenceChangeListener to class requiring selected values and Override onPreferenceChange(Preference, Object) method. Check for preference key using Preference reference.


    Wieso machst du das in einer PreferenceActivity und nicht in einer normalen?

  • Hallo,


    ich habe mir die ganze Sache nochmals genau durchgelesen und auch das Beispiel (es gibt dann doch eins im Quellcode) angeschaut.
    Hierbei habe ich dann meinen Fehler gefunden.


    Hier die geänderten Zeilen. Hier die Klassendefinition um "implements Preference.OnPreferenceChangeListener" erweitert.

    Code
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        public static class DataSyncPreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener {


    und dann die entsprechende Routine einfügen (Ausschnitt einer Eingabe)


    Danach hat die ganze Sache korrekt gearbeitet.


    Derzeit kämpfe ich mit dem Setzen der Dialogeigenschaften, was eigentlich so gehen sollte.

    Code
    FilePickerPreference videoDialog=(FilePickerPreference)findPreference("pref_videoPath_key");
                final DialogProperties videoproperties=new DialogProperties();
                videoproperties.selection_mode = DialogConfigs.SINGLE_MODE;
                videoproperties.selection_type=DialogConfigs.DIR_SELECT;
                videoproperties.offset=new File("/sdcard");
                videoproperties.root=new File("/sdcard");
                videoproperties.error_dir=new File("/mnt");
                videoproperties.extensions =null;
    //            videoDialog.setProperties(videoproperties);
                videoDialog.setOnPreferenceChangeListener(this);

    Nur crashed das Programm, wenn ich versuche die ".setProperties(videoproperties) aufzurufen.



    So mache ich die Interne Abfrage vor Zugriffe auf "SD Card" zusätzlich.

    Code
    if (checkPermissionWriteExternalStorage() ) {
    }



    Viele Grüße
    R.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!