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<?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) -->ai-je "dormi" trop longtemps ?
Partager