From 22a0b262e1bf814f407249d066f2ec15644333cf Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Thu, 16 May 2019 16:31:58 -0400 Subject: [PATCH] fingerprint setup --- src/Android/MainApplication.cs | 7 +- src/Android/Resources/Resource.designer.cs | 982 +++++++++--------- src/App/App.csproj | 1 + .../Pages/Settings/SettingsPageViewModel.cs | 22 +- .../Services/MobilePlatformUtilsService.cs | 43 + .../Abstractions/IPlatformUtilsService.cs | 5 +- src/iOS/Info.plist | 2 + 7 files changed, 581 insertions(+), 481 deletions(-) diff --git a/src/Android/MainApplication.cs b/src/Android/MainApplication.cs index fab8d5a82..23c9c494d 100644 --- a/src/Android/MainApplication.cs +++ b/src/Android/MainApplication.cs @@ -9,6 +9,9 @@ using Bit.Core.Abstractions; using Bit.Core.Services; using Bit.Core.Utilities; using Bit.Droid.Services; +using Plugin.CurrentActivity; +using Plugin.Fingerprint; +using Plugin.Fingerprint.Abstractions; namespace Bit.Droid { @@ -34,14 +37,16 @@ namespace Bit.Droid { base.OnCreate(); Bootstrap(); - Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this); + CrossCurrentActivity.Current.Init(this); } private void RegisterLocalServices() { + // CrossFingerprint.SetCurrentActivityResolver(() => CrossCurrentActivity.Current.Activity); Refractored.FabControl.Droid.FloatingActionButtonViewRenderer.Init(); // Note: This might cause a race condition. Investigate more. Task.Run(() => FFImageLoading.Forms.Platform.CachedImageRenderer.Init(true)); + CrossFingerprint.SetCurrentActivityResolver(() => CrossCurrentActivity.Current.Activity); var preferencesStorage = new PreferencesStorageService(null); var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); diff --git a/src/Android/Resources/Resource.designer.cs b/src/Android/Resources/Resource.designer.cs index c0d65988f..332cf8ed5 100644 --- a/src/Android/Resources/Resource.designer.cs +++ b/src/Android/Resources/Resource.designer.cs @@ -28,6 +28,13 @@ namespace Bit.Droid { global::PCLCrypto.Resource.String.ApplicationName = global::Bit.Droid.Resource.String.ApplicationName; global::PCLCrypto.Resource.String.Hello = global::Bit.Droid.Resource.String.Hello; + global::Plugin.Fingerprint.Resource.Drawable.fingerprint_white = global::Bit.Droid.Resource.Drawable.fingerprint_white; + global::Plugin.Fingerprint.Resource.Id.fingerprint_btnCancel = global::Bit.Droid.Resource.Id.fingerprint_btnCancel; + global::Plugin.Fingerprint.Resource.Id.fingerprint_btnFallback = global::Bit.Droid.Resource.Id.fingerprint_btnFallback; + global::Plugin.Fingerprint.Resource.Id.fingerprint_imgFingerprint = global::Bit.Droid.Resource.Id.fingerprint_imgFingerprint; + global::Plugin.Fingerprint.Resource.Id.fingerprint_txtHelp = global::Bit.Droid.Resource.Id.fingerprint_txtHelp; + global::Plugin.Fingerprint.Resource.Id.fingerprint_txtReason = global::Bit.Droid.Resource.Id.fingerprint_txtReason; + global::Plugin.Fingerprint.Resource.Layout.FingerprintDialog = global::Bit.Droid.Resource.Layout.FingerprintDialog; global::Refractored.Fab.Resource.Attribute.fab_colorDisabled = global::Bit.Droid.Resource.Attribute.fab_colorDisabled; global::Refractored.Fab.Resource.Attribute.fab_colorNormal = global::Bit.Droid.Resource.Attribute.fab_colorNormal; global::Refractored.Fab.Resource.Attribute.fab_colorPressed = global::Bit.Droid.Resource.Attribute.fab_colorPressed; @@ -7993,26 +8000,26 @@ namespace Bit.Droid // aapt resource value: 0x7f02005a public const int avd_hide_password = 2130837594; - // aapt resource value: 0x7f02014d - public const int avd_hide_password_1 = 2130837837; - // aapt resource value: 0x7f02014e - public const int avd_hide_password_2 = 2130837838; + public const int avd_hide_password_1 = 2130837838; // aapt resource value: 0x7f02014f - public const int avd_hide_password_3 = 2130837839; + public const int avd_hide_password_2 = 2130837839; + + // aapt resource value: 0x7f020150 + public const int avd_hide_password_3 = 2130837840; // aapt resource value: 0x7f02005b public const int avd_show_password = 2130837595; - // aapt resource value: 0x7f020150 - public const int avd_show_password_1 = 2130837840; - // aapt resource value: 0x7f020151 - public const int avd_show_password_2 = 2130837841; + public const int avd_show_password_1 = 2130837841; // aapt resource value: 0x7f020152 - public const int avd_show_password_3 = 2130837842; + public const int avd_show_password_2 = 2130837842; + + // aapt resource value: 0x7f020153 + public const int avd_show_password_3 = 2130837843; // aapt resource value: 0x7f02005c public const int card = 2130837596; @@ -8045,697 +8052,700 @@ namespace Bit.Droid public const int fab_shadow_mini = 2130837605; // aapt resource value: 0x7f020066 - public const int ic_audiotrack_dark = 2130837606; + public const int fingerprint_white = 2130837606; // aapt resource value: 0x7f020067 - public const int ic_audiotrack_light = 2130837607; + public const int ic_audiotrack_dark = 2130837607; // aapt resource value: 0x7f020068 - public const int ic_dialog_close_dark = 2130837608; + public const int ic_audiotrack_light = 2130837608; // aapt resource value: 0x7f020069 - public const int ic_dialog_close_light = 2130837609; + public const int ic_dialog_close_dark = 2130837609; // aapt resource value: 0x7f02006a - public const int ic_group_collapse_00 = 2130837610; + public const int ic_dialog_close_light = 2130837610; // aapt resource value: 0x7f02006b - public const int ic_group_collapse_01 = 2130837611; + public const int ic_group_collapse_00 = 2130837611; // aapt resource value: 0x7f02006c - public const int ic_group_collapse_02 = 2130837612; + public const int ic_group_collapse_01 = 2130837612; // aapt resource value: 0x7f02006d - public const int ic_group_collapse_03 = 2130837613; + public const int ic_group_collapse_02 = 2130837613; // aapt resource value: 0x7f02006e - public const int ic_group_collapse_04 = 2130837614; + public const int ic_group_collapse_03 = 2130837614; // aapt resource value: 0x7f02006f - public const int ic_group_collapse_05 = 2130837615; + public const int ic_group_collapse_04 = 2130837615; // aapt resource value: 0x7f020070 - public const int ic_group_collapse_06 = 2130837616; + public const int ic_group_collapse_05 = 2130837616; // aapt resource value: 0x7f020071 - public const int ic_group_collapse_07 = 2130837617; + public const int ic_group_collapse_06 = 2130837617; // aapt resource value: 0x7f020072 - public const int ic_group_collapse_08 = 2130837618; + public const int ic_group_collapse_07 = 2130837618; // aapt resource value: 0x7f020073 - public const int ic_group_collapse_09 = 2130837619; + public const int ic_group_collapse_08 = 2130837619; // aapt resource value: 0x7f020074 - public const int ic_group_collapse_10 = 2130837620; + public const int ic_group_collapse_09 = 2130837620; // aapt resource value: 0x7f020075 - public const int ic_group_collapse_11 = 2130837621; + public const int ic_group_collapse_10 = 2130837621; // aapt resource value: 0x7f020076 - public const int ic_group_collapse_12 = 2130837622; + public const int ic_group_collapse_11 = 2130837622; // aapt resource value: 0x7f020077 - public const int ic_group_collapse_13 = 2130837623; + public const int ic_group_collapse_12 = 2130837623; // aapt resource value: 0x7f020078 - public const int ic_group_collapse_14 = 2130837624; + public const int ic_group_collapse_13 = 2130837624; // aapt resource value: 0x7f020079 - public const int ic_group_collapse_15 = 2130837625; + public const int ic_group_collapse_14 = 2130837625; // aapt resource value: 0x7f02007a - public const int ic_group_expand_00 = 2130837626; + public const int ic_group_collapse_15 = 2130837626; // aapt resource value: 0x7f02007b - public const int ic_group_expand_01 = 2130837627; + public const int ic_group_expand_00 = 2130837627; // aapt resource value: 0x7f02007c - public const int ic_group_expand_02 = 2130837628; + public const int ic_group_expand_01 = 2130837628; // aapt resource value: 0x7f02007d - public const int ic_group_expand_03 = 2130837629; + public const int ic_group_expand_02 = 2130837629; // aapt resource value: 0x7f02007e - public const int ic_group_expand_04 = 2130837630; + public const int ic_group_expand_03 = 2130837630; // aapt resource value: 0x7f02007f - public const int ic_group_expand_05 = 2130837631; + public const int ic_group_expand_04 = 2130837631; // aapt resource value: 0x7f020080 - public const int ic_group_expand_06 = 2130837632; + public const int ic_group_expand_05 = 2130837632; // aapt resource value: 0x7f020081 - public const int ic_group_expand_07 = 2130837633; + public const int ic_group_expand_06 = 2130837633; // aapt resource value: 0x7f020082 - public const int ic_group_expand_08 = 2130837634; + public const int ic_group_expand_07 = 2130837634; // aapt resource value: 0x7f020083 - public const int ic_group_expand_09 = 2130837635; + public const int ic_group_expand_08 = 2130837635; // aapt resource value: 0x7f020084 - public const int ic_group_expand_10 = 2130837636; + public const int ic_group_expand_09 = 2130837636; // aapt resource value: 0x7f020085 - public const int ic_group_expand_11 = 2130837637; + public const int ic_group_expand_10 = 2130837637; // aapt resource value: 0x7f020086 - public const int ic_group_expand_12 = 2130837638; + public const int ic_group_expand_11 = 2130837638; // aapt resource value: 0x7f020087 - public const int ic_group_expand_13 = 2130837639; + public const int ic_group_expand_12 = 2130837639; // aapt resource value: 0x7f020088 - public const int ic_group_expand_14 = 2130837640; + public const int ic_group_expand_13 = 2130837640; // aapt resource value: 0x7f020089 - public const int ic_group_expand_15 = 2130837641; + public const int ic_group_expand_14 = 2130837641; // aapt resource value: 0x7f02008a - public const int ic_media_pause_dark = 2130837642; + public const int ic_group_expand_15 = 2130837642; // aapt resource value: 0x7f02008b - public const int ic_media_pause_light = 2130837643; + public const int ic_media_pause_dark = 2130837643; // aapt resource value: 0x7f02008c - public const int ic_media_play_dark = 2130837644; + public const int ic_media_pause_light = 2130837644; // aapt resource value: 0x7f02008d - public const int ic_media_play_light = 2130837645; + public const int ic_media_play_dark = 2130837645; // aapt resource value: 0x7f02008e - public const int ic_media_stop_dark = 2130837646; + public const int ic_media_play_light = 2130837646; // aapt resource value: 0x7f02008f - public const int ic_media_stop_light = 2130837647; + public const int ic_media_stop_dark = 2130837647; // aapt resource value: 0x7f020090 - public const int ic_mr_button_connected_00_dark = 2130837648; + public const int ic_media_stop_light = 2130837648; // aapt resource value: 0x7f020091 - public const int ic_mr_button_connected_00_light = 2130837649; + public const int ic_mr_button_connected_00_dark = 2130837649; // aapt resource value: 0x7f020092 - public const int ic_mr_button_connected_01_dark = 2130837650; + public const int ic_mr_button_connected_00_light = 2130837650; // aapt resource value: 0x7f020093 - public const int ic_mr_button_connected_01_light = 2130837651; + public const int ic_mr_button_connected_01_dark = 2130837651; // aapt resource value: 0x7f020094 - public const int ic_mr_button_connected_02_dark = 2130837652; + public const int ic_mr_button_connected_01_light = 2130837652; // aapt resource value: 0x7f020095 - public const int ic_mr_button_connected_02_light = 2130837653; + public const int ic_mr_button_connected_02_dark = 2130837653; // aapt resource value: 0x7f020096 - public const int ic_mr_button_connected_03_dark = 2130837654; + public const int ic_mr_button_connected_02_light = 2130837654; // aapt resource value: 0x7f020097 - public const int ic_mr_button_connected_03_light = 2130837655; + public const int ic_mr_button_connected_03_dark = 2130837655; // aapt resource value: 0x7f020098 - public const int ic_mr_button_connected_04_dark = 2130837656; + public const int ic_mr_button_connected_03_light = 2130837656; // aapt resource value: 0x7f020099 - public const int ic_mr_button_connected_04_light = 2130837657; + public const int ic_mr_button_connected_04_dark = 2130837657; // aapt resource value: 0x7f02009a - public const int ic_mr_button_connected_05_dark = 2130837658; + public const int ic_mr_button_connected_04_light = 2130837658; // aapt resource value: 0x7f02009b - public const int ic_mr_button_connected_05_light = 2130837659; + public const int ic_mr_button_connected_05_dark = 2130837659; // aapt resource value: 0x7f02009c - public const int ic_mr_button_connected_06_dark = 2130837660; + public const int ic_mr_button_connected_05_light = 2130837660; // aapt resource value: 0x7f02009d - public const int ic_mr_button_connected_06_light = 2130837661; + public const int ic_mr_button_connected_06_dark = 2130837661; // aapt resource value: 0x7f02009e - public const int ic_mr_button_connected_07_dark = 2130837662; + public const int ic_mr_button_connected_06_light = 2130837662; // aapt resource value: 0x7f02009f - public const int ic_mr_button_connected_07_light = 2130837663; + public const int ic_mr_button_connected_07_dark = 2130837663; // aapt resource value: 0x7f0200a0 - public const int ic_mr_button_connected_08_dark = 2130837664; + public const int ic_mr_button_connected_07_light = 2130837664; // aapt resource value: 0x7f0200a1 - public const int ic_mr_button_connected_08_light = 2130837665; + public const int ic_mr_button_connected_08_dark = 2130837665; // aapt resource value: 0x7f0200a2 - public const int ic_mr_button_connected_09_dark = 2130837666; + public const int ic_mr_button_connected_08_light = 2130837666; // aapt resource value: 0x7f0200a3 - public const int ic_mr_button_connected_09_light = 2130837667; + public const int ic_mr_button_connected_09_dark = 2130837667; // aapt resource value: 0x7f0200a4 - public const int ic_mr_button_connected_10_dark = 2130837668; + public const int ic_mr_button_connected_09_light = 2130837668; // aapt resource value: 0x7f0200a5 - public const int ic_mr_button_connected_10_light = 2130837669; + public const int ic_mr_button_connected_10_dark = 2130837669; // aapt resource value: 0x7f0200a6 - public const int ic_mr_button_connected_11_dark = 2130837670; + public const int ic_mr_button_connected_10_light = 2130837670; // aapt resource value: 0x7f0200a7 - public const int ic_mr_button_connected_11_light = 2130837671; + public const int ic_mr_button_connected_11_dark = 2130837671; // aapt resource value: 0x7f0200a8 - public const int ic_mr_button_connected_12_dark = 2130837672; + public const int ic_mr_button_connected_11_light = 2130837672; // aapt resource value: 0x7f0200a9 - public const int ic_mr_button_connected_12_light = 2130837673; + public const int ic_mr_button_connected_12_dark = 2130837673; // aapt resource value: 0x7f0200aa - public const int ic_mr_button_connected_13_dark = 2130837674; + public const int ic_mr_button_connected_12_light = 2130837674; // aapt resource value: 0x7f0200ab - public const int ic_mr_button_connected_13_light = 2130837675; + public const int ic_mr_button_connected_13_dark = 2130837675; // aapt resource value: 0x7f0200ac - public const int ic_mr_button_connected_14_dark = 2130837676; + public const int ic_mr_button_connected_13_light = 2130837676; // aapt resource value: 0x7f0200ad - public const int ic_mr_button_connected_14_light = 2130837677; + public const int ic_mr_button_connected_14_dark = 2130837677; // aapt resource value: 0x7f0200ae - public const int ic_mr_button_connected_15_dark = 2130837678; + public const int ic_mr_button_connected_14_light = 2130837678; // aapt resource value: 0x7f0200af - public const int ic_mr_button_connected_15_light = 2130837679; + public const int ic_mr_button_connected_15_dark = 2130837679; // aapt resource value: 0x7f0200b0 - public const int ic_mr_button_connected_16_dark = 2130837680; + public const int ic_mr_button_connected_15_light = 2130837680; // aapt resource value: 0x7f0200b1 - public const int ic_mr_button_connected_16_light = 2130837681; + public const int ic_mr_button_connected_16_dark = 2130837681; // aapt resource value: 0x7f0200b2 - public const int ic_mr_button_connected_17_dark = 2130837682; + public const int ic_mr_button_connected_16_light = 2130837682; // aapt resource value: 0x7f0200b3 - public const int ic_mr_button_connected_17_light = 2130837683; + public const int ic_mr_button_connected_17_dark = 2130837683; // aapt resource value: 0x7f0200b4 - public const int ic_mr_button_connected_18_dark = 2130837684; + public const int ic_mr_button_connected_17_light = 2130837684; // aapt resource value: 0x7f0200b5 - public const int ic_mr_button_connected_18_light = 2130837685; + public const int ic_mr_button_connected_18_dark = 2130837685; // aapt resource value: 0x7f0200b6 - public const int ic_mr_button_connected_19_dark = 2130837686; + public const int ic_mr_button_connected_18_light = 2130837686; // aapt resource value: 0x7f0200b7 - public const int ic_mr_button_connected_19_light = 2130837687; + public const int ic_mr_button_connected_19_dark = 2130837687; // aapt resource value: 0x7f0200b8 - public const int ic_mr_button_connected_20_dark = 2130837688; + public const int ic_mr_button_connected_19_light = 2130837688; // aapt resource value: 0x7f0200b9 - public const int ic_mr_button_connected_20_light = 2130837689; + public const int ic_mr_button_connected_20_dark = 2130837689; // aapt resource value: 0x7f0200ba - public const int ic_mr_button_connected_21_dark = 2130837690; + public const int ic_mr_button_connected_20_light = 2130837690; // aapt resource value: 0x7f0200bb - public const int ic_mr_button_connected_21_light = 2130837691; + public const int ic_mr_button_connected_21_dark = 2130837691; // aapt resource value: 0x7f0200bc - public const int ic_mr_button_connected_22_dark = 2130837692; + public const int ic_mr_button_connected_21_light = 2130837692; // aapt resource value: 0x7f0200bd - public const int ic_mr_button_connected_22_light = 2130837693; + public const int ic_mr_button_connected_22_dark = 2130837693; // aapt resource value: 0x7f0200be - public const int ic_mr_button_connected_23_dark = 2130837694; + public const int ic_mr_button_connected_22_light = 2130837694; // aapt resource value: 0x7f0200bf - public const int ic_mr_button_connected_23_light = 2130837695; + public const int ic_mr_button_connected_23_dark = 2130837695; // aapt resource value: 0x7f0200c0 - public const int ic_mr_button_connected_24_dark = 2130837696; + public const int ic_mr_button_connected_23_light = 2130837696; // aapt resource value: 0x7f0200c1 - public const int ic_mr_button_connected_24_light = 2130837697; + public const int ic_mr_button_connected_24_dark = 2130837697; // aapt resource value: 0x7f0200c2 - public const int ic_mr_button_connected_25_dark = 2130837698; + public const int ic_mr_button_connected_24_light = 2130837698; // aapt resource value: 0x7f0200c3 - public const int ic_mr_button_connected_25_light = 2130837699; + public const int ic_mr_button_connected_25_dark = 2130837699; // aapt resource value: 0x7f0200c4 - public const int ic_mr_button_connected_26_dark = 2130837700; + public const int ic_mr_button_connected_25_light = 2130837700; // aapt resource value: 0x7f0200c5 - public const int ic_mr_button_connected_26_light = 2130837701; + public const int ic_mr_button_connected_26_dark = 2130837701; // aapt resource value: 0x7f0200c6 - public const int ic_mr_button_connected_27_dark = 2130837702; + public const int ic_mr_button_connected_26_light = 2130837702; // aapt resource value: 0x7f0200c7 - public const int ic_mr_button_connected_27_light = 2130837703; + public const int ic_mr_button_connected_27_dark = 2130837703; // aapt resource value: 0x7f0200c8 - public const int ic_mr_button_connected_28_dark = 2130837704; + public const int ic_mr_button_connected_27_light = 2130837704; // aapt resource value: 0x7f0200c9 - public const int ic_mr_button_connected_28_light = 2130837705; + public const int ic_mr_button_connected_28_dark = 2130837705; // aapt resource value: 0x7f0200ca - public const int ic_mr_button_connected_29_dark = 2130837706; + public const int ic_mr_button_connected_28_light = 2130837706; // aapt resource value: 0x7f0200cb - public const int ic_mr_button_connected_29_light = 2130837707; + public const int ic_mr_button_connected_29_dark = 2130837707; // aapt resource value: 0x7f0200cc - public const int ic_mr_button_connected_30_dark = 2130837708; + public const int ic_mr_button_connected_29_light = 2130837708; // aapt resource value: 0x7f0200cd - public const int ic_mr_button_connected_30_light = 2130837709; + public const int ic_mr_button_connected_30_dark = 2130837709; // aapt resource value: 0x7f0200ce - public const int ic_mr_button_connecting_00_dark = 2130837710; + public const int ic_mr_button_connected_30_light = 2130837710; // aapt resource value: 0x7f0200cf - public const int ic_mr_button_connecting_00_light = 2130837711; + public const int ic_mr_button_connecting_00_dark = 2130837711; // aapt resource value: 0x7f0200d0 - public const int ic_mr_button_connecting_01_dark = 2130837712; + public const int ic_mr_button_connecting_00_light = 2130837712; // aapt resource value: 0x7f0200d1 - public const int ic_mr_button_connecting_01_light = 2130837713; + public const int ic_mr_button_connecting_01_dark = 2130837713; // aapt resource value: 0x7f0200d2 - public const int ic_mr_button_connecting_02_dark = 2130837714; + public const int ic_mr_button_connecting_01_light = 2130837714; // aapt resource value: 0x7f0200d3 - public const int ic_mr_button_connecting_02_light = 2130837715; + public const int ic_mr_button_connecting_02_dark = 2130837715; // aapt resource value: 0x7f0200d4 - public const int ic_mr_button_connecting_03_dark = 2130837716; + public const int ic_mr_button_connecting_02_light = 2130837716; // aapt resource value: 0x7f0200d5 - public const int ic_mr_button_connecting_03_light = 2130837717; + public const int ic_mr_button_connecting_03_dark = 2130837717; // aapt resource value: 0x7f0200d6 - public const int ic_mr_button_connecting_04_dark = 2130837718; + public const int ic_mr_button_connecting_03_light = 2130837718; // aapt resource value: 0x7f0200d7 - public const int ic_mr_button_connecting_04_light = 2130837719; + public const int ic_mr_button_connecting_04_dark = 2130837719; // aapt resource value: 0x7f0200d8 - public const int ic_mr_button_connecting_05_dark = 2130837720; + public const int ic_mr_button_connecting_04_light = 2130837720; // aapt resource value: 0x7f0200d9 - public const int ic_mr_button_connecting_05_light = 2130837721; + public const int ic_mr_button_connecting_05_dark = 2130837721; // aapt resource value: 0x7f0200da - public const int ic_mr_button_connecting_06_dark = 2130837722; + public const int ic_mr_button_connecting_05_light = 2130837722; // aapt resource value: 0x7f0200db - public const int ic_mr_button_connecting_06_light = 2130837723; + public const int ic_mr_button_connecting_06_dark = 2130837723; // aapt resource value: 0x7f0200dc - public const int ic_mr_button_connecting_07_dark = 2130837724; + public const int ic_mr_button_connecting_06_light = 2130837724; // aapt resource value: 0x7f0200dd - public const int ic_mr_button_connecting_07_light = 2130837725; + public const int ic_mr_button_connecting_07_dark = 2130837725; // aapt resource value: 0x7f0200de - public const int ic_mr_button_connecting_08_dark = 2130837726; + public const int ic_mr_button_connecting_07_light = 2130837726; // aapt resource value: 0x7f0200df - public const int ic_mr_button_connecting_08_light = 2130837727; + public const int ic_mr_button_connecting_08_dark = 2130837727; // aapt resource value: 0x7f0200e0 - public const int ic_mr_button_connecting_09_dark = 2130837728; + public const int ic_mr_button_connecting_08_light = 2130837728; // aapt resource value: 0x7f0200e1 - public const int ic_mr_button_connecting_09_light = 2130837729; + public const int ic_mr_button_connecting_09_dark = 2130837729; // aapt resource value: 0x7f0200e2 - public const int ic_mr_button_connecting_10_dark = 2130837730; + public const int ic_mr_button_connecting_09_light = 2130837730; // aapt resource value: 0x7f0200e3 - public const int ic_mr_button_connecting_10_light = 2130837731; + public const int ic_mr_button_connecting_10_dark = 2130837731; // aapt resource value: 0x7f0200e4 - public const int ic_mr_button_connecting_11_dark = 2130837732; + public const int ic_mr_button_connecting_10_light = 2130837732; // aapt resource value: 0x7f0200e5 - public const int ic_mr_button_connecting_11_light = 2130837733; + public const int ic_mr_button_connecting_11_dark = 2130837733; // aapt resource value: 0x7f0200e6 - public const int ic_mr_button_connecting_12_dark = 2130837734; + public const int ic_mr_button_connecting_11_light = 2130837734; // aapt resource value: 0x7f0200e7 - public const int ic_mr_button_connecting_12_light = 2130837735; + public const int ic_mr_button_connecting_12_dark = 2130837735; // aapt resource value: 0x7f0200e8 - public const int ic_mr_button_connecting_13_dark = 2130837736; + public const int ic_mr_button_connecting_12_light = 2130837736; // aapt resource value: 0x7f0200e9 - public const int ic_mr_button_connecting_13_light = 2130837737; + public const int ic_mr_button_connecting_13_dark = 2130837737; // aapt resource value: 0x7f0200ea - public const int ic_mr_button_connecting_14_dark = 2130837738; + public const int ic_mr_button_connecting_13_light = 2130837738; // aapt resource value: 0x7f0200eb - public const int ic_mr_button_connecting_14_light = 2130837739; + public const int ic_mr_button_connecting_14_dark = 2130837739; // aapt resource value: 0x7f0200ec - public const int ic_mr_button_connecting_15_dark = 2130837740; + public const int ic_mr_button_connecting_14_light = 2130837740; // aapt resource value: 0x7f0200ed - public const int ic_mr_button_connecting_15_light = 2130837741; + public const int ic_mr_button_connecting_15_dark = 2130837741; // aapt resource value: 0x7f0200ee - public const int ic_mr_button_connecting_16_dark = 2130837742; + public const int ic_mr_button_connecting_15_light = 2130837742; // aapt resource value: 0x7f0200ef - public const int ic_mr_button_connecting_16_light = 2130837743; + public const int ic_mr_button_connecting_16_dark = 2130837743; // aapt resource value: 0x7f0200f0 - public const int ic_mr_button_connecting_17_dark = 2130837744; + public const int ic_mr_button_connecting_16_light = 2130837744; // aapt resource value: 0x7f0200f1 - public const int ic_mr_button_connecting_17_light = 2130837745; + public const int ic_mr_button_connecting_17_dark = 2130837745; // aapt resource value: 0x7f0200f2 - public const int ic_mr_button_connecting_18_dark = 2130837746; + public const int ic_mr_button_connecting_17_light = 2130837746; // aapt resource value: 0x7f0200f3 - public const int ic_mr_button_connecting_18_light = 2130837747; + public const int ic_mr_button_connecting_18_dark = 2130837747; // aapt resource value: 0x7f0200f4 - public const int ic_mr_button_connecting_19_dark = 2130837748; + public const int ic_mr_button_connecting_18_light = 2130837748; // aapt resource value: 0x7f0200f5 - public const int ic_mr_button_connecting_19_light = 2130837749; + public const int ic_mr_button_connecting_19_dark = 2130837749; // aapt resource value: 0x7f0200f6 - public const int ic_mr_button_connecting_20_dark = 2130837750; + public const int ic_mr_button_connecting_19_light = 2130837750; // aapt resource value: 0x7f0200f7 - public const int ic_mr_button_connecting_20_light = 2130837751; + public const int ic_mr_button_connecting_20_dark = 2130837751; // aapt resource value: 0x7f0200f8 - public const int ic_mr_button_connecting_21_dark = 2130837752; + public const int ic_mr_button_connecting_20_light = 2130837752; // aapt resource value: 0x7f0200f9 - public const int ic_mr_button_connecting_21_light = 2130837753; + public const int ic_mr_button_connecting_21_dark = 2130837753; // aapt resource value: 0x7f0200fa - public const int ic_mr_button_connecting_22_dark = 2130837754; + public const int ic_mr_button_connecting_21_light = 2130837754; // aapt resource value: 0x7f0200fb - public const int ic_mr_button_connecting_22_light = 2130837755; + public const int ic_mr_button_connecting_22_dark = 2130837755; // aapt resource value: 0x7f0200fc - public const int ic_mr_button_connecting_23_dark = 2130837756; + public const int ic_mr_button_connecting_22_light = 2130837756; // aapt resource value: 0x7f0200fd - public const int ic_mr_button_connecting_23_light = 2130837757; + public const int ic_mr_button_connecting_23_dark = 2130837757; // aapt resource value: 0x7f0200fe - public const int ic_mr_button_connecting_24_dark = 2130837758; + public const int ic_mr_button_connecting_23_light = 2130837758; // aapt resource value: 0x7f0200ff - public const int ic_mr_button_connecting_24_light = 2130837759; + public const int ic_mr_button_connecting_24_dark = 2130837759; // aapt resource value: 0x7f020100 - public const int ic_mr_button_connecting_25_dark = 2130837760; + public const int ic_mr_button_connecting_24_light = 2130837760; // aapt resource value: 0x7f020101 - public const int ic_mr_button_connecting_25_light = 2130837761; + public const int ic_mr_button_connecting_25_dark = 2130837761; // aapt resource value: 0x7f020102 - public const int ic_mr_button_connecting_26_dark = 2130837762; + public const int ic_mr_button_connecting_25_light = 2130837762; // aapt resource value: 0x7f020103 - public const int ic_mr_button_connecting_26_light = 2130837763; + public const int ic_mr_button_connecting_26_dark = 2130837763; // aapt resource value: 0x7f020104 - public const int ic_mr_button_connecting_27_dark = 2130837764; + public const int ic_mr_button_connecting_26_light = 2130837764; // aapt resource value: 0x7f020105 - public const int ic_mr_button_connecting_27_light = 2130837765; + public const int ic_mr_button_connecting_27_dark = 2130837765; // aapt resource value: 0x7f020106 - public const int ic_mr_button_connecting_28_dark = 2130837766; + public const int ic_mr_button_connecting_27_light = 2130837766; // aapt resource value: 0x7f020107 - public const int ic_mr_button_connecting_28_light = 2130837767; + public const int ic_mr_button_connecting_28_dark = 2130837767; // aapt resource value: 0x7f020108 - public const int ic_mr_button_connecting_29_dark = 2130837768; + public const int ic_mr_button_connecting_28_light = 2130837768; // aapt resource value: 0x7f020109 - public const int ic_mr_button_connecting_29_light = 2130837769; + public const int ic_mr_button_connecting_29_dark = 2130837769; // aapt resource value: 0x7f02010a - public const int ic_mr_button_connecting_30_dark = 2130837770; + public const int ic_mr_button_connecting_29_light = 2130837770; // aapt resource value: 0x7f02010b - public const int ic_mr_button_connecting_30_light = 2130837771; + public const int ic_mr_button_connecting_30_dark = 2130837771; // aapt resource value: 0x7f02010c - public const int ic_mr_button_disabled_dark = 2130837772; + public const int ic_mr_button_connecting_30_light = 2130837772; // aapt resource value: 0x7f02010d - public const int ic_mr_button_disabled_light = 2130837773; + public const int ic_mr_button_disabled_dark = 2130837773; // aapt resource value: 0x7f02010e - public const int ic_mr_button_disconnected_dark = 2130837774; + public const int ic_mr_button_disabled_light = 2130837774; // aapt resource value: 0x7f02010f - public const int ic_mr_button_disconnected_light = 2130837775; + public const int ic_mr_button_disconnected_dark = 2130837775; // aapt resource value: 0x7f020110 - public const int ic_mr_button_grey = 2130837776; + public const int ic_mr_button_disconnected_light = 2130837776; // aapt resource value: 0x7f020111 - public const int ic_mtrl_chip_checked_black = 2130837777; + public const int ic_mr_button_grey = 2130837777; // aapt resource value: 0x7f020112 - public const int ic_mtrl_chip_checked_circle = 2130837778; + public const int ic_mtrl_chip_checked_black = 2130837778; // aapt resource value: 0x7f020113 - public const int ic_mtrl_chip_close_circle = 2130837779; + public const int ic_mtrl_chip_checked_circle = 2130837779; // aapt resource value: 0x7f020114 - public const int ic_vol_type_speaker_dark = 2130837780; + public const int ic_mtrl_chip_close_circle = 2130837780; // aapt resource value: 0x7f020115 - public const int ic_vol_type_speaker_group_dark = 2130837781; + public const int ic_vol_type_speaker_dark = 2130837781; // aapt resource value: 0x7f020116 - public const int ic_vol_type_speaker_group_light = 2130837782; + public const int ic_vol_type_speaker_group_dark = 2130837782; // aapt resource value: 0x7f020117 - public const int ic_vol_type_speaker_light = 2130837783; + public const int ic_vol_type_speaker_group_light = 2130837783; // aapt resource value: 0x7f020118 - public const int ic_vol_type_tv_dark = 2130837784; + public const int ic_vol_type_speaker_light = 2130837784; // aapt resource value: 0x7f020119 - public const int ic_vol_type_tv_light = 2130837785; + public const int ic_vol_type_tv_dark = 2130837785; // aapt resource value: 0x7f02011a - public const int icon = 2130837786; + public const int ic_vol_type_tv_light = 2130837786; // aapt resource value: 0x7f02011b - public const int id = 2130837787; + public const int icon = 2130837787; // aapt resource value: 0x7f02011c - public const int @lock = 2130837788; + public const int id = 2130837788; // aapt resource value: 0x7f02011d - public const int login = 2130837789; + public const int @lock = 2130837789; // aapt resource value: 0x7f02011e - public const int logo = 2130837790; + public const int login = 2130837790; // aapt resource value: 0x7f02011f - public const int more = 2130837791; + public const int logo = 2130837791; // aapt resource value: 0x7f020120 - public const int mr_button_connected_dark = 2130837792; + public const int more = 2130837792; // aapt resource value: 0x7f020121 - public const int mr_button_connected_light = 2130837793; + public const int mr_button_connected_dark = 2130837793; // aapt resource value: 0x7f020122 - public const int mr_button_connecting_dark = 2130837794; + public const int mr_button_connected_light = 2130837794; // aapt resource value: 0x7f020123 - public const int mr_button_connecting_light = 2130837795; + public const int mr_button_connecting_dark = 2130837795; // aapt resource value: 0x7f020124 - public const int mr_button_dark = 2130837796; + public const int mr_button_connecting_light = 2130837796; // aapt resource value: 0x7f020125 - public const int mr_button_light = 2130837797; + public const int mr_button_dark = 2130837797; // aapt resource value: 0x7f020126 - public const int mr_dialog_close_dark = 2130837798; + public const int mr_button_light = 2130837798; // aapt resource value: 0x7f020127 - public const int mr_dialog_close_light = 2130837799; + public const int mr_dialog_close_dark = 2130837799; // aapt resource value: 0x7f020128 - public const int mr_dialog_material_background_dark = 2130837800; + public const int mr_dialog_close_light = 2130837800; // aapt resource value: 0x7f020129 - public const int mr_dialog_material_background_light = 2130837801; + public const int mr_dialog_material_background_dark = 2130837801; // aapt resource value: 0x7f02012a - public const int mr_group_collapse = 2130837802; + public const int mr_dialog_material_background_light = 2130837802; // aapt resource value: 0x7f02012b - public const int mr_group_expand = 2130837803; + public const int mr_group_collapse = 2130837803; // aapt resource value: 0x7f02012c - public const int mr_media_pause_dark = 2130837804; + public const int mr_group_expand = 2130837804; // aapt resource value: 0x7f02012d - public const int mr_media_pause_light = 2130837805; + public const int mr_media_pause_dark = 2130837805; // aapt resource value: 0x7f02012e - public const int mr_media_play_dark = 2130837806; + public const int mr_media_pause_light = 2130837806; // aapt resource value: 0x7f02012f - public const int mr_media_play_light = 2130837807; + public const int mr_media_play_dark = 2130837807; // aapt resource value: 0x7f020130 - public const int mr_media_stop_dark = 2130837808; + public const int mr_media_play_light = 2130837808; // aapt resource value: 0x7f020131 - public const int mr_media_stop_light = 2130837809; + public const int mr_media_stop_dark = 2130837809; // aapt resource value: 0x7f020132 - public const int mr_vol_type_audiotrack_dark = 2130837810; + public const int mr_media_stop_light = 2130837810; // aapt resource value: 0x7f020133 - public const int mr_vol_type_audiotrack_light = 2130837811; + public const int mr_vol_type_audiotrack_dark = 2130837811; // aapt resource value: 0x7f020134 - public const int mtrl_snackbar_background = 2130837812; + public const int mr_vol_type_audiotrack_light = 2130837812; // aapt resource value: 0x7f020135 - public const int mtrl_tabs_default_indicator = 2130837813; + public const int mtrl_snackbar_background = 2130837813; // aapt resource value: 0x7f020136 - public const int navigation_empty_icon = 2130837814; + public const int mtrl_tabs_default_indicator = 2130837814; // aapt resource value: 0x7f020137 - public const int notification_action_background = 2130837815; + public const int navigation_empty_icon = 2130837815; // aapt resource value: 0x7f020138 - public const int notification_bg = 2130837816; + public const int notification_action_background = 2130837816; // aapt resource value: 0x7f020139 - public const int notification_bg_low = 2130837817; + public const int notification_bg = 2130837817; // aapt resource value: 0x7f02013a - public const int notification_bg_low_normal = 2130837818; + public const int notification_bg_low = 2130837818; // aapt resource value: 0x7f02013b - public const int notification_bg_low_pressed = 2130837819; + public const int notification_bg_low_normal = 2130837819; // aapt resource value: 0x7f02013c - public const int notification_bg_normal = 2130837820; + public const int notification_bg_low_pressed = 2130837820; // aapt resource value: 0x7f02013d - public const int notification_bg_normal_pressed = 2130837821; + public const int notification_bg_normal = 2130837821; // aapt resource value: 0x7f02013e - public const int notification_icon_background = 2130837822; + public const int notification_bg_normal_pressed = 2130837822; // aapt resource value: 0x7f02013f - public const int notification_sm = 2130837823; - - // aapt resource value: 0x7f02014b - public const int notification_template_icon_bg = 2130837835; - - // aapt resource value: 0x7f02014c - public const int notification_template_icon_low_bg = 2130837836; + public const int notification_icon_background = 2130837823; // aapt resource value: 0x7f020140 - public const int notification_tile_bg = 2130837824; + public const int notification_sm = 2130837824; + + // aapt resource value: 0x7f02014c + public const int notification_template_icon_bg = 2130837836; + + // aapt resource value: 0x7f02014d + public const int notification_template_icon_low_bg = 2130837837; // aapt resource value: 0x7f020141 - public const int notify_panel_notification_icon_bg = 2130837825; + public const int notification_tile_bg = 2130837825; // aapt resource value: 0x7f020142 - public const int pencil = 2130837826; + public const int notify_panel_notification_icon_bg = 2130837826; // aapt resource value: 0x7f020143 - public const int plus = 2130837827; + public const int pencil = 2130837827; // aapt resource value: 0x7f020144 - public const int refresh = 2130837828; + public const int plus = 2130837828; // aapt resource value: 0x7f020145 - public const int shield = 2130837829; + public const int refresh = 2130837829; // aapt resource value: 0x7f020146 - public const int slider_thumb = 2130837830; + public const int shield = 2130837830; // aapt resource value: 0x7f020147 - public const int splash_screen = 2130837831; + public const int slider_thumb = 2130837831; // aapt resource value: 0x7f020148 - public const int tooltip_frame_dark = 2130837832; + public const int splash_screen = 2130837832; // aapt resource value: 0x7f020149 - public const int tooltip_frame_light = 2130837833; + public const int tooltip_frame_dark = 2130837833; // aapt resource value: 0x7f02014a - public const int yubikey = 2130837834; + public const int tooltip_frame_light = 2130837834; + + // aapt resource value: 0x7f02014b + public const int yubikey = 2130837835; static Drawable() { @@ -8789,14 +8799,14 @@ namespace Bit.Droid // aapt resource value: 0x7f0a003b public const int FUNCTION = 2131361851; - // aapt resource value: 0x7f0a00bd - public const int FooterCellText = 2131361981; + // aapt resource value: 0x7f0a00c2 + public const int FooterCellText = 2131361986; - // aapt resource value: 0x7f0a00bf - public const int HeaderCellBorder = 2131361983; + // aapt resource value: 0x7f0a00c4 + public const int HeaderCellBorder = 2131361988; - // aapt resource value: 0x7f0a00be - public const int HeaderCellText = 2131361982; + // aapt resource value: 0x7f0a00c3 + public const int HeaderCellText = 2131361987; // aapt resource value: 0x7f0a003c public const int META = 2131361852; @@ -8807,8 +8817,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a003e public const int SYM = 2131361854; - // aapt resource value: 0x7f0a00f2 - public const int action0 = 2131362034; + // aapt resource value: 0x7f0a00f7 + public const int action0 = 2131362039; // aapt resource value: 0x7f0a008d public const int action_bar = 2131361933; @@ -8831,17 +8841,17 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0069 public const int action_bar_title = 2131361897; - // aapt resource value: 0x7f0a00ef - public const int action_container = 2131362031; + // aapt resource value: 0x7f0a00f4 + public const int action_container = 2131362036; // aapt resource value: 0x7f0a008e public const int action_context_bar = 2131361934; - // aapt resource value: 0x7f0a00f6 - public const int action_divider = 2131362038; + // aapt resource value: 0x7f0a00fb + public const int action_divider = 2131362043; - // aapt resource value: 0x7f0a00f0 - public const int action_image = 2131362032; + // aapt resource value: 0x7f0a00f5 + public const int action_image = 2131362037; // aapt resource value: 0x7f0a0003 public const int action_menu_divider = 2131361795; @@ -8858,11 +8868,11 @@ namespace Bit.Droid // aapt resource value: 0x7f0a006b public const int action_mode_close_button = 2131361899; - // aapt resource value: 0x7f0a00f1 - public const int action_text = 2131362033; + // aapt resource value: 0x7f0a00f6 + public const int action_text = 2131362038; - // aapt resource value: 0x7f0a00ff - public const int actions = 2131362047; + // aapt resource value: 0x7f0a0104 + public const int actions = 2131362052; // aapt resource value: 0x7f0a006c public const int activity_chooser_view_content = 2131361900; @@ -8918,8 +8928,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0072 public const int buttonPanel = 2131361906; - // aapt resource value: 0x7f0a00f3 - public const int cancel_action = 2131362035; + // aapt resource value: 0x7f0a00f8 + public const int cancel_action = 2131362040; // aapt resource value: 0x7f0a004c public const int center = 2131361868; @@ -8933,8 +8943,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0086 public const int checkbox = 2131361926; - // aapt resource value: 0x7f0a00fb - public const int chronometer = 2131362043; + // aapt resource value: 0x7f0a0100 + public const int chronometer = 2131362048; // aapt resource value: 0x7f0a0061 public const int clip_horizontal = 2131361889; @@ -8993,8 +9003,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0037 public const int end = 2131361847; - // aapt resource value: 0x7f0a0101 - public const int end_padder = 2131362049; + // aapt resource value: 0x7f0a0106 + public const int end_padder = 2131362054; // aapt resource value: 0x7f0a0046 public const int enterAlways = 2131361862; @@ -9023,14 +9033,29 @@ namespace Bit.Droid // aapt resource value: 0x7f0a005f public const int filled = 2131361887; + // aapt resource value: 0x7f0a00be + public const int fingerprint_btnCancel = 2131361982; + + // aapt resource value: 0x7f0a00bf + public const int fingerprint_btnFallback = 2131361983; + + // aapt resource value: 0x7f0a00bb + public const int fingerprint_imgFingerprint = 2131361979; + + // aapt resource value: 0x7f0a00bc + public const int fingerprint_txtHelp = 2131361980; + + // aapt resource value: 0x7f0a00bd + public const int fingerprint_txtReason = 2131361981; + // aapt resource value: 0x7f0a005c public const int @fixed = 2131361884; - // aapt resource value: 0x7f0a00bb - public const int flyoutcontent_appbar = 2131361979; + // aapt resource value: 0x7f0a00c0 + public const int flyoutcontent_appbar = 2131361984; - // aapt resource value: 0x7f0a00bc - public const int flyoutcontent_recycler = 2131361980; + // aapt resource value: 0x7f0a00c1 + public const int flyoutcontent_recycler = 2131361985; // aapt resource value: 0x7f0a0067 public const int forever = 2131361895; @@ -9050,8 +9075,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0071 public const int icon = 2131361905; - // aapt resource value: 0x7f0a0100 - public const int icon_group = 2131362048; + // aapt resource value: 0x7f0a0105 + public const int icon_group = 2131362053; // aapt resource value: 0x7f0a0041 public const int ifRoom = 2131361857; @@ -9059,8 +9084,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a006e public const int image = 2131361902; - // aapt resource value: 0x7f0a00fc - public const int info = 2131362044; + // aapt resource value: 0x7f0a0101 + public const int info = 2131362049; // aapt resource value: 0x7f0a0068 public const int italic = 2131361896; @@ -9089,23 +9114,23 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0070 public const int list_item = 2131361904; - // aapt resource value: 0x7f0a0102 - public const int main_appbar = 2131362050; + // aapt resource value: 0x7f0a0107 + public const int main_appbar = 2131362055; - // aapt resource value: 0x7f0a0105 - public const int main_scrollview = 2131362053; + // aapt resource value: 0x7f0a010a + public const int main_scrollview = 2131362058; - // aapt resource value: 0x7f0a0104 - public const int main_tablayout = 2131362052; + // aapt resource value: 0x7f0a0109 + public const int main_tablayout = 2131362057; - // aapt resource value: 0x7f0a0103 - public const int main_toolbar = 2131362051; + // aapt resource value: 0x7f0a0108 + public const int main_toolbar = 2131362056; - // aapt resource value: 0x7f0a010c - public const int masked = 2131362060; + // aapt resource value: 0x7f0a0111 + public const int masked = 2131362065; - // aapt resource value: 0x7f0a00f5 - public const int media_actions = 2131362037; + // aapt resource value: 0x7f0a00fa + public const int media_actions = 2131362042; // aapt resource value: 0x7f0a009c public const int message = 2131361948; @@ -9116,143 +9141,143 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0059 public const int mini = 2131361881; - // aapt resource value: 0x7f0a00dc - public const int mr_art = 2131362012; - - // aapt resource value: 0x7f0a00cd - public const int mr_cast_checkbox = 2131361997; - - // aapt resource value: 0x7f0a00c6 - public const int mr_cast_close_button = 2131361990; - - // aapt resource value: 0x7f0a00c1 - public const int mr_cast_group_icon = 2131361985; - - // aapt resource value: 0x7f0a00c2 - public const int mr_cast_group_name = 2131361986; - - // aapt resource value: 0x7f0a00c0 - public const int mr_cast_list = 2131361984; - - // aapt resource value: 0x7f0a00c5 - public const int mr_cast_meta = 2131361989; - - // aapt resource value: 0x7f0a00c7 - public const int mr_cast_meta_art = 2131361991; - - // aapt resource value: 0x7f0a00c9 - public const int mr_cast_meta_subtitle = 2131361993; - - // aapt resource value: 0x7f0a00c8 - public const int mr_cast_meta_title = 2131361992; - - // aapt resource value: 0x7f0a00cb - public const int mr_cast_route_icon = 2131361995; - - // aapt resource value: 0x7f0a00cc - public const int mr_cast_route_name = 2131361996; - - // aapt resource value: 0x7f0a00ca - public const int mr_cast_stop_button = 2131361994; - - // aapt resource value: 0x7f0a00ce - public const int mr_cast_volume_layout = 2131361998; - - // aapt resource value: 0x7f0a00cf - public const int mr_cast_volume_slider = 2131361999; - - // aapt resource value: 0x7f0a00d1 - public const int mr_chooser_list = 2131362001; - - // aapt resource value: 0x7f0a00d4 - public const int mr_chooser_route_desc = 2131362004; + // aapt resource value: 0x7f0a00e1 + public const int mr_art = 2131362017; // aapt resource value: 0x7f0a00d2 - public const int mr_chooser_route_icon = 2131362002; + public const int mr_cast_checkbox = 2131362002; - // aapt resource value: 0x7f0a00d3 - public const int mr_chooser_route_name = 2131362003; + // aapt resource value: 0x7f0a00cb + public const int mr_cast_close_button = 2131361995; + + // aapt resource value: 0x7f0a00c6 + public const int mr_cast_group_icon = 2131361990; + + // aapt resource value: 0x7f0a00c7 + public const int mr_cast_group_name = 2131361991; + + // aapt resource value: 0x7f0a00c5 + public const int mr_cast_list = 2131361989; + + // aapt resource value: 0x7f0a00ca + public const int mr_cast_meta = 2131361994; + + // aapt resource value: 0x7f0a00cc + public const int mr_cast_meta_art = 2131361996; + + // aapt resource value: 0x7f0a00ce + public const int mr_cast_meta_subtitle = 2131361998; + + // aapt resource value: 0x7f0a00cd + public const int mr_cast_meta_title = 2131361997; // aapt resource value: 0x7f0a00d0 - public const int mr_chooser_title = 2131362000; + public const int mr_cast_route_icon = 2131362000; - // aapt resource value: 0x7f0a00d9 - public const int mr_close = 2131362009; + // aapt resource value: 0x7f0a00d1 + public const int mr_cast_route_name = 2131362001; - // aapt resource value: 0x7f0a00df - public const int mr_control_divider = 2131362015; + // aapt resource value: 0x7f0a00cf + public const int mr_cast_stop_button = 2131361999; - // aapt resource value: 0x7f0a00ea - public const int mr_control_playback_ctrl = 2131362026; + // aapt resource value: 0x7f0a00d3 + public const int mr_cast_volume_layout = 2131362003; - // aapt resource value: 0x7f0a00ed - public const int mr_control_subtitle = 2131362029; - - // aapt resource value: 0x7f0a00ec - public const int mr_control_title = 2131362028; - - // aapt resource value: 0x7f0a00eb - public const int mr_control_title_container = 2131362027; - - // aapt resource value: 0x7f0a00da - public const int mr_custom_control = 2131362010; - - // aapt resource value: 0x7f0a00db - public const int mr_default_control = 2131362011; + // aapt resource value: 0x7f0a00d4 + public const int mr_cast_volume_slider = 2131362004; // aapt resource value: 0x7f0a00d6 - public const int mr_dialog_area = 2131362006; + public const int mr_chooser_list = 2131362006; - // aapt resource value: 0x7f0a00e5 - public const int mr_dialog_header_name = 2131362021; - - // aapt resource value: 0x7f0a00d5 - public const int mr_expandable_area = 2131362005; - - // aapt resource value: 0x7f0a00ee - public const int mr_group_expand_collapse = 2131362030; - - // aapt resource value: 0x7f0a00c3 - public const int mr_group_volume_route_name = 2131361987; - - // aapt resource value: 0x7f0a00c4 - public const int mr_group_volume_slider = 2131361988; - - // aapt resource value: 0x7f0a00dd - public const int mr_media_main_control = 2131362013; - - // aapt resource value: 0x7f0a00d8 - public const int mr_name = 2131362008; - - // aapt resource value: 0x7f0a00e6 - public const int mr_picker_close_button = 2131362022; - - // aapt resource value: 0x7f0a00e7 - public const int mr_picker_list = 2131362023; - - // aapt resource value: 0x7f0a00e8 - public const int mr_picker_route_icon = 2131362024; - - // aapt resource value: 0x7f0a00e9 - public const int mr_picker_route_name = 2131362025; - - // aapt resource value: 0x7f0a00de - public const int mr_playback_control = 2131362014; + // aapt resource value: 0x7f0a00d9 + public const int mr_chooser_route_desc = 2131362009; // aapt resource value: 0x7f0a00d7 - public const int mr_title_bar = 2131362007; + public const int mr_chooser_route_icon = 2131362007; - // aapt resource value: 0x7f0a00e0 - public const int mr_volume_control = 2131362016; + // aapt resource value: 0x7f0a00d8 + public const int mr_chooser_route_name = 2131362008; - // aapt resource value: 0x7f0a00e1 - public const int mr_volume_group_list = 2131362017; + // aapt resource value: 0x7f0a00d5 + public const int mr_chooser_title = 2131362005; - // aapt resource value: 0x7f0a00e3 - public const int mr_volume_item_icon = 2131362019; + // aapt resource value: 0x7f0a00de + public const int mr_close = 2131362014; // aapt resource value: 0x7f0a00e4 - public const int mr_volume_slider = 2131362020; + public const int mr_control_divider = 2131362020; + + // aapt resource value: 0x7f0a00ef + public const int mr_control_playback_ctrl = 2131362031; + + // aapt resource value: 0x7f0a00f2 + public const int mr_control_subtitle = 2131362034; + + // aapt resource value: 0x7f0a00f1 + public const int mr_control_title = 2131362033; + + // aapt resource value: 0x7f0a00f0 + public const int mr_control_title_container = 2131362032; + + // aapt resource value: 0x7f0a00df + public const int mr_custom_control = 2131362015; + + // aapt resource value: 0x7f0a00e0 + public const int mr_default_control = 2131362016; + + // aapt resource value: 0x7f0a00db + public const int mr_dialog_area = 2131362011; + + // aapt resource value: 0x7f0a00ea + public const int mr_dialog_header_name = 2131362026; + + // aapt resource value: 0x7f0a00da + public const int mr_expandable_area = 2131362010; + + // aapt resource value: 0x7f0a00f3 + public const int mr_group_expand_collapse = 2131362035; + + // aapt resource value: 0x7f0a00c8 + public const int mr_group_volume_route_name = 2131361992; + + // aapt resource value: 0x7f0a00c9 + public const int mr_group_volume_slider = 2131361993; + + // aapt resource value: 0x7f0a00e2 + public const int mr_media_main_control = 2131362018; + + // aapt resource value: 0x7f0a00dd + public const int mr_name = 2131362013; + + // aapt resource value: 0x7f0a00eb + public const int mr_picker_close_button = 2131362027; + + // aapt resource value: 0x7f0a00ec + public const int mr_picker_list = 2131362028; + + // aapt resource value: 0x7f0a00ed + public const int mr_picker_route_icon = 2131362029; + + // aapt resource value: 0x7f0a00ee + public const int mr_picker_route_name = 2131362030; + + // aapt resource value: 0x7f0a00e3 + public const int mr_playback_control = 2131362019; + + // aapt resource value: 0x7f0a00dc + public const int mr_title_bar = 2131362012; + + // aapt resource value: 0x7f0a00e5 + public const int mr_volume_control = 2131362021; + + // aapt resource value: 0x7f0a00e6 + public const int mr_volume_group_list = 2131362022; + + // aapt resource value: 0x7f0a00e8 + public const int mr_volume_item_icon = 2131362024; + + // aapt resource value: 0x7f0a00e9 + public const int mr_volume_slider = 2131362025; // aapt resource value: 0x7f0a0014 public const int mtrl_child_content_container = 2131361812; @@ -9275,14 +9300,14 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0025 public const int normal = 2131361829; - // aapt resource value: 0x7f0a00fe - public const int notification_background = 2131362046; + // aapt resource value: 0x7f0a0103 + public const int notification_background = 2131362051; - // aapt resource value: 0x7f0a00f8 - public const int notification_main_column = 2131362040; + // aapt resource value: 0x7f0a00fd + public const int notification_main_column = 2131362045; - // aapt resource value: 0x7f0a00f7 - public const int notification_main_column_container = 2131362039; + // aapt resource value: 0x7f0a00fc + public const int notification_main_column_container = 2131362044; // aapt resource value: 0x7f0a0060 public const int outline = 2131361888; @@ -9311,11 +9336,11 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0055 public const int right = 2131361877; - // aapt resource value: 0x7f0a00fd - public const int right_icon = 2131362045; + // aapt resource value: 0x7f0a0102 + public const int right_icon = 2131362050; - // aapt resource value: 0x7f0a00f9 - public const int right_side = 2131362041; + // aapt resource value: 0x7f0a00fe + public const int right_side = 2131362046; // aapt resource value: 0x7f0a000c public const int save_image_matrix = 2131361804; @@ -9380,14 +9405,14 @@ namespace Bit.Droid // aapt resource value: 0x7f0a004f public const int selected = 2131361871; - // aapt resource value: 0x7f0a0106 - public const int shellcontent_appbar = 2131362054; + // aapt resource value: 0x7f0a010b + public const int shellcontent_appbar = 2131362059; - // aapt resource value: 0x7f0a0108 - public const int shellcontent_scrollview = 2131362056; + // aapt resource value: 0x7f0a010d + public const int shellcontent_scrollview = 2131362061; - // aapt resource value: 0x7f0a0107 - public const int shellcontent_toolbar = 2131362055; + // aapt resource value: 0x7f0a010c + public const int shellcontent_toolbar = 2131362060; // aapt resource value: 0x7f0a0083 public const int shortcut = 2131361923; @@ -9401,8 +9426,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a002c public const int showTitle = 2131361836; - // aapt resource value: 0x7f0a0109 - public const int sliding_tabs = 2131362057; + // aapt resource value: 0x7f0a010e + public const int sliding_tabs = 2131362062; // aapt resource value: 0x7f0a00af public const int smallLabel = 2131361967; @@ -9437,8 +9462,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a0056 public const int start = 2131361878; - // aapt resource value: 0x7f0a00f4 - public const int status_bar_latest_event_content = 2131362036; + // aapt resource value: 0x7f0a00f9 + public const int status_bar_latest_event_content = 2131362041; // aapt resource value: 0x7f0a005b public const int stretch = 2131361883; @@ -9491,8 +9516,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a001a public const int textinput_helper_text = 2131361818; - // aapt resource value: 0x7f0a00fa - public const int time = 2131362042; + // aapt resource value: 0x7f0a00ff + public const int time = 2131362047; // aapt resource value: 0x7f0a0023 public const int title = 2131361827; @@ -9503,8 +9528,8 @@ namespace Bit.Droid // aapt resource value: 0x7f0a007e public const int title_template = 2131361918; - // aapt resource value: 0x7f0a010a - public const int toolbar = 2131362058; + // aapt resource value: 0x7f0a010f + public const int toolbar = 2131362063; // aapt resource value: 0x7f0a0045 public const int top = 2131361861; @@ -9545,11 +9570,11 @@ namespace Bit.Droid // aapt resource value: 0x7f0a001b public const int view_offset_helper = 2131361819; - // aapt resource value: 0x7f0a010b - public const int visible = 2131362059; + // aapt resource value: 0x7f0a0110 + public const int visible = 2131362064; - // aapt resource value: 0x7f0a00e2 - public const int volume_item_container = 2131362018; + // aapt resource value: 0x7f0a00e7 + public const int volume_item_container = 2131362023; // aapt resource value: 0x7f0a0043 public const int withText = 2131361859; @@ -9816,130 +9841,133 @@ namespace Bit.Droid public const int design_text_input_password_icon = 2130968623; // aapt resource value: 0x7f040030 - public const int FlyoutContent = 2130968624; + public const int FingerprintDialog = 2130968624; // aapt resource value: 0x7f040031 - public const int FooterCell = 2130968625; + public const int FlyoutContent = 2130968625; // aapt resource value: 0x7f040032 - public const int HeaderCell = 2130968626; + public const int FooterCell = 2130968626; // aapt resource value: 0x7f040033 - public const int mr_cast_dialog = 2130968627; + public const int HeaderCell = 2130968627; // aapt resource value: 0x7f040034 - public const int mr_cast_group_item = 2130968628; + public const int mr_cast_dialog = 2130968628; // aapt resource value: 0x7f040035 - public const int mr_cast_group_volume_item = 2130968629; + public const int mr_cast_group_item = 2130968629; // aapt resource value: 0x7f040036 - public const int mr_cast_media_metadata = 2130968630; + public const int mr_cast_group_volume_item = 2130968630; // aapt resource value: 0x7f040037 - public const int mr_cast_route_item = 2130968631; + public const int mr_cast_media_metadata = 2130968631; // aapt resource value: 0x7f040038 - public const int mr_chooser_dialog = 2130968632; + public const int mr_cast_route_item = 2130968632; // aapt resource value: 0x7f040039 - public const int mr_chooser_list_item = 2130968633; + public const int mr_chooser_dialog = 2130968633; // aapt resource value: 0x7f04003a - public const int mr_controller_material_dialog_b = 2130968634; + public const int mr_chooser_list_item = 2130968634; // aapt resource value: 0x7f04003b - public const int mr_controller_volume_item = 2130968635; + public const int mr_controller_material_dialog_b = 2130968635; // aapt resource value: 0x7f04003c - public const int mr_dialog_header_item = 2130968636; + public const int mr_controller_volume_item = 2130968636; // aapt resource value: 0x7f04003d - public const int mr_picker_dialog = 2130968637; + public const int mr_dialog_header_item = 2130968637; // aapt resource value: 0x7f04003e - public const int mr_picker_route_item = 2130968638; + public const int mr_picker_dialog = 2130968638; // aapt resource value: 0x7f04003f - public const int mr_playback_control = 2130968639; + public const int mr_picker_route_item = 2130968639; // aapt resource value: 0x7f040040 - public const int mr_volume_control = 2130968640; + public const int mr_playback_control = 2130968640; // aapt resource value: 0x7f040041 - public const int mtrl_layout_snackbar = 2130968641; + public const int mr_volume_control = 2130968641; // aapt resource value: 0x7f040042 - public const int mtrl_layout_snackbar_include = 2130968642; + public const int mtrl_layout_snackbar = 2130968642; // aapt resource value: 0x7f040043 - public const int notification_action = 2130968643; + public const int mtrl_layout_snackbar_include = 2130968643; // aapt resource value: 0x7f040044 - public const int notification_action_tombstone = 2130968644; + public const int notification_action = 2130968644; // aapt resource value: 0x7f040045 - public const int notification_media_action = 2130968645; + public const int notification_action_tombstone = 2130968645; // aapt resource value: 0x7f040046 - public const int notification_media_cancel_action = 2130968646; + public const int notification_media_action = 2130968646; // aapt resource value: 0x7f040047 - public const int notification_template_big_media = 2130968647; + public const int notification_media_cancel_action = 2130968647; // aapt resource value: 0x7f040048 - public const int notification_template_big_media_custom = 2130968648; + public const int notification_template_big_media = 2130968648; // aapt resource value: 0x7f040049 - public const int notification_template_big_media_narrow = 2130968649; + public const int notification_template_big_media_custom = 2130968649; // aapt resource value: 0x7f04004a - public const int notification_template_big_media_narrow_custom = 2130968650; + public const int notification_template_big_media_narrow = 2130968650; // aapt resource value: 0x7f04004b - public const int notification_template_custom_big = 2130968651; + public const int notification_template_big_media_narrow_custom = 2130968651; // aapt resource value: 0x7f04004c - public const int notification_template_icon_group = 2130968652; + public const int notification_template_custom_big = 2130968652; // aapt resource value: 0x7f04004d - public const int notification_template_lines_media = 2130968653; + public const int notification_template_icon_group = 2130968653; // aapt resource value: 0x7f04004e - public const int notification_template_media = 2130968654; + public const int notification_template_lines_media = 2130968654; // aapt resource value: 0x7f04004f - public const int notification_template_media_custom = 2130968655; + public const int notification_template_media = 2130968655; // aapt resource value: 0x7f040050 - public const int notification_template_part_chronometer = 2130968656; + public const int notification_template_media_custom = 2130968656; // aapt resource value: 0x7f040051 - public const int notification_template_part_time = 2130968657; + public const int notification_template_part_chronometer = 2130968657; // aapt resource value: 0x7f040052 - public const int RootLayout = 2130968658; + public const int notification_template_part_time = 2130968658; // aapt resource value: 0x7f040053 - public const int select_dialog_item_material = 2130968659; + public const int RootLayout = 2130968659; // aapt resource value: 0x7f040054 - public const int select_dialog_multichoice_material = 2130968660; + public const int select_dialog_item_material = 2130968660; // aapt resource value: 0x7f040055 - public const int select_dialog_singlechoice_material = 2130968661; + public const int select_dialog_multichoice_material = 2130968661; // aapt resource value: 0x7f040056 - public const int ShellContent = 2130968662; + public const int select_dialog_singlechoice_material = 2130968662; // aapt resource value: 0x7f040057 - public const int support_simple_spinner_dropdown_item = 2130968663; + public const int ShellContent = 2130968663; // aapt resource value: 0x7f040058 - public const int Tabbar = 2130968664; + public const int support_simple_spinner_dropdown_item = 2130968664; // aapt resource value: 0x7f040059 - public const int Toolbar = 2130968665; + public const int Tabbar = 2130968665; + + // aapt resource value: 0x7f04005a + public const int Toolbar = 2130968666; static Layout() { diff --git a/src/App/App.csproj b/src/App/App.csproj index b767773cf..1270885b1 100644 --- a/src/App/App.csproj +++ b/src/App/App.csproj @@ -12,6 +12,7 @@ + diff --git a/src/App/Pages/Settings/SettingsPageViewModel.cs b/src/App/Pages/Settings/SettingsPageViewModel.cs index 3b73236dd..f0fac9676 100644 --- a/src/App/Pages/Settings/SettingsPageViewModel.cs +++ b/src/App/Pages/Settings/SettingsPageViewModel.cs @@ -23,6 +23,8 @@ namespace Bit.App.Pages private readonly IStorageService _storageService; private readonly ISyncService _syncService; + private string _fingerprintName; + private bool _supportsFingerprint; private bool _pin; private bool _fingerprint; private string _lastSyncDate; @@ -54,12 +56,20 @@ namespace Bit.App.Pages GroupedItems = new ExtendedObservableCollection(); PageTitle = AppResources.Settings; + + _fingerprintName = AppResources.Fingerprint; + if(Device.RuntimePlatform == Device.iOS) + { + _fingerprintName = AppResources.TouchID; + // TODO: face id + } } public ExtendedObservableCollection GroupedItems { get; set; } public async Task InitAsync() { + _supportsFingerprint = await _platformUtilsService.SupportsFingerprintAsync(); var lastSync = await _syncService.GetLastSyncAsync(); if(lastSync != null) { @@ -228,7 +238,7 @@ namespace Bit.App.Pages await _storageService.RemoveAsync(Constants.PinProtectedKey); await _storageService.RemoveAsync(Constants.ProtectedPin); } - + BuildList(); } @@ -243,11 +253,19 @@ namespace Bit.App.Pages var securityItems = new List { new SettingsPageListItem { Name = AppResources.LockOptions, SubLabel = _lockOptionValue }, - new SettingsPageListItem { Name = string.Format(AppResources.UnlockWith, AppResources.Fingerprint) }, new SettingsPageListItem { Name = AppResources.UnlockWithPIN, SubLabel = _pin ? "✓" : null }, new SettingsPageListItem { Name = AppResources.LockNow }, new SettingsPageListItem { Name = AppResources.TwoStepLogin } }; + if(_supportsFingerprint) + { + var item = new SettingsPageListItem + { + Name = string.Format(AppResources.UnlockWith, _fingerprintName), + SubLabel = _fingerprint ? "✓" : null + }; + securityItems.Insert(1, item); + } var accountItems = new List { new SettingsPageListItem { Name = AppResources.ChangeMasterPassword }, diff --git a/src/App/Services/MobilePlatformUtilsService.cs b/src/App/Services/MobilePlatformUtilsService.cs index ff1427100..a35fa3347 100644 --- a/src/App/Services/MobilePlatformUtilsService.cs +++ b/src/App/Services/MobilePlatformUtilsService.cs @@ -1,6 +1,9 @@ using Bit.App.Abstractions; using Bit.App.Models; +using Bit.App.Resources; using Bit.Core.Abstractions; +using Plugin.Fingerprint; +using Plugin.Fingerprint.Abstractions; using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -184,5 +187,45 @@ namespace Bit.App.Services { return await Clipboard.GetTextAsync(); } + + public async Task SupportsFingerprintAsync() + { + try + { + return await CrossFingerprint.Current.IsAvailableAsync(); + } + catch + { + return false; + } + } + + public async Task AuthenticateFingerprintAsync(string text = null, Action fallback = null) + { + try + { + if(text == null) + { + text = AppResources.FingerprintDirection; + } + var fingerprintRequest = new AuthenticationRequestConfiguration(text) + { + AllowAlternativeAuthentication = true, + CancelTitle = AppResources.Cancel, + FallbackTitle = AppResources.LogOut + }; + var result = await CrossFingerprint.Current.AuthenticateAsync(fingerprintRequest); + if(result.Authenticated) + { + return true; + } + else if(result.Status == FingerprintAuthenticationResultStatus.FallbackRequested) + { + fallback?.Invoke(); + } + } + catch { } + return false; + } } } diff --git a/src/Core/Abstractions/IPlatformUtilsService.cs b/src/Core/Abstractions/IPlatformUtilsService.cs index 83dad6009..10a6f9bb0 100644 --- a/src/Core/Abstractions/IPlatformUtilsService.cs +++ b/src/Core/Abstractions/IPlatformUtilsService.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Threading.Tasks; using Bit.Core.Enums; @@ -25,5 +26,7 @@ namespace Bit.Core.Abstractions void ShowToast(string type, string title, string[] text, Dictionary options = null); bool SupportsU2f(); bool SupportsDuo(); + Task SupportsFingerprintAsync(); + Task AuthenticateFingerprintAsync(string text = null, Action fallback = null); } } \ No newline at end of file diff --git a/src/iOS/Info.plist b/src/iOS/Info.plist index 7ce599666..32688b6aa 100644 --- a/src/iOS/Info.plist +++ b/src/iOS/Info.plist @@ -41,5 +41,7 @@ FontAwesome.ttf MaterialIcons_Regular.ttf + NSFaceIDUsageDescription + Use Face ID to unlock your vault.