Bonjour,
je sors de mon "hibernation australe" (il n'y a pas de mot pour une mise en retrait printemps+été) pour enfin tester le composant Android TBiometricAuth (dispo à partir de D11.x, pour ceux qui ont installé la version community merci de me signaler s'il est présent)
un programme simple
mais une execution déconcertante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 unit HelloAndroidU; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, System.Permissions, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.BiometricAuth; type TForm5 = class(TForm) Label1: TLabel; Button1: TButton; BiometricAuth1: TBiometricAuth; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure BiometricAuth1AuthenticateFail(Sender: TObject; const FailReason: TBiometricFailReason; const ResultMessage: string); procedure BiometricAuth1AuthenticateSuccess(Sender: TObject); procedure FormCreate(Sender: TObject); private { Déclarations privées } procedure BiometricPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); public { Déclarations publiques } end; var Form5: TForm5; PermissionBiometric : TArray<String>; implementation {$R *.fmx} // USE_BIOMETRIC procedure TForm5.BiometricAuth1AuthenticateFail(Sender: TObject; const FailReason: TBiometricFailReason; const ResultMessage: string); begin Label2.Text:='Utilisateur non reconnu'; end; procedure TForm5.BiometricAuth1AuthenticateSuccess(Sender: TObject); begin Label2.Text:='Salut moi'; end; procedure TForm5.Button1Click(Sender: TObject); begin PermissionsService.RequestPermissions( { } PermissionBiometric, { } BiometricPermissionRequestResult { } ); end; procedure TForm5.FormCreate(Sender: TObject); begin PermissionBiometric := ['android.permission.USE_BIOMETRIC']; end; procedure TForm5.BiometricPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); begin if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then BiometricAuth1.Authenticate; end; end.
J'ai loupé une marche, pas encore réveillé , j'ai besoin de vos lumières sur cette erreur.
pour info mon manifeste, basique j'ai juste ajouté (via les options de projets la permission pour utiliser la biométrie)
Déjà que contrairement à mon ancien téléphone l'application n'apparait pas dans mes raccourcis, je me pose des questions ai-je "dormi" trop longtemps ?<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.embarcadero.HelloAndroid"
android:versionCode="1"
android:versionName="1.0.0"
android:installLocation="auto">
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="34" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
<queries>
</queries>
<application
android:persistent="False"
android:restoreAnyVersion="False"
android:label="HelloAndroid"
android:debuggable="true"
android:largeHeap="False"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme"
android:hardwareAccelerated="true"
android:resizeableActivity="true"
android:requestLegacyExternalStorage="true">
<!-- Trigger Google Play services to install the backported photo picker module. -->
<service
android:name="com.google.android.gms.metadata.ModuleDependencies"
android:enabled="false"
android:exported="false"
tools:ignore="MissingClass">
<intent-filter>
<action android:name="com.google.android.gms.metadata.MODULE_DEPENDENCIES" />
</intent-filter>
<meta-data android:name="photopicker_activity:0:required" android:value="" />
</service>
<!-- Our activity is a subclass of the built-in NativeActivity framework class.
This will take care of integrating with our NDK code. -->
<activity
android:name="com.embarcadero.firemonkey.FMXNativeActivity"
android:exported="true"
android:label="HelloAndroid"
android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode"
android:launchMode="singleTask">
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name" android:value="HelloAndroid" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" />
</application>
</manifest>
<!-- END_INCLUDE(manifest) -->
Partager