Beiträge von Snake3000

    Hi Xcreen,


    danke das war der Schubs in die richtige Richtung. Habe es umgebastelt und nun funzt es...


    Die Developer Artikel empfinde ich manchmal recht schwierig verständlich als Anfänger.


    Aber nun habe ich es so gelöst:
    Wie Du sagtest habe ich den Code zur Datei Erstellung in eine Funktion gelegt.
    Im onCreate habe ich sie, nun als Aufruf, drin gelassen. Damit habe ich zunächst nichts geändert, denn mit Permission geht es ja.
    Zusätzlich prüfe ich, wie Du es sagtest, das Vorhandensein der Permission am Ende vor dem Speichern nochmal ab. Wenn sie da ist rufe ich die Funktion nochmals auf.


    Klappt perfekt.


    Ich danke Dir recht herzlich. (Und Jogi, natürlich auch :) )


    Jetzt habe ich nur noch das kleine Schönheitsproblemchen mit dem AlertDialog den ich vor der Permission Abfrage aufrufe. Da muss ich noch etwas dran knobeln....

    Hi,


    die developer Seiten habe ich durchstöbert, auch so einiges anderes im Netz gelesen. Das Problem ist auch mit einem anderen Hindernis verbunden das aufgefallen ist.
    Ich wollte ebenfalls vor der Permission Abfrage des Systems ein Dialog anzeigen das dem Benutzer weitere Informationen über die Berechtigungen gibt. Dazu habe ich ein AlertDialog genutzt. Und siehe da der AlertDialog erscheint und wird sofort von der Permission Abfrage des Systems überdeckt. (Stichwort: Modale Dialoge)… aber das nur am Rande. Bleiben wir erstmal bei einem Problem...


    Die Struktur meines Programmes sieht so aus:


    Imports etc...


    public class MainActivity extends AppCompatActivity implements View.OnClickListener
    //Variablen/Objekt Deklarationen
    Button butmor;...


    protected void onCreate(Bundle savedInstanceState) etc.
    //Permission prüfen
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
    Nix wird gemacht
    else
    AlertDialog mit Text für Userinformationen
    //Permisson anfragen
    requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_EXTERNAL_STORAGE_RESULT);
    end if


    //Objekte mit Layout verbinden
    butmor = (Button) findViewById(R.id.butmor);...


    //ein paar Daten Arrays und Variablen initialisieren
    ...


    //Datendatei lesen oder als leerdatei erstellen
    if !datei.exists
    datei erstellen
    else
    datei lesen
    end if


    //Buttons mit onclickListener verbinden
    butmor.setOnClickListener(this);...


    //einige Attribute setzen
    butmor.setBackgroundColor(0xFFFF4444);...


    //Listview erstellen/befüllen/anzeigen
    Adaper etc.

    //Andere Datendatei für Programmeinstellungen lesen oder erstellen
    if !datei.exists
    datei erstellen
    else
    datei lesen
    end if
    ----------------Ende onCreate


    //onCreate für Menue
    public boolean onCreateOptionsMenu(Menu menu) etc.

    //ein paar subroutinen für die Programmlogik
    public void …


    //Reaktionen auf Menueclicks
    public boolean onOptionsItemSelected(MenuItem item)
    switch case usw. für zwei activitys


    //Reaktionen auf Objektclicks
    public void onClick(View view)
    switch case usw. bei Bedienung der Eingabefelder


    ein Case zum speichern der eingegeben Daten
    ----------------Ende der Show

    Ich frage also zuerst die bestehenden Permissions ab, mache in dem If Zweig bei bestehender Permission aber nichts, da die folgenden Sachen ja dann eh durchlaufen werden. Nur im Else Zweig Frage ich die Permission an. (mit einem davorgesetzten AlertDialog, der aber sogleich von dem Systemfenster überlagert wird.


    Mein Problem ist nun, dass die beiden Dateioperationen, beim allerersten Mal halt ohne Permission abgearbeitet werden. Mit dem Ergebnis das diese Dateien nicht erstellt werden.


    Starte ich das Programm dann erneut, funzt natürlich alles Reibungslos.


    Ich hoffe das ich meine Struktur verständlich dargelegt habe, und ihr damit was anfangen könnt... würde mich über eine gute Idee sehr freuen.

    Hallo Gemeinde,


    ich habe eine kleine App geschrieben, die eigentlich bereits funktioniert. Nun stosse ich in der Testphase auf ein Problem das vorher nicht auffällig war.
    Es geht um den ersten Aufruf nach der Installation. Also im Android Studio Emulator "Wipe Data" und "Cold Boot" durchgeführt bzw. in den Testgeräten die App deinstalliert und das erstellte Datenverzeichnis gelöscht.


    Nach der Installation der Debug App und Start derselben passiert folgendes:
    Zuallererst wird die Permission WRITE_EXTERNAL_STORAGE abgefragt. Fenster erscheint und ich erlaube den Zugriff. Das Programm läuft ohne Absturz weiter, jedoch kann der Programmteil im onCreate, welcher eine Datendatei erstellen soll, diese Datei noch nicht erstellen. Android wartet ja nicht auf die Erlaubnis des Benutzers, sondern arbeitet onCreate ja durch, und zwar in dem Moment eben noch ohne die erteilte Permission.
    Das heisst im weiteren Verlaufe meines Programms wird diese Datei nicht gefunden und kann somit nicht mit neuen Daten erweitert werden . Das ist schlecht! :cursing:
    Beim erneuten Starten läuft alles einwandfrei. Die Permission ist dann ja da. :saint:


    Meine Denkblokade ist.... Wo lege ich das erstmalige Erstellen denn hin, wenn nicht im onCreate Segment???


    Irgendwas an der Android Systematik habe ich da noch nicht so ganz verstanden... Wer weiss da Rat?

    Hallo Rapier,


    herzlich willkommen hier.
    Ich selber bin blutiger Anfänger in Sachen Android Apps und stand auch vor nunmehr drei Monaten vor der gleichen Situation. ?(
    Android Studio heruntergeladen und erste Gehversuche mit Hilfe von Tante Google gemacht.


    Bei genau Deinem Problem kann ich leider nicht helfen. Da ich unter Windows unterwegs bin und mich für JAVA entschieden habe.


    Ich ersehe das Du KOTLIN gewählt hast. Ist das Zufall oder Absicht?


    Egal, als Tipp, so von Anfänger zu Anfänger... durchhalten und nicht verzweifeln. Du wirst noch Fehlermeldungen, rote Wellenlinien und rote Farbe sehen bis der Arzt kommt. Versprochen.... ^^


    Falls Du nicht auf KOTLIN festgefahren bist.... schau mal hier rein:
    http://www.programmierenlernen…p-programmieren-tutorial/
    damit habe ich meine ersten Schritte gemacht.


    Auch wenn ich Dir nicht direkt helfen konnte, wünsche ich Dir viel Spass und Freude bei der Entwicklung..... auch die Verspreche ich Dir. :saint:

    Hallo again,


    ich habe es in den letzten Tagen mal so an einigen Rechnern im Bekanntenkreis ausprobiert. Funktioniert mit dem Samsung überall einwandfrei. Das Tablett habe ich mal aussenvor gelassen. Ist möglicherweise wie Jogi vermutet eine Treibergeschichte, in Verbindung mit dem aufgesetzten "Möchtegernbetriebssystem". Chinesischer Mist halt.


    Mich störte ja noch beim Samsung das notwendige aus- und einstöpseln, sprich Neuverbinden, mit dem PC. Allerdings war das ein subjektiver Eindruck in der Hitze des Gefechtes... deinstallieren, Dateien löschen, apk neu überspielen, installieren, Daten eintippen, testen immer hin und her mit zwei Geräten und dem Emulator....
    Aber im Grunde entspricht es ja dem normalen Nutzungsablauf.
    Ich gebe auf dem Handy ja wann und wo ich will die Daten mobil ein und verbinde es ja erst später irgendwann zuhause mit meiner Windows Anwendung um die Daten auszulesen. Ist also normal und vollkommen in Ordnung so.


    Also nochmals meinen vielsten Dank für die Unterstützung hier, und auch in allen anderen Themen die mir auch schon weitergeholfen haben.

    Hallo nochmal,
    wie versprochen meine Rückmeldung...


    Also ich habe es nun mit (Environment.getExternalStorageDirectory() ,"MeinVerzeichnis") umgearbeitet, die Dateien liegen nun in
    /storage/emulated/0/MeinVerzeichnis.


    Gefällt mir wesentlich besser. Funktional ist es nun auch besser, aber trotzdem noch seltsam.


    Bei Beiden Geräten läuft die App ohne Fehler, Verzeichnis und Dateien werden ordnungsgemäss erstellt und sind auf den Geräten sofort sichtbar und funktional.
    Aber:
    Samsung Android 7.0: Windows findet Verzeichnis und Dateien nur nach Trennung und erneuter Verbindung des USB Kabels
    Tablet Android 6.0.1: Windows findet Verzeichnis und Dateien nur nach einem Hardware Reset. (Das meint kein Rücksetzen auf Werkseinstellungen, sondern nur ein Coldboot)


    Ist beides noch nicht so perfekt wie man es sich wünscht. Aber wesentlich besser als gestern. :)


    Erneut vielen Dank für die Unterstützung!!! Wenn noch weitere Ideen da sind...….. immer her damit... :)

    Hi Jogi,


    super, nun kommt Licht ins Dunkel. Der Nebel weicht zumindest ein wenig. :)


    Also auf dem Tablett gibt es ausser Tethering ein/aus nix in Richtung USB.


    Ich bin zum erstellen der Datei so vorgegangen: (Zuvor habe ich einen Dateinamen gebildet und in den String sedateiname abgelegt)


    1. File[] sedirs = this.getExternalMediaDirs();
    um die Pfade zu bekommen
    2. File sedateiakt=new File(sedirs[0] + "/" + sedateiname);
    Objekt instanziieren mit Pfad und Dateiname
    3. boolean success4 = sedateiakt.createNewFile();
    zum erstellen der Datei


    Das erstellen des Directories habe ich mir geschenkt. (In dem Zusammenhang, nimmt man dann .mkdir oder .mkdirs ?)


    Ich werde das mal nach Deiner Lösung umbasteln und mich melden.


    Auf jeden Fall schonmal vielen Dank!!!

    Moin Jogi,


    zuerstmal danke für dein Interesse.


    Also da fängt die Krux ja an... auf beiden Geräten liegen, laut Total Commander, die Dateien im gleichen Verzeichnis:
    /storage/emulated/0/Android/media/com.meineapp.mbd/


    Windows zeigt mir bei dem Tablett:
    Dieser PC\TPCY-TXE7DW\Interner Speicher\Android\media --------------------- Verzeichnis ist leer
    und bei dem Samsung:
    Dieser PC\Galaxy J5\Phone\Android\media\com.meineapp.mbd --------------- und meine Dateien


    Auf beiden Geräten findet Windows auch die üeblichen anderen Verzeichnisse DCIM, Ringtones, Download, etc...


    Eine SD-Karte ist nicht vorhanden.


    Sagt uns das schon was?

    Hallo Gemeinde,


    habe mich gerade frisch angemeldet, da ich auch nach intensivem suchen im Web keine Lösung für mein Problemchen finde.


    Die Situation ist folgende:
    Meine Java App erstellt Dateien zur Speicherung von Daten.
    Meine VB.net Anwendung soll diese lesen.


    Ich habe das soweit hinbekommen dass es funktioniert, mit meinem Samsung Telefon J5 (Android 7.0). Der Lösungsansatz ist Speicherung im getExternalMediaDirs()
    Eintrag 0 also "/storage/emulated/0/Android/media/com.meineapp.mbd". Die Dateien (simple ASCII Textdateien) werden erstellt und sind auf dem Telefon im Ordner Media auch zu finden. Ebenfalls findet der Windows10 Dateimanager diese auch und selbst meine Windows Anwendung kann sie lesen. Grosse Freude.


    Jetzt das Problem:
    Teste ich es mit meinem Jay-Tech Tablet PC TXE70W (ein billig Dingen) mit Android 6.0.1 läuft die App ebenfalls einwandfrei, jedoch findet der Windows Dateimanager zwar das Gerät mit allen Verzeichnissen, ausser meinem Verzeichnis und meinen Dateien. Auf dem Gerät werden diese aber erstellt und sind auf dem Gerät sichtbar.


    In beiden Fällen sind die Androidgeräte nicht im Entwicklermodus. Ich habe die Debug-App per USB kopiert und auf den Geräten installiert. Es gibt keine Laufzeitfehler oder Abstürze, die App läuft einwandfrei. Es gibt keine Berechtigungsprobleme, die Dateien sind ja auf den Geräten da.
    Ziel API ist 27, Min API 23.


    Die Milionenfrage ist also warum findet Windows die Dateien auf dem Samsung, aber nicht auf dem Tablet?
    Vielleicht habt Ihr ja auch ein paar andere Tipps zum Speicherort. So ganz glücklich bin ich mit Media eh nicht.


    Ich freue mich über jeden Ratschlag und hoffe mit eurer Hilfe mein "Erstlingswerk" :) ans funzen zu bringen.