Beiträge von Merlinus98

    Hi,
    ich möchte gerne eine SQLite Datenbank, die in meiner App erstellt wird exportieren und wieder importieren können. Ziel der ganzen Sache ist es, dass der Nutzer (wenn er z.B. ein neues Handy kauft) die db Datei irgendwo anders speichern kann und dann später wieder auf sein neues Handy ziehen kann und diese dann wieder importiert wird. Ich dachte dabei daran, dass man die Datei in einen bestimmten Ordner zieht.


    Meine bisherigen Recherchen ergaben aber noch nichts wirklich brauchbares. Das erste was ich gefunden habe war die "SQLiteImporterExporter" Library. Das Problem was ich damit aber habe ist, dass ich den Dateipfad über getExternalStorageDirectory () bekommen würde. Diese Methode ist allerdings ab API 29 nicht mehr verwendbar.
    Die Alternative für diesen Code wäre über den Context zu gehen.


    Die größte Frage ist allerdings, ob es überhaupt das ist, was ich suche. Weil wenn ich über den Context.getExternalFilesDir() gehe, kann ich dann als Nutzer der App überhaupt auf die Datei zugreifen?


    Ich müsste halt irgendwie einen Ordner auf dem Handy erstellen, in welchen die Datei gespeichert wird. Bzw. in welche man die Datei packen könnte um sie dann wieder zu importieren und dann auf diese Datenbank wieder zugreifen zu können. Oder aber so, dass man sich die Datei per Mail schicken kann und sie beim Importieren aus den Dateien des Handys auswählen kann um sie zu importieren.


    Hat jemand eine Idee, wie man das umsetzen könnte?
    Vielen Dank für jegliche Hilfe, Merlinus

    Also ich habe jetzt den Google Play Support angeschrieben. Hatte dann doch nach längerem suchen noch ein Tutorial gefunden, wo dieser Bug behandelt wurde und das ist wohl etwas was nur der Support regelt kann. Die müssen den "Fingerabdruck" der in dem Bug oben gefordert ist zurücksetzen. Ich melde mich, wenn ich Erfolg hatte falls mal jemand denselben Bug haben sollte.

    danke für die Antwort. Aber leider kommt immernoch die Fehlermeldung im Terminal, dass er den Befehl "keytool" nicht erkennt. Habe es jetzt mal mit einem key von einem Kollegen signiert (das eigentlich Problem entsteht nämlich beim hochladen in den Google PlayStore) mit dem schonmal etwas hochgeladen wurde. Beim Google PlayStore kommt trozdem immernoch die Fehlermeldung




    falls man das nicht richtig lesen kann, da steht:
    Dein Android App Bundle ist mit dem falschen Schlüssel signiert. Bitte wiederhole den Vorgang und signiere das App Bundle mit dem richtigen Schlüssel: "SHA1: 64:81:A2:1A:E9:06:6F:27:97:48:90:F0:24:D6:44:D8:20:5B:2B:BC"

    Hi,
    wenn ich einen signierten Uploadschlüssel erstellen will, wird mir immer folgendes angezeigt:


    Der JKS-Keystore verwendet ein proprietäres Format. Es wird empfohlen, auf PKCS12 zu migrieren, das ein Industriestandardformat mit "keytool -importkeystore -srckeystore C:\Users\Admin\Desktop\Nemophila_v.1.0\NemophilaKey1.jks -destkeystore C:\Users\Admin\Desktop\Nemophila_v.1.0\NemophilaKey1.jks -deststoretype pkcs12" ist.


    Ich hatte auch schonmal nach Lösungen gesucht und dann auf zwei Seiten einen Command im Terminal gefunden. Dieser lautete:


    keytool -genkey -alias testalias -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore E:\androidstudio\androidstudio_work\CommonDemo\app\test.keystore -storepass 123456


    Ich habe alles auf meine Daten angepasst etc. aber mein Terminal sagt mir nur: "der Befehl "keytool" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
    Weiß jemand, wie ich dieses Problem lösen kann? Vielleicht hatte ja schonmal jemand dasselbe Problem. Mir sind da jetzt echt die Ideen ausgegangen.


    Vielen Dank für jede Hilfe, Merlin

    Hallo,
    ich möchte programmatisch auf ein TextView in einem custom AlertDialog zugreifen und den Text ändern.
    Allerdings muss ja normalerweise das Layout aktiv sein, in welchem sich das Object, auf das ich zugreifen möchte, befindet. Da das TextView ja kein direktes Object des AlertDialogs ist, kann ich ja auch nicht einfach darauf zufgreifen, wie ich es mit den positive/negative Buttons machen könnte.
    Und wenn ich es einfach hinter das alertDialog.show(); schreibe, findet er es leider auch nicht.
    Falls jemand eine Idee hat, würde ich mich über eine Antwort freuen.
    Danke, merlinus

    Moin,
    ich hätte gerne, dass wenn ich etwas in meinen EditText schreibe, der erste Buchstabe groß geschrieben wird. Außerdem möchte ich keine Autokorrektur in meiner Tastatur haben.
    Ich habe es bisher so gehandhabt, dass ich den EditText als VisiblePasswort verwendet habe.
    ( im xml file mit android:inputType="textVisiblePassword")
    mit android:inputType="textNoSuggestions" funktioniert es leider auch nicht


    Dann habe ich eingefügt, dass der erste Buchstabe groß geschrieben wird mit:


    EditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES)


    Das funktioniert auch einwandfrei, nur habe ich jetzt wieder meine Autokorrektur da. Was ja auch irgendwie Sinn macht, da man bei einem Passwort ja normalerweise nicht will, dass irgendwie Cap aktiviert ist.
    Hat einer eine Idee, wie ich die Autokorrektur sonst noch wegbekommen kann?
    Danke im Voraus, Merlinus

    Also bei dem WebView habe ich herrausgefunden woran es lag. An der Seite wurde etwas verändert und deshalb war sie nicht mehr sicher (http statt https) und dadurch hat sich Android irgendwie geweigert das anzuzeigen.


    Bei dem AlertDialog lag es wirklich daran, dass die Buttons/Schrift plötzlich weiß waren wie der Hintergrund. Kann mir allerdings nicht erklären warum das passiert ist.

    Hallo,
    ich habe das Problem, dass die Website in meinem WebView nicht mehr angezeigt wird. Es erscheint nur ein weises Feld. Es hatte immer funktioniert und ich habe nichts am Code geändert.
    Im Logcat kommt folgende Fehlermeldung:


    2020-08-24 21:15:23.942 16777-16875/com.example.nemophila E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
    2020-08-24 21:15:23.942 16777-16875/com.example.nemophila E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef


    hier der Auszug aus dem Code:

    Code
    webView = findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setWebViewClient(new WebViewClient());
    webView.loadUrl(fullLink);



    Ein ähnliches Problem habe ich mit den Buttons bei einem AlertDialog. Hier werden der positive- und der negativeButton auch nicht mehr angezeigt. Sie sind allerdings wohl noch da, da man sie anklicken kann, wenn man weiß, wo sie sich befinden. Auch hier hat es funktioniert und dann plötzlich nicht mehr, obwohl der Code derselbe ist.


    Hier der Code zum AlertDialog:

    Hat jemand eine Idee, woran die Probleme liegen könnten? Vielen Dank im Vorraus, Merlinus

    Moin,
    ich möchte, dass sich ein EditText in meiner App automatisch anwählt und die Tastatur öffnet, ohne das man erst auf den EditText klicken muss. Weiß jemand, wie man das lösen könnte?
    Mit EditText.requestFocus() habe ich es schon versucht. Damit hat es aber leider nicht funktioniert.
    Vielen Dank schonmal, merlinus

    Moin,
    ich habe ein WebView, dass nicht die gesamte Fläche meines Bildschirmes bedeckt und möchte den Inhalt auf die Größe des WebViews skalieren.
    Das Problem, dass ich habe, ist dass der Inhalt meines WebViews mit


    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);


    so skaliert, als wenn das View den gesamten Bildschirm einnehmen würde.


    Hat jemand eine Idee, wie man das Problem lösen könnte?
    Danke im Vorraus, Merlinus

    Ok, was ich verstanden habe ist, dass ich immer mit c.getInt(c.getColumnIndex("...")); den Inhalt auslesen muss.
    Oder halt mit c.getString(c.getColumnIndex("..."));


    Das mit den ContentValues ist ein Problem. Kann man das irgendwie machen, dass der das in einer Schleife immer überschreibt?


    Es ist nämlich so, dass ich aus meiner Datenbank alle Vokabeln auslesen möchte und bei jeder einzelnen davon (wo der Inhalt der Zelle >0 ist) -1 rechnen möchte und den neuen Wert wieder updaten möchte( um halt aus z.B. 5 Tagen bis die Vokabel wieder kommt, 4 Tage zu machen).
    Da der Nutzer selbst Vokabeln einfügt, weiß ich auch nicht wie lang meine Datenbank ist (bzw. schon mit .getCount() aber ich kann ja nicht einfach hunderte ContentValues erstellen)


    vorher (als ich noch mit SharedPreferences die Zahlen in einer Int-List gespeichert hatte) war der Code einfach


    Code
    for(int i, i<daysRemain.length,i++)
    daysRemain[i]--;

    Das Prinzip möchte ich halt mit den Werten in der Spalte daysRemain aus meiner Tabelle machen.
    und dann halt die neuen Werte auch wieder updaten.

    Das ist der neue Code

    Habe deinen Code versucht. Jetzt kommt zwar nicht mehr der CursorOutOfBoundsException Error, aber es funktioniert trozdem nicht und das Logcat gibt mir folgendes aus:


    2020-04-06 20:19:31.343 1750-4301/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 12461258 , only wrote 12461172


    2020-04-06 20:19:31.427 1789-1997/? D/AF::Track: interceptBuffer: took 600us to intercept 0 tracks
    2020-04-06 20:19:31.630 1750-4301/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 12473801 , only wrote 12473731


    2020-04-06 20:19:31.646 1750-4301/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 12474439 , only wrote 12474392


    2020-04-06 20:19:31.788 1750-4301/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 12480683 , only wrote 12480341


    Zumindest kommt das, wenn ich auf den entsprechenden Button klicke. Keine Ahnung was der mit audio zu tun haben soll...


    Ps: mit meinem Code funktioniert es leider auch nicht. Da kommt auch der CursorOutOfBoundsException Error :(

    Hallo, danke schonmal.
    Hier ist der Code als Text.


    Warum ist denn while(c!=0) eine endlos schleife? Hatte das in nem Tutorial gesehen und da hat es funktioniert (kann aber sein, dass das schon älter war)
    Ich möchte halt, dass er die schleife solange ausführt, bis er das für jede Spalte gemacht hat. Kann ich denn sonst irgendwie checken, wann der Cursor an der letzten Position ist?
    Würde das mit einer Kombination aus .getPosition() und .getCount vielleicht gehen?


    Also so in der Art


    Hallo,


    ich habe diesen Code geschrieben und bekomme einen android.database.CursorOutOfBoundsException Error, weiß aber nicht woran das liegen könnte.
    Ich möchte für jeden Wert in der db den Wert von "daysRemain" auslesen, bearbeiten und updaten. Und das halt solange, bis alle Einträge bearbeitet wurden (also der Cursor null ist)


    im LogCat wird folgendes ausgegebenIn der db befinden sich auch 4 Einträge die bearbeitet werden müssen.
    Hat jemand eine Vermutung, wo der Fehler liegen könnte?
    Vielen Dank im voraus, Merlinus

    Vielen Dank erstmal. Jetzt funktioniert es. Allerdings habe ich deine Ausführung leider nicht genau verstanden.
    Wenn ich das mit
    int idIndex = cursor.getColumIndex("_id")
    mache, liest er mir als Zahl aus, in welcher Spalte ich mich im Moment befinde, also an der dritten Stelle (also wie du gesagt hast 2).
    Und wenn ich das auf deine, die funktionierende Weise mache, lese ich die Zahl aus die in der dritten Spalte steht, welche ja meine ID ist, also in meinem Fall die 1. (hoffe ich hab das verständlich ausgedrückt)


    Ist das so richtig? Dann habe ich es grade beim ausformulieren verstanden xD


    PS: Nochmal vielen Dank! Ich finde es echt super, wie du hier jedem im Forum hilfst. Ist super, dass es Leute wie dich gibt!

    Moin,
    ich möchte gerne ein Feld in meiner SQLite Tabelle updaten. Im Prinzip funktioniert auch alles.



    Doch wenn ich es so mache wie im Bild (mit dem int idIndex) funktioniert es nicht. Wenn ich in der .update Methode allerdings statt idIndex eine Zahl eingebe, funktioniert es wieder. Auch die Ausgabe im Logcat vom idIndex funktioniert.



    Vielleicht weiß ja jemand, wo das Problem liegt. Ich bin über jede Hilfe dankbar! :)
    Vielen Dank schon mal, Merlinus