German Access SD , Indent Osmand

nero

Member
Licensed User
Hallo zusammen

Habe 2 Fragen

Zu meiner Anwendung:Es ist ein mutifunktionelles Memo aus welchem ich Tel, Photos schiesse Termin verwalte etc. etc. und alle erdenklichen Daten verwalte zur Zeit über 1200 Files jpg,pdf,mov,mp3,gpx,eml,txt,adr etc..
Alles in einem Verzeichniss auf der SD-Karte saubere Verwaltung meiner Daten nach meinen Vorstellungen.
Damit bin ich in der Lage durch SD-Karten tauschen alle meine wichtigen Daten einfach zu sichern resp.
in in einem anderen Gerät zu verwenden was auch wunderbar klappt.
In den Kontakten habe ich nur noch die Adressen welche ich für Whatsapp/Line benötige.
In der Zukunft möchte ich das ganze in MySql oder SQLlite oder ähnliches verpacken.

Frage 1:
Für meine Anwendung benötige ich Berechtigung in 1 Verzeichniss Unterordnern und Files anzulegen.
Auch ohne Root resp. XInternalSD ?
Kann das Problem mit der Berechtigung auf meine SD Karte zumindest in 1 eigenes Verzeichniss zu schreiben
jetzt gelöst werden ?

Frage 2
Wenn mir jemand via WhatsApp seine Pos sendet erhalte ich die Möglichkeit diese
in meinem Navi (Sygic oder Osmand ) anzuzeigen (auch ohne Internet) .... also müsste es eine Möglichkeit mit Intent geben !
Hat jemand eine Idee wie ich das machen könnte ?
Damit bin ich in der Lage meine eigenen Favoriten zu verwalten ....
Für diese Problem habe ich eine etwas aufwendige Lösung gefunden zumidest in Osmand:
Umweg Anzeige/Speichern von Favoriten halbautomatisch :):
'gpx File erstellen:
'über die Zwischenablage hole ich mir die Koordinaten von Osmand
'und erhalte diese im Format:
'12.32767 grad N 99.9766 grad E

File Formatierung:
zb. Hans_Schlau.gpx

'<wpt lat="12.32767" lon="99.9766">
'<name>Hans_Schlau</name>
'<type>Adressen</type>
'</wpt>

jetzt kann ich das file mit endung .gpx Aufrufen

Dim Intent1 As Intent
Intent1.Initialize(Intent1.ACTION_VIEW, "file://"& name)
Intent1.SetType("application/gpx")
StartActivity(Intent1)

Muss jetzt aber immer die Übernahme des Favoriten in Osmand bestätigen ...
nicht so saubere lösung.

Meine Geräte:
Samsung S4
CM12.1 Android 5.1.1
Afwall

Samsung S5
LinegaOS 14.1 Android 7.1.2
No root Firewall
Magisk 19.3
Xposed
XInternalSD

Für jede Idee wäre ich sehr dankbar.
Gruss Daniel
 
Last edited:

DonManfred

Expert
Licensed User
Auch ohne Root resp. XInternalSD ?
wer oder was ist XInternalSD?
Kann das Problem mit der Berechtigung auf meine SD Karte zumindest in 1 eigenes Verzeichniss zu schreiben
jetzt gelöst werden ?
Wie meinst Du das genau?
Wenn mir jemand via WhatsApp seine Pos sendet erhalte ich die Möglichkeit diese
in meinem Navi (Sygic oder Osmand ) anzuzeigen (auch ohne Internet) .... also müsste es eine Möglichkeit mit Intent geben !
Dazu musst Du wohl die Dokumentation von deiner Navi-Software einsehen und gucken, ob es da eine Intent-Möglichkeit gibt.

Evtl. geht´s ja hiermit; probier mal.

B4X:
    Dim m As Map = btn.Tag
    Log(m)
    Dim mapIntent As Intent
    Dim geouri As String

    Dim adresse As String = m.Get("AdresseKD")

    geouri = "google.navigation:q=" & adresse
    mapIntent.Initialize(mapIntent.ACTION_VIEW,geouri)
    'mapIntent.SetComponent("googlemaps")
    mapIntent.WrapAsIntentChooser("Bitte App auswählen")
    StartActivity(mapIntent)
AdresseKD is ein String in der Map, welches die Adresse benutzt um mittels Googlenavigation (man muss google einstellen) navigiert.
Evtl. taucht deine navigation auch auf. Einen Versuch ist´s Wert.

Dim Intent1 As Intent
Intent1.Initialize(Intent1.ACTION_VIEW, "file://"& name)
Intent1.SetType("application/gpx")
StartActivity(Intent1)
Bitte verwende [CODE]code hier...[/CODE] tags wenn Du Code postest.

Unter hohen Androidversionen wird das NICHT funktionieren weil file uris nicht mehr erlaubt sind. Du wirst Dich auf FileProvider einstellen müssen; also verwendung...

Wichtiger Tutorial
android.jar / targetSdkVersion / minSdkVersion
 

nero

Member
Licensed User
wer oder was ist XInternalSD?

Wie meinst Du das genau?
-XInternalSD ist ein Modul in xposed framework das mir ermöglicht r/w Berechtigung für meine Anwendung zu errlangen.
Die SD-Karte kann damit beschrieben werden genau wie unter 5.1.1 auch.
Benutze ich ab Android 6

