AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung [Android] angeschlossene "/storage/"s finden
Thema durchsuchen
Ansicht
Themen-Optionen

[Android] angeschlossene "/storage/"s finden

Ein Thema von nikosophi · begonnen am 5. Aug 2016 · letzter Beitrag vom 5. Apr 2019
 
nikosophi

Registriert seit: 8. Mai 2013
Ort: Weilerswist
47 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: [Android] angeschlossene "/storage/"s finden

  Alt 4. Sep 2016, 11:33
Wow cool, habe meine Zeitplanung nur um 300% überschritten- ich werde halt immer besser

Aber im Ernst: die "wahre" Lösung scheint es nicht zu geben. Wieviele unterschiedliche Geräte Arten letztendlich geprüft wurden, weiß ich nicht genau, müssen aber über 15 gewesen sein.
Also unterschiedliche Devices oder Android Versionen.

Am liebsten hätte ich die Variante von "bra" verwendet, da jfList immer die korrekte Anzahl an wirklich angeschlossenen Speicherkarten oder Sticks anzeigt. Sogar bei Android 4.
Also USB Stick anstöpseln und zack: ein Eintag mehr.
Allerdings liefert sPathStorageState stets "unknown".

Ich habe letztendlich zwei verschiedene Funktionen verwendet und die Ergebnisse in eine eindeutige Liste geschrieben.

1) FlyFilesUtils.GetExternalStoragePath // von wang80919qq link siehe ersten post
2) system.IOUtils.TDirectory.GetDirectories ('/storage/');

Zur Verbesserung sollte man noch den freien Speicher prüfen, da oft USBDriveA-USBDriveF aufgelistet werden, auch wenn kein oder nur ein Stick angeschlossen ist.

Falls es was besseres gibt, bitte melden!


hier die Funktion:
Code:
function InitCacheCombobox: boolean;
var
  cFunctionname: string;

  cPath, cExtern, cIntern, cMsg, cName, cFileINIExt: string;
  i: longInt;
  sr: TSearchRec;
  lList: System.Types.TStringDynArray;
  LSearchOption: TSearchOption;
begin
  cFunctionname := unit_name + 'InitCacheCombobox';
  result  := FALSE;
  try
    try
      haupt_util.AddDebugInfo ( '*** Laufwerksabfragen: ***' );

{$IFDEF ANDROID}

      cPath := FlyFilesUtils.GetExternalStoragePath;
      cMsg := Format('GetExternalStoragePath: %s free Diskspace: %d Byte davon frei: %d Byte', [cPath, FlyFilesUtils.GetTotalSpaceSize(cPath), GetFreeSpaceSize(cPath)]);
      haupt_util.AddDebugInfo (cMsg);
      Add2CacheCombobox (cPath);

////////////////////////////////////////////////////////////////////////////////
      LSearchOption := TSearchOption.soAllDirectories;
      lList := system.IOUtils.TDirectory.GetDirectories ('/storage/');

      for i := 0 to pred(length(lList)) do begin
        cPath := lList[i];
        haupt_util.AddDebugInfo ('GetDirectories(1): '+inttostr(i)+') '+cPath);
        Add2CacheCombobox (cPath);
      end;
////////////////////////////////////////////////////////////////////////////////

{$endif}
    haupt_util.AddDebugInfo ( '*** Laufwerksabfragen Ende ***' );
    except
      on E:Exception do begin
        haupt_util.WriteExceptionLog ( E, cFunctionname );
      end;
    end;
  finally
  end;
end;
  Mit Zitat antworten Zitat
 


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:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz