Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Android 12 ve üstü
#1
Merhaba Üstatlarım.

Rad studio 11 Alexandria kullanıyorum. 
Yaptığım uygulama Android 10 da sorunsuz çalışıyor. Ama android 11 ve 12lerde açılıp kapanıyor. Sdk Manager'dan baktığımda en son 29.0.6 kurulu.
Sanırım android 12 için API 32 yüklemem gerekiyor ama SDK Manager'da en son 29 görünüyor. üstü görünmüyor.
https://developer.android.com/guide/topi...dk-element
Adroid 11 ve üzeri telefonlarda çalıştırabilmem için nasıl yapmam gerek acaba?

Teşekkür Ederim


Ek Dosyalar Resimler
   
Cevapla
#2
Hocam apk lardan olduğunu sanmıyorum. Android 11 den sonra permission türleri değişti. Büyük ihtimallle bununla alakalıdır
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#3
@mcuyan hocam öncelikle cevap için teşekkürler.
Evet uygulamanın izinleri vermezsem program açılıyor. Uygulamamda verdiğim izinler şunlar,

Kamera, Hafıza yazma okuma ve konum.

Konum iznini de kullanıcının konumunu almak için izin veriyorum. Ama sadece bu lokasyon iznini verdiğimde program kapanıyor. diğer izinleri verip test ettiğimde sorun yok, onlar çalışıyor çünkü. Bu izinlerle ilgili Nasıl bir yol izlemem gerek acaba?
Cevapla
#4
Hocam kodu kendinize göre düzenlersiniz..

{$IF Defined(ANDROID)}
 TThread.CreateAnonymousThread(
   procedure()
   begin
     TThread.Synchronize(TThread.CurrentThread,
       procedure()
       begin
         // izin başla
         PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE), JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE),
            JStringToString(TJManifest_permission.JavaClass.CAMERA), JStringToString(TJManifest_permission.JavaClass.READ_PHONE_STATE)],
           procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
           begin
             if (AGrantResults[0] = TPermissionStatus.Granted) then
               and_per := 0
             else
             begin
               Showmessage('Lütfen Yetkileri Veriniz..');
               and_per := 1
             end;
           end);
         // izin bitir
       end);
   end).Start;

{$ENDIF}

MEsela sizin GPS yani konum için TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION i de kullanmanız gerekiyormuş.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#5
@mcuyan hocam sizin gönderdiğiniz kodu ve başka birkaç bulduğum kodu deniyor ama şu hatayı alıyorum.

[DCC Error] fMain.pas(116): E2250 There is no overloaded version of 'RequestPermissions' that can be called with these arguments

Bu hata neden kaynaklanabilir sizce?
Cevapla
#6
Hocam bu kodlarla birlikte mboilpermissions componentini kullanıyorsanız, kullanmamanız gerekiyor. (https://github.com/adrianosantostreina/M.../issues/14)

Sizin cevabınız da burada..: https://www.delphican.com/showthread.php?tid=6281
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#7
@mcuyan hocam yok olmadı maalesef. neyse çözmeye çalışıyorum.
Sadece konum izni verip konumu aldığımda uygulama açılıp kapanıyor. diğer izinlerde sorun yok aslında. bakalım uğraşıyorum halen. Teşekkürler destekleriniz için.
Cevapla
#8
@gonulali hocam
Android SDK 30 sürümünü elle yüklemeniz gerekli. Manual install for Android SDK/NDK in Delphi https://delphiworlds.com/2020/09/manual-...ll-delphi/
Jim McKeeth'in yolu: Manually Installing Android SDK, NDK, and Java for FireMonkey Development http://delphi.org/2019/06/manually-insta...velopment/ 
NDK ve AdoptOpenJDK aynı kalabilir. Sadece SDK command line tools ile komut satırı yüklemesi yapmak gerekiyor.

Delphi ile yüklü gelen SDK dizini:
C:\Users\Public\Documents\Embarcadero\Studio\xx.x\CatalogRepository\AndroidSDK-2525-21.0.40680.4203
Burası şimdilik kalabilir. Yeni SDK yükleyip çalıştırdıktan sonra silebilirsiniz.

C:\Users\Public\Documents\Embarcadero\Studio\AndroidSDK\
dizinini elle oluşturun.

https://developer.android.com/studio#command-tools sayfasından Windows zip dosyasını "commandlinetools-win-8512546_latest.zip" yeni açtığınız "AndroidSDK" dizinine indirip açın.

"cmdline-tools" altında "latest" adında yeni bir dizin açın: "AndroidSDK\cmdline-tools\latest"
"cmdline-tools" altındaki tüm dizin ve dosyaları "latest" altına taşıyın.

Windows + R > cmd (Command Prompt)
cd "C:\Users\Public\Documents\Embarcadero\Studio\AndroidSDK\cmdline-tools\latest\bin"  

sdkmanager "build-tools;30.0.0" "extras;google;usb_driver" "platforms;android-30" "tools" "platform-tools" 

Tüm dosyalar indirilince 
sdkmanager --list
cd ..
tree 
ile "installed packages" altında yüklenenleri tetkik edebilirsiniz.

Tools > Options > Deployment > SDK Manager > SDK sekmesinde dizinleri güncelleyiniz (SDK base path: C:\Users\Public\Documents\Embarcadero\Studio\AndroidSDK vs.)
Cevapla
#9
Android yavaş yavaş bazı tehlikeli izinler için tekrardan uyarı vermeyi zorunlu hale getiriyor. Buna Rationale yani rasyonel deniyor. Kullanıcının tekrar bir uyarı görüp görmemesine de Android kendi içerisinde karar veriyor, buna uygun bir yapı kurmuşlar. Android Studio üzerinde Kotlin ile geliştirme yaparken shouldShowRequestPermissionRationale ile kontrol ediliyor bu durum. Belki bununla bağlantısı olabilir.
Cevapla
#10
@emozgun Çok Teşekkürler hocam. Deneyip dönüş yapacağım.
@mahone Çok Teşekkürler. İnceleyeceğim.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android Uygulama İkonu ARM 2 400 11-11-2025, Saat: 12:15
Son Yorum: ARM
  Android SDK kajmerantime 1 384 28-10-2025, Saat: 14:53
Son Yorum: cinarbil
  Android El Terminali Barkod Okuyucu Verisi tuna 0 334 17-10-2025, Saat: 01:07
Son Yorum: tuna
  Android işlem öneriliyor uyarısı! Coban 9 1.863 07-08-2025, Saat: 12:07
Son Yorum: RAD Coder
  FMX Android Adaptive Icons kullanabilir miyiz? egeven 1 2.156 30-06-2025, Saat: 21:46
Son Yorum: emozgun



Konuyu Okuyanlar: 1 Ziyaretçi