Dazu musst Du wohl die Dokumentation von deiner Navi-Software einsehen und gucken, ob es da eine Intent-Möglichkeit gibt.
Gibt es keine Möglichkeit herauszufinden wie das WhatsApp macht ... da geht das einwandfrei.

Evtl. geht´s ja hiermit; probier mal.

B4X:
    Dim m As Map = btn.Tag
    Log(m)
    Dim mapIntent As Intent
    Dim geouri As String

    Dim adresse As String = m.Get("AdresseKD")

    geouri = "google.navigation:q=" & adresse
    mapIntent.Initialize(mapIntent.ACTION_VIEW,geouri)
    'mapIntent.SetComponent("googlemaps")
    mapIntent.WrapAsIntentChooser("Bitte App auswählen")
    StartActivity(mapIntent)
AdresseKD is ein String in der Map, welches die Adresse benutzt um mittels Googlenavigation (man muss google einstellen) navigiert.
Evtl. taucht deine navigation auch auf. Einen Versuch ist´s Wert.
werde ich ausprobiern. Besten Dank !!!

Bitte verwende [CODE]code hier...[/CODE] tags wenn Du Code postest.
Ok habe ich verstanden Source sollte nur zwischen Code stehen .... Danke

Unter hohen Androidversionen wird das NICHT funktionieren weil file uris nicht mehr erlaubt sind. Du wirst Dich auf FileProvider einstellen müssen; also verwendung...

Ab Android 6 muss xposed framework verwendet werden resp. ist die einzige Möglichkeit die mir bekannt ist.

Wichtiger Tutorial
android.jar / targetSdkVersion / minSdkVersion
 

nero

Member
Licensed User
Ich glaubte irgenwann mal etwas von Dir gelesen zu haben
das die Berchtigung in einen Ordner der eigenen App zulässt ...
Habe ich ev. falsch vertanden.

Leider habe ich nicht herausgefunden wie ich auf jede einzelne Deiner Fragen antworten kann :(
Sollte Doch sicher möglich sein.
 
Last edited:

nero

Member
Licensed User
Du hast deine Antwort in dem quote von mir eingebaut....

Die SD-Karte kann damit beschrieben werden genau wie unter 5.1.1 auch.

Das kann sie auch mit 6,7,8,9

Stellt sich nun die Frage: WAS genau ist deine Frage?
Unter Android 6+ war es mir nicht möglich auf die SD zu schreiben mit Xposed Framework klappt das .
Ich möchte wissen was ich ab 6+ tun muss damit meine Anwendung auf SD r/w Berechtigung erlangt.
Damit ich meine Verzeichnisse und Files ertellen und benutzen kann das ist alles.
Besten Dank für Deine Hilfe.
 

DonManfred

Expert
Licensed User
Unter Android 6+ war es mir nicht möglich auf die SD
Du musst unterscheiden zwischen interner und externer SD. File.DirInternal und File.DirRootExternal sind beide Interne SD-Karten.
Externe SD Karten, USB Disc und sowas alles benötigen das SAF (Storage Access Framework, ein total unterdokumentiertes Feature in Android).
Der einzige Weg auf eine Externe SD Karte zuzugreifen ist mittels der ExternalStorage Klasse.
 

nero

Member
Licensed User
Du musst unterscheiden zwischen interner und externer SD. File.DirInternal und File.DirRootExternal sind beide Interne SD-Karten.
Externe SD Karten, USB Disc und sowas alles benötigen das SAF (Storage Access Framework, ein total unterdokumentiertes Feature in Android).
Der einzige Weg auf eine Externe SD Karte zuzugreifen ist mittels der ExternalStorage Klasse.
Besten Dank für Deinen Ratschlag ich werde es versuchen "Learning by doing"
Welche B4A Version ist dazu nötig ?
 

nero

Member
Licensed User
Für Android 8+ solltest Du mindestens B4A 8 einsetzen denke ich. Am besten update machen und direkt auf 9.5, wenn deine Updatezeit abgelaufen ist.
Sorry ich nochmal:
Normalerweise verwende ich Samsung S4 + S5 mit CM12.1 = Android 5.1.1
daher keine Probleme mit "real ext. Sd-Card"

Im "neueren" Ulefone Power verwende ich LineageOS 14.1 = Android 7.1.2
Wie ich im Link gelesen habe sollte die ExternalStorage Klasse auf allen Geräten ab 5+ verwendet werden
können wäre die Lösung und in meinem Sinne.
Welche B4A Version und welche android.jar Version muss verwendet werden ?
Der Hintergrund ist nur das ich mit den icons in der notifi mit der V 8.50 noch meine Schwierigkeiten habe. (icon wird nur gedrückt angezeigt ansonst nur grauer Kreis)
Besten Dank für deine Geduld mit meinen Anfänger Fragen ...
 

DonManfred

Expert
Licensed User
kann ich Dir gar nicht genau sagen. Mit der aktuellen Version funktionierts :D

Unabhängig davon solltest Du für jedes Problem einen neuen thread anlegen und ausreichend informationen bieten (beispiel-upload mit einem projekt welches einen fehler liefert, volle fehlermeldung)...
 
Last edited:
Top