Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Android Rehbere Kayıt Ekleme
#1
Merhabalar,

Daha önce Androide kayıt ekleyen kodum şimdi çalışmıyor. Neden Olabilir?

procedure TAnaF.FormCreate(Sender: TObject);
begin

{$IFDEF ANDROID}
 //iiznler

 okuma_izni:=JStringToString(TJManifest_permission.JavaClass.READ_CONTACTS);
 yazma_izni:=JStringToString(TJManifest_permission.JavaClass.WRITE_CONTACTS);
 GetAccount_izni:=JStringToString(TJManifest_permission.JavaClass.GET_ACCOUNTS);
 Arama_izni:=JStringToString(TJManifest_permission.JavaClass.CALL_PHONE);



PermissionsService.RequestPermissions([okuma_izni,yazma_izni,GetAccount_izni,Arama_izni],
         procedure(
                     const APermissions: TClassicStringDynArray;
                     const AGrantResults: TClassicPermissionStatusDynArray)
                     begin
                            if (Length(AGrantResults)=4) and
                               (AGrantResults[0] = TPermissionStatus.Granted) and
                               (AGrantResults[1] = TPermissionStatus.Granted) and
                               (AGrantResults[2] = TPermissionStatus.Granted) and
                               (AGrantResults[3] = TPermissionStatus.Granted) then
                            begin
                                //izni alınca yapılacak işlemler
                            end
                            ELSE //Eğer izin onaylanmamışsa
                               TDialogService.ShowMessage('İzin vermediniz');
                     end);

  {$ENDIF}
end;


procedure TAnaF.RehbereKayitEkle(FirstName,LastName,Telefon:string);
var
 Contact: TAddressBookContact;
 Phones: TContactPhones;
begin

 Contact := d.AddressBook1.CreateContact(d.AddressBook1.DefaultSource);
 try
  // Add a mobile phone number
   Phones := TContactPhones.Create;
   try
     Phones.AddPhone(TContactPhone.TLabelKind.Mobile, Telefon);
     Contact.FirstName:='Nakkom - '+FirstName;
     Contact.LastName:=LastName;

     Contact.Phones := Phones;
   finally
     Phones.Free;
   end;
 // Save the newly created contact
 d.AddressBook1.SaveContact(Contact);

 finally
   Contact.Free;
 end;

end;
Cevapla
#2
Merhabalar,

Rehbere Kayıt Ekle Procedurunda Hata olduğu için kaydetmiyormuş.

Contact ve Phones değişkenlerini yok ekmek için Free kullanmışım onun DisposeOf olması gerekiyor.
Cevapla
#3
(03-04-2024, Saat: 15:05)barissagir Adlı Kullanıcıdan Alıntı: Merhabalar,

Rehbere Kayıt Ekle Procedurunda Hata olduğu için kaydetmiyormuş.

Contact ve Phones değişkenlerini yok ekmek için Free kullanmışım onun DisposeOf olması gerekiyor.

Delphi 11 ve daha üst sürüme geçtiğinizde, DisposeOf kullanmayın. Bu sürüm ve sonraki sürümler için DisposeOf kullanımdan kaldırılmıştır.
Kaynak: System.TObject.DisposeOf
Begin : = end / 2;
Cevapla
#4
Free mi kullanmamız gerekiyor?
Cevapla
#5
(03-04-2024, Saat: 17:28)barissagir Adlı Kullanıcıdan Alıntı: Free mi kullanmamız gerekiyor?

Evet
Begin : = end / 2;
Cevapla
#6
Peki yukardaki kodda neden free hata veriyor. Baska bi islemmi yapmam gerekiyor
Cevapla
#7
(03-04-2024, Saat: 18:32)barissagir Adlı Kullanıcıdan Alıntı: Peki yukardaki kodda neden free hata veriyor. Baska bi islemmi yapmam gerekiyor

Phones.Free; satırından kaynaklanıyor.
Bu satır ve ona bağlı try-finally kapatın.
Contact.Free; yaptığınızda, Phones sınıfı da free olacaktır.
Begin : = end / 2;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android için comport iletişimi beklentili 7 3.714 06-05-2024, Saat: 20:57
Son Yorum: deutsch1988
Exclamation Delphi 12 - Android 14 nevez 22 1.207 26-04-2024, Saat: 22:54
Son Yorum: nevez
  Android’de Dosya Depolama ve Paylaşma-2: And 11 SDK 30 Scoped Storage SAF MediaStore emozgun 12 5.248 19-03-2024, Saat: 22:29
Son Yorum: nguzeller
  Android 33 api sdk güncelleme [ÇÖZÜLDÜ] codder71 4 537 19-02-2024, Saat: 22:38
Son Yorum: codder71
  Mobil Android Emulator Altıner 5 501 22-01-2024, Saat: 18:28
Son Yorum: Altıner



Konuyu Okuyanlar: 1 Ziyaretçi