AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Android: Dateiname String nach JNET_URI konvertieren
Thema durchsuchen
Ansicht
Themen-Optionen

Android: Dateiname String nach JNET_URI konvertieren

Ein Thema von amigage · begonnen am 18. Jan 2022 · letzter Beitrag vom 18. Jan 2022
Antwort Antwort
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
274 Beiträge
 
Delphi 12 Athens
 
#1

Android: Dateiname String nach JNET_URI konvertieren

  Alt 18. Jan 2022, 15:17
Delphi-Version: 11 Alexandria
Für den Dateizugriff ab Android 11 habe ich folgende Seite mit Delphi Code gefunden.
https://www.delphican.com/showthread...47560#pid47560

Der Quellcode findet sich hier: https://github.com/emozgun/delphi-android-SAF

Damit bekomme ich Zugriff auf die Dateien. Mein Problem ist nur, dass ich den Wert als JNET_URI erhalte.
Ich kann zwar den Pfad, wie z.B. content://com.android.externalstorage.documents/document:3830-6335%3ADocuments%2FmeineDatei.ext auslesen und als String speichern, aber wie kann ich beim nächsten Start der App wieder auf diese Datei zugreifen, um z.B. den Dateinamen anzuzeigen und den Zugriff darauf zu bekommen?

Also ich habe es so versucht, komme aber leider nicht weiter:

Delphi-Quellcode:
var
  fileuri: JNet_Uri;
//...
strExtFilename := 'content://com.android.externalstorage.documents/document:3830-6335%3ADocuments%2FmeineDatei.ext'; // wird normalerweise aus einer ini gelesen

if (strExtFilename.StartsWith('content://')) then
begin
 fileuri := TAndroidHelper.StrToJURI(strExtFilename);
 strFilenameDisplay := GetFilename_FromUri(fileUri);
end;

Delphi-Quellcode:
function GetFilename_FromUri(Uri: JNet_Uri): string;
var
  C: JCursor;
begin
  result := '';
  try
    C := TAndroidHelper.Activity.getContentResolver.query(Uri, nil, nil, nil, nil, nil);
    if (C = nil) then
      exit;
    C.moveToFirst;
    result := JStringToString(C.getString(C.getColumnIndex(TJOpenableColumns.JavaClass.DISPLAY_NAME)));
  finally
    C.close;
  end;
end;
Leider stürzt die App dabei ab, da vermutlich die fileuri nicht komplett ist. Ich weiß aber nicht, wie man die Datei parsen lassen kann, ohne das der Anwender sie neu über das Storage Access Network auswählen muss.

Ich hoffe, jemand kann mir dabei helfen.

Geändert von amigage (18. Jan 2022 um 15:27 Uhr)
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
898 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Android: Dateiname String nach JNET_URI konvertieren

  Alt 18. Jan 2022, 22:22
Bitte schön:
Delphi-Quellcode:
  var fileuri: JNet_Uri;
     TheFile: JFile;
     Intent: JIntent;
  begin
    TheFile:=TJFile.JavaClass.init(StringToJString(filepath), StringToJString(filename));
    //Output: JStringToString(TheFile.getAbsolutePath()));
    fileuri:=TAndroidhelper.JFileToJURI(TheFile);
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz