Android Hedef Target Android 12 Hatası Çözümü

android:exported needs to be explicitly specified for element <activity#com.embarcadero.firemonkey.FMXNativeActivity>. Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

Bu hata mesajı, Delphi 12.3 ile Android 12 veya üzeri sürümler için uygulama geliştirirken, AndroidManifest.xml dosyanızda bazı activity öğelerinde android:exported niteliğinin eksik olduğunu bildiriyor.

Sorun Nedir?

Android 12 (API 31) itibarıyla, bir Activity, Service veya BroadcastReceiver bileşeni eğer bir intent-filter içeriyorsa, android:exported niteliğinin açıkça tanımlanması zorunludur. Bu nitelik, bileşenin uygulama dışından erişilebilir olup olmadığını belirler.

hatanda belirtilen öğe:

<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" ...>

Bu aktivite bir intent-filter içerdiği için, artık android:exported özelliğini içermesi gerekiyor.

Ne Yapmalısın?

  1. AndroidManifest.template.xml dosyanı aç.
  2. Aşağıdaki gibi FMXNativeActivity için tanımlı activity öğesini bul:
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
          android:label="@string/app_name"
          android:configChanges="orientation|keyboardHidden|screenSize"
          android:launchMode="singleTop">

Bu satıra android:exported="true" (veya gerektiğinde false) ekle:

<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
          android:label="@string/app_name"
          android:configChanges="orientation|keyboardHidden|screenSize"
          android:launchMode="singleTop"
          android:exported="true">

Bu şekilde düzenleme yapıldığında hata ortadan Kalkar

Delphi FMX Mobil de Enter Tuşu İle İlermek

Mobil uygulama klavyedeki Enter tuşuna basınca sonraki işleme yapmak için kullandığım kod

procedure TForm.SifreKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  if sender is TEdit then
    if Key in [vkReturn] then
      case TEdit(sender).ReturnKeyType   of
        TReturnKeyType.Send : Button1Click(Self);
      end;
end;
Delphi FMX Grid Renklendirme

Delphi Firemonkey string grid renklendirme kodu

procedure TForm.StringGrid1DrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
const Row: Integer; const Value: TValue; const State: TGridDrawStates);
 
begin
 aRowColor := TBrush.Create(TBrushKind.Solid, TAlphaColors.Alpha);
 
if Sartim > 0 then
  aRowColor.Color := TAlphaColorRec.Aqua
else
if Sartim  = 0 Then
  ARowColor.Color := TAlphaColorRec.Lime
else
if Sartim  <  0 then
  aRowColor.Color := TAlphaColorRec.Aliceblue;
 
aNewRectF := Bounds;
aNewRectF.Inflate(3, 3);
Canvas.FillRect(aNewRectF, 0, 0, [], 1, aRowColor);
Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);
 
aRowColor.free;
 
 
 
end;