Android SD Kart

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Android SD Kart

Mesaj gönderen barisatalay »

Merhabalar,

Bu Sd kartın yolunu almak için sabit bir fonksiyon var mıdır ? Nette bir çok şekilde almaya çalışmış çoğu kişi ama hiç birinde olumlu sonuç alamadım da :?
Kullanıcı avatarı
burak_489
Üye
Mesajlar: 31
Kayıt: 20 Ara 2010 09:20

Re: Android SD Kart

Mesaj gönderen burak_489 »

uses
System.IOUtils,
...


procedure TForm1.Button1Click(Sender: TObject);
begin
TPath. buradan istediğim adresi alabilirsin
end;
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Android SD Kart

Mesaj gönderen barisatalay »

Hepsini denedim Cihaz hafızasındakiler hakkında oradaki hepsi
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Android SD Kart

Mesaj gönderen SimaWB »

Buradaki dökümana göre burak_489'un yazdığı yöntemle SD Kartın yolunu da alabiliyormuşsunuz.
Acaba programın izinlerinde bir eksiklik olabilir mi? Harici kartta erişmek için READ_EXTERNAL_STORAGE ve WRITE_EXTERNAL_STORAGE izinlerini verdiniz mi?
There's no place like 127.0.0.1
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Android SD Kart

Mesaj gönderen barisatalay »

@SimaWB sıfırdan açılan projelerde manuel olarak onlar zaten işaretli gelmekte bende boş bir projede deniyorum.

Peki hata benden kaynaklı olabilir mi?
Cihazım Galaxy S4
Cihazın üzerinde gelen Dosya yöneticisi programından Giriyorum Tüm Dosyalara tıklıyorum:
"Dizin: /storage"
**Alt dizinler hafılarım yani**
SD memory card = "Dizini: /storage/extSdCard"
Device storage = "Dizini: /storage/emulated/0"

Dosya dizinleri böyle.

Verdiğiniz linkte;
GetExternalRingtonesDir -> External Memory
A typical result is: '/storage/emulated/0/Android/data/<application ID>/files/Ringtones'
diyor ve benim cihazdaki yerel hafıza yolunu gösteriyor ?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Android SD Kart

Mesaj gönderen SimaWB »

Denemişsindir muhtemelen ama buradaki gibi basit bir örnek yapıp TPath'in tüm fonksiyonlarının ne değer döndürdüğüne bakabilirsin...
There's no place like 127.0.0.1
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Android SD Kart

Mesaj gönderen barisatalay »

Aynen dediğiniz gibi onlarıda denedim fakat hala harici hafıza kartımın yolunu alamadım :?
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Android SD Kart

Mesaj gönderen barisatalay »

Tekrar merhabalar,

Sorunu bir şekilde olsa halletmiş bulunmaktayım 1-2 tane fonksiyon hazırladım bunun için.

1.Fonksiyon her cihazın root dizini farklı olabileceği için Root dizini bulmaya yarıyor.

Kod: Tümünü seç

function GetRoot: String;
  function KacTane(Seperator,Str: String):Integer;
  begin
    Result := 0;
    while Pos(Seperator,Str) >0 do
    begin
      System.Delete(str,1,Pos(Seperator,str) );
      Inc(Result);
    end;
  end;
var
  Tmp: String;
begin
  Tmp := AnsiReverseString(TPath.GetSharedMusicPath);

  while KacTane('/',Tmp) > 1 do
  begin
    System.Delete(Tmp,1,Pos('/',Tmp) );
  end;
  Tmp := AnsiReverseString(Tmp);
  Result := Tmp + '/';
end;
2. Bulduğumuz Root dizindeki dosyaları listelemek için artık gerisi size kalmıştır :)

Kod: Tümünü seç

procedure GetDizin(Str: String);
var
  FileList: TStringDynArray;
  s: string;
begin
  ListBox1.Items.Clear;
  FileList := TDirectory.GetDirectories(Str);
  for s in FileList do
    ListBox1.items.Add(s);
end


Örnek kullanım:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  tmp: string;
begin
  tmp := GetRoot;
  ShowMessage('Root dizin: '+ tmp);
  GetDizin(tmp);
end;
Cevapla