mirror of
https://github.com/bitwarden/android.git
synced 2025-03-29 00:59:19 +03:00
support for appconfig settings (#727)
This commit is contained in:
parent
89f26bbc6b
commit
1fb3698ba2
11 changed files with 377 additions and 249 deletions
|
@ -119,6 +119,7 @@
|
|||
<Compile Include="Push\FirebaseInstanceIdService.cs" />
|
||||
<Compile Include="Push\FirebaseMessagingService.cs" />
|
||||
<Compile Include="Receivers\ClearClipboardAlarmReceiver.cs" />
|
||||
<Compile Include="Receivers\RestrictionsChangedReceiver.cs" />
|
||||
<Compile Include="Receivers\EventUploadReceiver.cs" />
|
||||
<Compile Include="Receivers\LockAlarmReceiver.cs" />
|
||||
<Compile Include="Receivers\PackageReplacedReceiver.cs" />
|
||||
|
@ -553,5 +554,11 @@
|
|||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi\accessibility_permission.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\xml\app_restrictions.xml">
|
||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
||||
</Project>
|
|
@ -151,6 +151,7 @@ namespace Bit.Droid
|
|||
}
|
||||
catch { }
|
||||
}
|
||||
var setRestrictions = AndroidHelpers.SetPreconfiguredRestrictionSettingsAsync(this);
|
||||
}
|
||||
|
||||
protected override void OnNewIntent(Intent intent)
|
||||
|
|
|
@ -54,5 +54,6 @@
|
|||
</receiver>
|
||||
|
||||
<meta-data android:name="android.max_aspect" android:value="2.1" />
|
||||
<meta-data android:name="android.content.APP_RESTRICTIONS" android:resource="@xml/app_restrictions" />
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
23
src/Android/Receivers/RestrictionsChangedReceiver.cs
Normal file
23
src/Android/Receivers/RestrictionsChangedReceiver.cs
Normal file
|
@ -0,0 +1,23 @@
|
|||
using System.Collections.Generic;
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Bit.App.Utilities;
|
||||
using Bit.Core.Abstractions;
|
||||
using Bit.Core.Utilities;
|
||||
using Bit.Droid.Utilities;
|
||||
|
||||
namespace Bit.Droid.Receivers
|
||||
{
|
||||
[BroadcastReceiver(Name = "com.x8bit.bitwarden.RestrictionsChangedReceiver", Exported = false)]
|
||||
[IntentFilter(new[] { Intent.ActionApplicationRestrictionsChanged })]
|
||||
public class RestrictionsChangedReceiver : BroadcastReceiver
|
||||
{
|
||||
public async override void OnReceive(Context context, Intent intent)
|
||||
{
|
||||
if(intent.Action == Intent.ActionApplicationRestrictionsChanged)
|
||||
{
|
||||
await AndroidHelpers.SetPreconfiguredRestrictionSettingsAsync(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
493
src/Android/Resources/Resource.designer.cs
generated
493
src/Android/Resources/Resource.designer.cs
generated
|
@ -10433,125 +10433,125 @@ namespace Bit.Droid
|
|||
public partial class String
|
||||
{
|
||||
|
||||
// aapt resource value: 0x7F0D0006
|
||||
public const int abc_action_bar_home_description = 2131558406;
|
||||
|
||||
// aapt resource value: 0x7F0D0007
|
||||
public const int abc_action_bar_up_description = 2131558407;
|
||||
|
||||
// aapt resource value: 0x7F0D0008
|
||||
public const int abc_action_menu_overflow_description = 2131558408;
|
||||
public const int abc_action_bar_home_description = 2131558408;
|
||||
|
||||
// aapt resource value: 0x7F0D0009
|
||||
public const int abc_action_mode_done = 2131558409;
|
||||
|
||||
// aapt resource value: 0x7F0D000B
|
||||
public const int abc_activitychooserview_choose_application = 2131558411;
|
||||
public const int abc_action_bar_up_description = 2131558409;
|
||||
|
||||
// aapt resource value: 0x7F0D000A
|
||||
public const int abc_activity_chooser_view_see_all = 2131558410;
|
||||
public const int abc_action_menu_overflow_description = 2131558410;
|
||||
|
||||
// aapt resource value: 0x7F0D000C
|
||||
public const int abc_capital_off = 2131558412;
|
||||
// aapt resource value: 0x7F0D000B
|
||||
public const int abc_action_mode_done = 2131558411;
|
||||
|
||||
// aapt resource value: 0x7F0D000D
|
||||
public const int abc_capital_on = 2131558413;
|
||||
public const int abc_activitychooserview_choose_application = 2131558413;
|
||||
|
||||
// aapt resource value: 0x7F0D000C
|
||||
public const int abc_activity_chooser_view_see_all = 2131558412;
|
||||
|
||||
// aapt resource value: 0x7F0D000E
|
||||
public const int abc_font_family_body_1_material = 2131558414;
|
||||
public const int abc_capital_off = 2131558414;
|
||||
|
||||
// aapt resource value: 0x7F0D000F
|
||||
public const int abc_font_family_body_2_material = 2131558415;
|
||||
public const int abc_capital_on = 2131558415;
|
||||
|
||||
// aapt resource value: 0x7F0D0010
|
||||
public const int abc_font_family_button_material = 2131558416;
|
||||
public const int abc_font_family_body_1_material = 2131558416;
|
||||
|
||||
// aapt resource value: 0x7F0D0011
|
||||
public const int abc_font_family_caption_material = 2131558417;
|
||||
public const int abc_font_family_body_2_material = 2131558417;
|
||||
|
||||
// aapt resource value: 0x7F0D0012
|
||||
public const int abc_font_family_display_1_material = 2131558418;
|
||||
public const int abc_font_family_button_material = 2131558418;
|
||||
|
||||
// aapt resource value: 0x7F0D0013
|
||||
public const int abc_font_family_display_2_material = 2131558419;
|
||||
public const int abc_font_family_caption_material = 2131558419;
|
||||
|
||||
// aapt resource value: 0x7F0D0014
|
||||
public const int abc_font_family_display_3_material = 2131558420;
|
||||
public const int abc_font_family_display_1_material = 2131558420;
|
||||
|
||||
// aapt resource value: 0x7F0D0015
|
||||
public const int abc_font_family_display_4_material = 2131558421;
|
||||
public const int abc_font_family_display_2_material = 2131558421;
|
||||
|
||||
// aapt resource value: 0x7F0D0016
|
||||
public const int abc_font_family_headline_material = 2131558422;
|
||||
public const int abc_font_family_display_3_material = 2131558422;
|
||||
|
||||
// aapt resource value: 0x7F0D0017
|
||||
public const int abc_font_family_menu_material = 2131558423;
|
||||
public const int abc_font_family_display_4_material = 2131558423;
|
||||
|
||||
// aapt resource value: 0x7F0D0018
|
||||
public const int abc_font_family_subhead_material = 2131558424;
|
||||
public const int abc_font_family_headline_material = 2131558424;
|
||||
|
||||
// aapt resource value: 0x7F0D0019
|
||||
public const int abc_font_family_title_material = 2131558425;
|
||||
public const int abc_font_family_menu_material = 2131558425;
|
||||
|
||||
// aapt resource value: 0x7F0D001A
|
||||
public const int abc_menu_alt_shortcut_label = 2131558426;
|
||||
public const int abc_font_family_subhead_material = 2131558426;
|
||||
|
||||
// aapt resource value: 0x7F0D001B
|
||||
public const int abc_menu_ctrl_shortcut_label = 2131558427;
|
||||
public const int abc_font_family_title_material = 2131558427;
|
||||
|
||||
// aapt resource value: 0x7F0D001C
|
||||
public const int abc_menu_delete_shortcut_label = 2131558428;
|
||||
public const int abc_menu_alt_shortcut_label = 2131558428;
|
||||
|
||||
// aapt resource value: 0x7F0D001D
|
||||
public const int abc_menu_enter_shortcut_label = 2131558429;
|
||||
public const int abc_menu_ctrl_shortcut_label = 2131558429;
|
||||
|
||||
// aapt resource value: 0x7F0D001E
|
||||
public const int abc_menu_function_shortcut_label = 2131558430;
|
||||
public const int abc_menu_delete_shortcut_label = 2131558430;
|
||||
|
||||
// aapt resource value: 0x7F0D001F
|
||||
public const int abc_menu_meta_shortcut_label = 2131558431;
|
||||
public const int abc_menu_enter_shortcut_label = 2131558431;
|
||||
|
||||
// aapt resource value: 0x7F0D0020
|
||||
public const int abc_menu_shift_shortcut_label = 2131558432;
|
||||
public const int abc_menu_function_shortcut_label = 2131558432;
|
||||
|
||||
// aapt resource value: 0x7F0D0021
|
||||
public const int abc_menu_space_shortcut_label = 2131558433;
|
||||
public const int abc_menu_meta_shortcut_label = 2131558433;
|
||||
|
||||
// aapt resource value: 0x7F0D0022
|
||||
public const int abc_menu_sym_shortcut_label = 2131558434;
|
||||
public const int abc_menu_shift_shortcut_label = 2131558434;
|
||||
|
||||
// aapt resource value: 0x7F0D0023
|
||||
public const int abc_prepend_shortcut_label = 2131558435;
|
||||
|
||||
// aapt resource value: 0x7F0D0025
|
||||
public const int abc_searchview_description_clear = 2131558437;
|
||||
|
||||
// aapt resource value: 0x7F0D0026
|
||||
public const int abc_searchview_description_query = 2131558438;
|
||||
|
||||
// aapt resource value: 0x7F0D0027
|
||||
public const int abc_searchview_description_search = 2131558439;
|
||||
|
||||
// aapt resource value: 0x7F0D0028
|
||||
public const int abc_searchview_description_submit = 2131558440;
|
||||
|
||||
// aapt resource value: 0x7F0D0029
|
||||
public const int abc_searchview_description_voice = 2131558441;
|
||||
public const int abc_menu_space_shortcut_label = 2131558435;
|
||||
|
||||
// aapt resource value: 0x7F0D0024
|
||||
public const int abc_search_hint = 2131558436;
|
||||
public const int abc_menu_sym_shortcut_label = 2131558436;
|
||||
|
||||
// aapt resource value: 0x7F0D0025
|
||||
public const int abc_prepend_shortcut_label = 2131558437;
|
||||
|
||||
// aapt resource value: 0x7F0D0027
|
||||
public const int abc_searchview_description_clear = 2131558439;
|
||||
|
||||
// aapt resource value: 0x7F0D0028
|
||||
public const int abc_searchview_description_query = 2131558440;
|
||||
|
||||
// aapt resource value: 0x7F0D0029
|
||||
public const int abc_searchview_description_search = 2131558441;
|
||||
|
||||
// aapt resource value: 0x7F0D002A
|
||||
public const int abc_shareactionprovider_share_with = 2131558442;
|
||||
public const int abc_searchview_description_submit = 2131558442;
|
||||
|
||||
// aapt resource value: 0x7F0D002B
|
||||
public const int abc_shareactionprovider_share_with_application = 2131558443;
|
||||
public const int abc_searchview_description_voice = 2131558443;
|
||||
|
||||
// aapt resource value: 0x7F0D0026
|
||||
public const int abc_search_hint = 2131558438;
|
||||
|
||||
// aapt resource value: 0x7F0D002C
|
||||
public const int abc_toolbar_collapse_description = 2131558444;
|
||||
public const int abc_shareactionprovider_share_with = 2131558444;
|
||||
|
||||
// aapt resource value: 0x7F0D002D
|
||||
public const int appbar_scrolling_view_behavior = 2131558445;
|
||||
public const int abc_shareactionprovider_share_with_application = 2131558445;
|
||||
|
||||
// aapt resource value: 0x7F0D002E
|
||||
public const int abc_toolbar_collapse_description = 2131558446;
|
||||
|
||||
// aapt resource value: 0x7F0D002F
|
||||
public const int appbar_scrolling_view_behavior = 2131558447;
|
||||
|
||||
// aapt resource value: 0x7F0D0000
|
||||
public const int ApplicationName = 2131558400;
|
||||
|
@ -10562,437 +10562,437 @@ namespace Bit.Droid
|
|||
// aapt resource value: 0x7F0D0002
|
||||
public const int AutoFillServiceSummary = 2131558402;
|
||||
|
||||
// aapt resource value: 0x7F0D002E
|
||||
public const int bottom_sheet_behavior = 2131558446;
|
||||
|
||||
// aapt resource value: 0x7F0D002F
|
||||
public const int character_counter_content_description = 2131558447;
|
||||
|
||||
// aapt resource value: 0x7F0D0030
|
||||
public const int character_counter_pattern = 2131558448;
|
||||
public const int bottom_sheet_behavior = 2131558448;
|
||||
|
||||
// aapt resource value: 0x7F0D0031
|
||||
public const int common_google_play_services_enable_button = 2131558449;
|
||||
public const int character_counter_content_description = 2131558449;
|
||||
|
||||
// aapt resource value: 0x7F0D0032
|
||||
public const int common_google_play_services_enable_text = 2131558450;
|
||||
public const int character_counter_pattern = 2131558450;
|
||||
|
||||
// aapt resource value: 0x7F0D0033
|
||||
public const int common_google_play_services_enable_title = 2131558451;
|
||||
public const int common_google_play_services_enable_button = 2131558451;
|
||||
|
||||
// aapt resource value: 0x7F0D0034
|
||||
public const int common_google_play_services_install_button = 2131558452;
|
||||
public const int common_google_play_services_enable_text = 2131558452;
|
||||
|
||||
// aapt resource value: 0x7F0D0035
|
||||
public const int common_google_play_services_install_text = 2131558453;
|
||||
public const int common_google_play_services_enable_title = 2131558453;
|
||||
|
||||
// aapt resource value: 0x7F0D0036
|
||||
public const int common_google_play_services_install_title = 2131558454;
|
||||
public const int common_google_play_services_install_button = 2131558454;
|
||||
|
||||
// aapt resource value: 0x7F0D0037
|
||||
public const int common_google_play_services_notification_ticker = 2131558455;
|
||||
public const int common_google_play_services_install_text = 2131558455;
|
||||
|
||||
// aapt resource value: 0x7F0D0038
|
||||
public const int common_google_play_services_unknown_issue = 2131558456;
|
||||
public const int common_google_play_services_install_title = 2131558456;
|
||||
|
||||
// aapt resource value: 0x7F0D0039
|
||||
public const int common_google_play_services_unsupported_text = 2131558457;
|
||||
public const int common_google_play_services_notification_ticker = 2131558457;
|
||||
|
||||
// aapt resource value: 0x7F0D003A
|
||||
public const int common_google_play_services_update_button = 2131558458;
|
||||
public const int common_google_play_services_unknown_issue = 2131558458;
|
||||
|
||||
// aapt resource value: 0x7F0D003B
|
||||
public const int common_google_play_services_update_text = 2131558459;
|
||||
public const int common_google_play_services_unsupported_text = 2131558459;
|
||||
|
||||
// aapt resource value: 0x7F0D003C
|
||||
public const int common_google_play_services_update_title = 2131558460;
|
||||
public const int common_google_play_services_update_button = 2131558460;
|
||||
|
||||
// aapt resource value: 0x7F0D003D
|
||||
public const int common_google_play_services_updating_text = 2131558461;
|
||||
public const int common_google_play_services_update_text = 2131558461;
|
||||
|
||||
// aapt resource value: 0x7F0D003E
|
||||
public const int common_google_play_services_wear_update_text = 2131558462;
|
||||
public const int common_google_play_services_update_title = 2131558462;
|
||||
|
||||
// aapt resource value: 0x7F0D003F
|
||||
public const int common_open_on_phone = 2131558463;
|
||||
public const int common_google_play_services_updating_text = 2131558463;
|
||||
|
||||
// aapt resource value: 0x7F0D0040
|
||||
public const int common_signin_button_text = 2131558464;
|
||||
public const int common_google_play_services_wear_update_text = 2131558464;
|
||||
|
||||
// aapt resource value: 0x7F0D0041
|
||||
public const int common_signin_button_text_long = 2131558465;
|
||||
public const int common_open_on_phone = 2131558465;
|
||||
|
||||
// aapt resource value: 0x7F0D0042
|
||||
public const int default_web_client_id = 2131558466;
|
||||
public const int common_signin_button_text = 2131558466;
|
||||
|
||||
// aapt resource value: 0x7F0D0043
|
||||
public const int fab_transformation_scrim_behavior = 2131558467;
|
||||
public const int common_signin_button_text_long = 2131558467;
|
||||
|
||||
// aapt resource value: 0x7F0D0044
|
||||
public const int fab_transformation_sheet_behavior = 2131558468;
|
||||
public const int default_web_client_id = 2131558468;
|
||||
|
||||
// aapt resource value: 0x7F0D0045
|
||||
public const int fcm_fallback_notification_channel_label = 2131558469;
|
||||
public const int fab_transformation_scrim_behavior = 2131558469;
|
||||
|
||||
// aapt resource value: 0x7F0D0046
|
||||
public const int firebase_database_url = 2131558470;
|
||||
public const int fab_transformation_sheet_behavior = 2131558470;
|
||||
|
||||
// aapt resource value: 0x7F0D0047
|
||||
public const int gcm_defaultSenderId = 2131558471;
|
||||
public const int fcm_fallback_notification_channel_label = 2131558471;
|
||||
|
||||
// aapt resource value: 0x7F0D0048
|
||||
public const int google_api_key = 2131558472;
|
||||
public const int firebase_database_url = 2131558472;
|
||||
|
||||
// aapt resource value: 0x7F0D0049
|
||||
public const int google_app_id = 2131558473;
|
||||
public const int gcm_defaultSenderId = 2131558473;
|
||||
|
||||
// aapt resource value: 0x7F0D004A
|
||||
public const int google_crash_reporting_api_key = 2131558474;
|
||||
public const int google_api_key = 2131558474;
|
||||
|
||||
// aapt resource value: 0x7F0D004B
|
||||
public const int google_storage_bucket = 2131558475;
|
||||
public const int google_app_id = 2131558475;
|
||||
|
||||
// aapt resource value: 0x7F0D004C
|
||||
public const int google_crash_reporting_api_key = 2131558476;
|
||||
|
||||
// aapt resource value: 0x7F0D004D
|
||||
public const int google_storage_bucket = 2131558477;
|
||||
|
||||
// aapt resource value: 0x7F0D0003
|
||||
public const int Hello = 2131558403;
|
||||
|
||||
// aapt resource value: 0x7F0D004C
|
||||
public const int hide_bottom_view_on_scroll_behavior = 2131558476;
|
||||
|
||||
// aapt resource value: 0x7F0D004D
|
||||
public const int hockeyapp_crash_dialog_app_name_fallback = 2131558477;
|
||||
|
||||
// aapt resource value: 0x7F0D004E
|
||||
public const int hockeyapp_crash_dialog_message = 2131558478;
|
||||
public const int hide_bottom_view_on_scroll_behavior = 2131558478;
|
||||
|
||||
// aapt resource value: 0x7F0D004F
|
||||
public const int hockeyapp_crash_dialog_negative_button = 2131558479;
|
||||
public const int hockeyapp_crash_dialog_app_name_fallback = 2131558479;
|
||||
|
||||
// aapt resource value: 0x7F0D0050
|
||||
public const int hockeyapp_crash_dialog_neutral_button = 2131558480;
|
||||
public const int hockeyapp_crash_dialog_message = 2131558480;
|
||||
|
||||
// aapt resource value: 0x7F0D0051
|
||||
public const int hockeyapp_crash_dialog_positive_button = 2131558481;
|
||||
public const int hockeyapp_crash_dialog_negative_button = 2131558481;
|
||||
|
||||
// aapt resource value: 0x7F0D0052
|
||||
public const int hockeyapp_crash_dialog_title = 2131558482;
|
||||
public const int hockeyapp_crash_dialog_neutral_button = 2131558482;
|
||||
|
||||
// aapt resource value: 0x7F0D0053
|
||||
public const int hockeyapp_dialog_error_message = 2131558483;
|
||||
public const int hockeyapp_crash_dialog_positive_button = 2131558483;
|
||||
|
||||
// aapt resource value: 0x7F0D0054
|
||||
public const int hockeyapp_dialog_error_title = 2131558484;
|
||||
public const int hockeyapp_crash_dialog_title = 2131558484;
|
||||
|
||||
// aapt resource value: 0x7F0D0055
|
||||
public const int hockeyapp_dialog_positive_button = 2131558485;
|
||||
public const int hockeyapp_dialog_error_message = 2131558485;
|
||||
|
||||
// aapt resource value: 0x7F0D0056
|
||||
public const int hockeyapp_download_failed_dialog_message = 2131558486;
|
||||
public const int hockeyapp_dialog_error_title = 2131558486;
|
||||
|
||||
// aapt resource value: 0x7F0D0057
|
||||
public const int hockeyapp_download_failed_dialog_negative_button = 2131558487;
|
||||
public const int hockeyapp_dialog_positive_button = 2131558487;
|
||||
|
||||
// aapt resource value: 0x7F0D0058
|
||||
public const int hockeyapp_download_failed_dialog_positive_button = 2131558488;
|
||||
public const int hockeyapp_download_failed_dialog_message = 2131558488;
|
||||
|
||||
// aapt resource value: 0x7F0D0059
|
||||
public const int hockeyapp_download_failed_dialog_title = 2131558489;
|
||||
public const int hockeyapp_download_failed_dialog_negative_button = 2131558489;
|
||||
|
||||
// aapt resource value: 0x7F0D005A
|
||||
public const int hockeyapp_error_install_form_unknown_sources_disabled = 2131558490;
|
||||
public const int hockeyapp_download_failed_dialog_positive_button = 2131558490;
|
||||
|
||||
// aapt resource value: 0x7F0D005B
|
||||
public const int hockeyapp_error_no_external_storage_permission = 2131558491;
|
||||
public const int hockeyapp_download_failed_dialog_title = 2131558491;
|
||||
|
||||
// aapt resource value: 0x7F0D005C
|
||||
public const int hockeyapp_error_no_network_message = 2131558492;
|
||||
public const int hockeyapp_error_install_form_unknown_sources_disabled = 2131558492;
|
||||
|
||||
// aapt resource value: 0x7F0D005D
|
||||
public const int hockeyapp_expiry_info_text = 2131558493;
|
||||
public const int hockeyapp_error_no_external_storage_permission = 2131558493;
|
||||
|
||||
// aapt resource value: 0x7F0D005E
|
||||
public const int hockeyapp_expiry_info_title = 2131558494;
|
||||
|
||||
// aapt resource value: 0x7F0D0061
|
||||
public const int hockeyapp_feedback_attachment_added = 2131558497;
|
||||
|
||||
// aapt resource value: 0x7F0D0062
|
||||
public const int hockeyapp_feedback_attachment_button_text = 2131558498;
|
||||
|
||||
// aapt resource value: 0x7F0D0063
|
||||
public const int hockeyapp_feedback_attachment_error = 2131558499;
|
||||
|
||||
// aapt resource value: 0x7F0D0064
|
||||
public const int hockeyapp_feedback_attachment_loading = 2131558500;
|
||||
|
||||
// aapt resource value: 0x7F0D0066
|
||||
public const int hockeyapp_feedback_attachment_removed = 2131558502;
|
||||
|
||||
// aapt resource value: 0x7F0D0065
|
||||
public const int hockeyapp_feedback_attachment_remove_description = 2131558501;
|
||||
public const int hockeyapp_error_no_network_message = 2131558494;
|
||||
|
||||
// aapt resource value: 0x7F0D005F
|
||||
public const int hockeyapp_feedback_attach_file = 2131558495;
|
||||
public const int hockeyapp_expiry_info_text = 2131558495;
|
||||
|
||||
// aapt resource value: 0x7F0D0060
|
||||
public const int hockeyapp_feedback_attach_picture = 2131558496;
|
||||
public const int hockeyapp_expiry_info_title = 2131558496;
|
||||
|
||||
// aapt resource value: 0x7F0D0067
|
||||
public const int hockeyapp_feedback_email_hint = 2131558503;
|
||||
// aapt resource value: 0x7F0D0063
|
||||
public const int hockeyapp_feedback_attachment_added = 2131558499;
|
||||
|
||||
// aapt resource value: 0x7F0D0064
|
||||
public const int hockeyapp_feedback_attachment_button_text = 2131558500;
|
||||
|
||||
// aapt resource value: 0x7F0D0065
|
||||
public const int hockeyapp_feedback_attachment_error = 2131558501;
|
||||
|
||||
// aapt resource value: 0x7F0D0066
|
||||
public const int hockeyapp_feedback_attachment_loading = 2131558502;
|
||||
|
||||
// aapt resource value: 0x7F0D0068
|
||||
public const int hockeyapp_feedback_email_hint_required = 2131558504;
|
||||
public const int hockeyapp_feedback_attachment_removed = 2131558504;
|
||||
|
||||
// aapt resource value: 0x7F0D0067
|
||||
public const int hockeyapp_feedback_attachment_remove_description = 2131558503;
|
||||
|
||||
// aapt resource value: 0x7F0D0061
|
||||
public const int hockeyapp_feedback_attach_file = 2131558497;
|
||||
|
||||
// aapt resource value: 0x7F0D0062
|
||||
public const int hockeyapp_feedback_attach_picture = 2131558498;
|
||||
|
||||
// aapt resource value: 0x7F0D0069
|
||||
public const int hockeyapp_feedback_fetching_feedback_text = 2131558505;
|
||||
public const int hockeyapp_feedback_email_hint = 2131558505;
|
||||
|
||||
// aapt resource value: 0x7F0D006A
|
||||
public const int hockeyapp_feedback_last_updated_text = 2131558506;
|
||||
public const int hockeyapp_feedback_email_hint_required = 2131558506;
|
||||
|
||||
// aapt resource value: 0x7F0D006B
|
||||
public const int hockeyapp_feedback_max_attachments_allowed = 2131558507;
|
||||
public const int hockeyapp_feedback_fetching_feedback_text = 2131558507;
|
||||
|
||||
// aapt resource value: 0x7F0D006C
|
||||
public const int hockeyapp_feedback_message_hint = 2131558508;
|
||||
public const int hockeyapp_feedback_last_updated_text = 2131558508;
|
||||
|
||||
// aapt resource value: 0x7F0D006D
|
||||
public const int hockeyapp_feedback_message_hint_required = 2131558509;
|
||||
public const int hockeyapp_feedback_max_attachments_allowed = 2131558509;
|
||||
|
||||
// aapt resource value: 0x7F0D006E
|
||||
public const int hockeyapp_feedback_name_hint = 2131558510;
|
||||
public const int hockeyapp_feedback_message_hint = 2131558510;
|
||||
|
||||
// aapt resource value: 0x7F0D006F
|
||||
public const int hockeyapp_feedback_name_hint_required = 2131558511;
|
||||
public const int hockeyapp_feedback_message_hint_required = 2131558511;
|
||||
|
||||
// aapt resource value: 0x7F0D0070
|
||||
public const int hockeyapp_feedback_new_answer_notification_message = 2131558512;
|
||||
public const int hockeyapp_feedback_name_hint = 2131558512;
|
||||
|
||||
// aapt resource value: 0x7F0D0071
|
||||
public const int hockeyapp_feedback_notification_channel = 2131558513;
|
||||
public const int hockeyapp_feedback_name_hint_required = 2131558513;
|
||||
|
||||
// aapt resource value: 0x7F0D0072
|
||||
public const int hockeyapp_feedback_notification_title = 2131558514;
|
||||
public const int hockeyapp_feedback_new_answer_notification_message = 2131558514;
|
||||
|
||||
// aapt resource value: 0x7F0D0073
|
||||
public const int hockeyapp_feedback_refresh_button_text = 2131558515;
|
||||
public const int hockeyapp_feedback_notification_channel = 2131558515;
|
||||
|
||||
// aapt resource value: 0x7F0D0074
|
||||
public const int hockeyapp_feedback_response_button_text = 2131558516;
|
||||
public const int hockeyapp_feedback_notification_title = 2131558516;
|
||||
|
||||
// aapt resource value: 0x7F0D0075
|
||||
public const int hockeyapp_feedback_screenshot_fail = 2131558517;
|
||||
public const int hockeyapp_feedback_refresh_button_text = 2131558517;
|
||||
|
||||
// aapt resource value: 0x7F0D0076
|
||||
public const int hockeyapp_feedback_screenshot_notification_message = 2131558518;
|
||||
public const int hockeyapp_feedback_response_button_text = 2131558518;
|
||||
|
||||
// aapt resource value: 0x7F0D0077
|
||||
public const int hockeyapp_feedback_select_file = 2131558519;
|
||||
public const int hockeyapp_feedback_screenshot_fail = 2131558519;
|
||||
|
||||
// aapt resource value: 0x7F0D0078
|
||||
public const int hockeyapp_feedback_select_picture = 2131558520;
|
||||
|
||||
// aapt resource value: 0x7F0D007C
|
||||
public const int hockeyapp_feedback_sending_feedback_text = 2131558524;
|
||||
public const int hockeyapp_feedback_screenshot_notification_message = 2131558520;
|
||||
|
||||
// aapt resource value: 0x7F0D0079
|
||||
public const int hockeyapp_feedback_send_button_text = 2131558521;
|
||||
public const int hockeyapp_feedback_select_file = 2131558521;
|
||||
|
||||
// aapt resource value: 0x7F0D007A
|
||||
public const int hockeyapp_feedback_send_generic_error = 2131558522;
|
||||
|
||||
// aapt resource value: 0x7F0D007B
|
||||
public const int hockeyapp_feedback_send_network_error = 2131558523;
|
||||
|
||||
// aapt resource value: 0x7F0D007D
|
||||
public const int hockeyapp_feedback_sent_toast = 2131558525;
|
||||
public const int hockeyapp_feedback_select_picture = 2131558522;
|
||||
|
||||
// aapt resource value: 0x7F0D007E
|
||||
public const int hockeyapp_feedback_subject_hint = 2131558526;
|
||||
public const int hockeyapp_feedback_sending_feedback_text = 2131558526;
|
||||
|
||||
// aapt resource value: 0x7F0D007B
|
||||
public const int hockeyapp_feedback_send_button_text = 2131558523;
|
||||
|
||||
// aapt resource value: 0x7F0D007C
|
||||
public const int hockeyapp_feedback_send_generic_error = 2131558524;
|
||||
|
||||
// aapt resource value: 0x7F0D007D
|
||||
public const int hockeyapp_feedback_send_network_error = 2131558525;
|
||||
|
||||
// aapt resource value: 0x7F0D007F
|
||||
public const int hockeyapp_feedback_subject_hint_required = 2131558527;
|
||||
public const int hockeyapp_feedback_sent_toast = 2131558527;
|
||||
|
||||
// aapt resource value: 0x7F0D0080
|
||||
public const int hockeyapp_feedback_title = 2131558528;
|
||||
public const int hockeyapp_feedback_subject_hint = 2131558528;
|
||||
|
||||
// aapt resource value: 0x7F0D0081
|
||||
public const int hockeyapp_feedback_validate_email_empty = 2131558529;
|
||||
public const int hockeyapp_feedback_subject_hint_required = 2131558529;
|
||||
|
||||
// aapt resource value: 0x7F0D0082
|
||||
public const int hockeyapp_feedback_validate_email_error = 2131558530;
|
||||
public const int hockeyapp_feedback_title = 2131558530;
|
||||
|
||||
// aapt resource value: 0x7F0D0083
|
||||
public const int hockeyapp_feedback_validate_name_error = 2131558531;
|
||||
public const int hockeyapp_feedback_validate_email_empty = 2131558531;
|
||||
|
||||
// aapt resource value: 0x7F0D0084
|
||||
public const int hockeyapp_feedback_validate_subject_error = 2131558532;
|
||||
public const int hockeyapp_feedback_validate_email_error = 2131558532;
|
||||
|
||||
// aapt resource value: 0x7F0D0085
|
||||
public const int hockeyapp_feedback_validate_text_error = 2131558533;
|
||||
public const int hockeyapp_feedback_validate_name_error = 2131558533;
|
||||
|
||||
// aapt resource value: 0x7F0D0086
|
||||
public const int hockeyapp_login_email_hint_required = 2131558534;
|
||||
public const int hockeyapp_feedback_validate_subject_error = 2131558534;
|
||||
|
||||
// aapt resource value: 0x7F0D0087
|
||||
public const int hockeyapp_login_headline_text = 2131558535;
|
||||
public const int hockeyapp_feedback_validate_text_error = 2131558535;
|
||||
|
||||
// aapt resource value: 0x7F0D0088
|
||||
public const int hockeyapp_login_headline_text_email_only = 2131558536;
|
||||
public const int hockeyapp_login_email_hint_required = 2131558536;
|
||||
|
||||
// aapt resource value: 0x7F0D0089
|
||||
public const int hockeyapp_login_login_button_text = 2131558537;
|
||||
public const int hockeyapp_login_headline_text = 2131558537;
|
||||
|
||||
// aapt resource value: 0x7F0D008A
|
||||
public const int hockeyapp_login_missing_credentials_toast = 2131558538;
|
||||
public const int hockeyapp_login_headline_text_email_only = 2131558538;
|
||||
|
||||
// aapt resource value: 0x7F0D008B
|
||||
public const int hockeyapp_login_password_hint_required = 2131558539;
|
||||
public const int hockeyapp_login_login_button_text = 2131558539;
|
||||
|
||||
// aapt resource value: 0x7F0D008C
|
||||
public const int hockeyapp_paint_dialog_message = 2131558540;
|
||||
public const int hockeyapp_login_missing_credentials_toast = 2131558540;
|
||||
|
||||
// aapt resource value: 0x7F0D008D
|
||||
public const int hockeyapp_paint_dialog_negative_button = 2131558541;
|
||||
public const int hockeyapp_login_password_hint_required = 2131558541;
|
||||
|
||||
// aapt resource value: 0x7F0D008E
|
||||
public const int hockeyapp_paint_dialog_neutral_button = 2131558542;
|
||||
public const int hockeyapp_paint_dialog_message = 2131558542;
|
||||
|
||||
// aapt resource value: 0x7F0D008F
|
||||
public const int hockeyapp_paint_dialog_positive_button = 2131558543;
|
||||
public const int hockeyapp_paint_dialog_negative_button = 2131558543;
|
||||
|
||||
// aapt resource value: 0x7F0D0090
|
||||
public const int hockeyapp_paint_indicator_toast = 2131558544;
|
||||
public const int hockeyapp_paint_dialog_neutral_button = 2131558544;
|
||||
|
||||
// aapt resource value: 0x7F0D0091
|
||||
public const int hockeyapp_paint_menu_clear = 2131558545;
|
||||
public const int hockeyapp_paint_dialog_positive_button = 2131558545;
|
||||
|
||||
// aapt resource value: 0x7F0D0092
|
||||
public const int hockeyapp_paint_menu_save = 2131558546;
|
||||
public const int hockeyapp_paint_indicator_toast = 2131558546;
|
||||
|
||||
// aapt resource value: 0x7F0D0093
|
||||
public const int hockeyapp_paint_menu_undo = 2131558547;
|
||||
public const int hockeyapp_paint_menu_clear = 2131558547;
|
||||
|
||||
// aapt resource value: 0x7F0D0094
|
||||
public const int hockeyapp_update_already_installed = 2131558548;
|
||||
public const int hockeyapp_paint_menu_save = 2131558548;
|
||||
|
||||
// aapt resource value: 0x7F0D0095
|
||||
public const int hockeyapp_update_button = 2131558549;
|
||||
public const int hockeyapp_paint_menu_undo = 2131558549;
|
||||
|
||||
// aapt resource value: 0x7F0D0096
|
||||
public const int hockeyapp_update_dialog_message = 2131558550;
|
||||
public const int hockeyapp_update_already_installed = 2131558550;
|
||||
|
||||
// aapt resource value: 0x7F0D0097
|
||||
public const int hockeyapp_update_dialog_negative_button = 2131558551;
|
||||
public const int hockeyapp_update_button = 2131558551;
|
||||
|
||||
// aapt resource value: 0x7F0D0098
|
||||
public const int hockeyapp_update_dialog_positive_button = 2131558552;
|
||||
public const int hockeyapp_update_dialog_message = 2131558552;
|
||||
|
||||
// aapt resource value: 0x7F0D0099
|
||||
public const int hockeyapp_update_dialog_title = 2131558553;
|
||||
public const int hockeyapp_update_dialog_negative_button = 2131558553;
|
||||
|
||||
// aapt resource value: 0x7F0D009A
|
||||
public const int hockeyapp_update_loading = 2131558554;
|
||||
public const int hockeyapp_update_dialog_positive_button = 2131558554;
|
||||
|
||||
// aapt resource value: 0x7F0D009B
|
||||
public const int hockeyapp_update_mandatory_toast = 2131558555;
|
||||
public const int hockeyapp_update_dialog_title = 2131558555;
|
||||
|
||||
// aapt resource value: 0x7F0D009C
|
||||
public const int hockeyapp_update_newest_version = 2131558556;
|
||||
public const int hockeyapp_update_loading = 2131558556;
|
||||
|
||||
// aapt resource value: 0x7F0D009D
|
||||
public const int hockeyapp_update_no_info = 2131558557;
|
||||
public const int hockeyapp_update_mandatory_toast = 2131558557;
|
||||
|
||||
// aapt resource value: 0x7F0D009E
|
||||
public const int hockeyapp_update_restore = 2131558558;
|
||||
public const int hockeyapp_update_newest_version = 2131558558;
|
||||
|
||||
// aapt resource value: 0x7F0D009F
|
||||
public const int hockeyapp_update_title = 2131558559;
|
||||
public const int hockeyapp_update_no_info = 2131558559;
|
||||
|
||||
// aapt resource value: 0x7F0D00A0
|
||||
public const int hockeyapp_update_unknown_size = 2131558560;
|
||||
public const int hockeyapp_update_restore = 2131558560;
|
||||
|
||||
// aapt resource value: 0x7F0D00A1
|
||||
public const int hockeyapp_update_version = 2131558561;
|
||||
public const int hockeyapp_update_title = 2131558561;
|
||||
|
||||
// aapt resource value: 0x7F0D00A2
|
||||
public const int hockeyapp_update_version_details_label = 2131558562;
|
||||
public const int hockeyapp_update_unknown_size = 2131558562;
|
||||
|
||||
// aapt resource value: 0x7F0D00A3
|
||||
public const int library_name = 2131558563;
|
||||
public const int hockeyapp_update_version = 2131558563;
|
||||
|
||||
// aapt resource value: 0x7F0D00A4
|
||||
public const int mr_button_content_description = 2131558564;
|
||||
public const int hockeyapp_update_version_details_label = 2131558564;
|
||||
|
||||
// aapt resource value: 0x7F0D00A5
|
||||
public const int mr_cast_button_connected = 2131558565;
|
||||
public const int library_name = 2131558565;
|
||||
|
||||
// aapt resource value: 0x7F0D00A6
|
||||
public const int mr_cast_button_connecting = 2131558566;
|
||||
public const int mr_button_content_description = 2131558566;
|
||||
|
||||
// aapt resource value: 0x7F0D00A7
|
||||
public const int mr_cast_button_disconnected = 2131558567;
|
||||
public const int mr_cast_button_connected = 2131558567;
|
||||
|
||||
// aapt resource value: 0x7F0D00A8
|
||||
public const int mr_cast_dialog_title_view_placeholder = 2131558568;
|
||||
public const int mr_cast_button_connecting = 2131558568;
|
||||
|
||||
// aapt resource value: 0x7F0D00A9
|
||||
public const int mr_chooser_searching = 2131558569;
|
||||
public const int mr_cast_button_disconnected = 2131558569;
|
||||
|
||||
// aapt resource value: 0x7F0D00AA
|
||||
public const int mr_chooser_title = 2131558570;
|
||||
public const int mr_cast_dialog_title_view_placeholder = 2131558570;
|
||||
|
||||
// aapt resource value: 0x7F0D00AB
|
||||
public const int mr_controller_album_art = 2131558571;
|
||||
public const int mr_chooser_searching = 2131558571;
|
||||
|
||||
// aapt resource value: 0x7F0D00AC
|
||||
public const int mr_controller_casting_screen = 2131558572;
|
||||
public const int mr_chooser_title = 2131558572;
|
||||
|
||||
// aapt resource value: 0x7F0D00AD
|
||||
public const int mr_controller_close_description = 2131558573;
|
||||
public const int mr_controller_album_art = 2131558573;
|
||||
|
||||
// aapt resource value: 0x7F0D00AE
|
||||
public const int mr_controller_collapse_group = 2131558574;
|
||||
public const int mr_controller_casting_screen = 2131558574;
|
||||
|
||||
// aapt resource value: 0x7F0D00AF
|
||||
public const int mr_controller_disconnect = 2131558575;
|
||||
public const int mr_controller_close_description = 2131558575;
|
||||
|
||||
// aapt resource value: 0x7F0D00B0
|
||||
public const int mr_controller_expand_group = 2131558576;
|
||||
public const int mr_controller_collapse_group = 2131558576;
|
||||
|
||||
// aapt resource value: 0x7F0D00B1
|
||||
public const int mr_controller_no_info_available = 2131558577;
|
||||
public const int mr_controller_disconnect = 2131558577;
|
||||
|
||||
// aapt resource value: 0x7F0D00B2
|
||||
public const int mr_controller_no_media_selected = 2131558578;
|
||||
public const int mr_controller_expand_group = 2131558578;
|
||||
|
||||
// aapt resource value: 0x7F0D00B3
|
||||
public const int mr_controller_pause = 2131558579;
|
||||
public const int mr_controller_no_info_available = 2131558579;
|
||||
|
||||
// aapt resource value: 0x7F0D00B4
|
||||
public const int mr_controller_play = 2131558580;
|
||||
public const int mr_controller_no_media_selected = 2131558580;
|
||||
|
||||
// aapt resource value: 0x7F0D00B5
|
||||
public const int mr_controller_stop = 2131558581;
|
||||
public const int mr_controller_pause = 2131558581;
|
||||
|
||||
// aapt resource value: 0x7F0D00B6
|
||||
public const int mr_controller_stop_casting = 2131558582;
|
||||
public const int mr_controller_play = 2131558582;
|
||||
|
||||
// aapt resource value: 0x7F0D00B7
|
||||
public const int mr_controller_volume_slider = 2131558583;
|
||||
public const int mr_controller_stop = 2131558583;
|
||||
|
||||
// aapt resource value: 0x7F0D00B8
|
||||
public const int mr_dialog_device_header = 2131558584;
|
||||
public const int mr_controller_stop_casting = 2131558584;
|
||||
|
||||
// aapt resource value: 0x7F0D00B9
|
||||
public const int mr_dialog_route_header = 2131558585;
|
||||
public const int mr_controller_volume_slider = 2131558585;
|
||||
|
||||
// aapt resource value: 0x7F0D00BA
|
||||
public const int mr_system_route_name = 2131558586;
|
||||
public const int mr_dialog_device_header = 2131558586;
|
||||
|
||||
// aapt resource value: 0x7F0D00BB
|
||||
public const int mr_user_route_category_name = 2131558587;
|
||||
public const int mr_dialog_route_header = 2131558587;
|
||||
|
||||
// aapt resource value: 0x7F0D00BC
|
||||
public const int mtrl_chip_close_icon_content_description = 2131558588;
|
||||
public const int mr_system_route_name = 2131558588;
|
||||
|
||||
// aapt resource value: 0x7F0D00BD
|
||||
public const int mr_user_route_category_name = 2131558589;
|
||||
|
||||
// aapt resource value: 0x7F0D00BE
|
||||
public const int mtrl_chip_close_icon_content_description = 2131558590;
|
||||
|
||||
// aapt resource value: 0x7F0D0004
|
||||
public const int MyVault = 2131558404;
|
||||
|
@ -11000,26 +11000,32 @@ namespace Bit.Droid
|
|||
// aapt resource value: 0x7F0D0005
|
||||
public const int PasswordGenerator = 2131558405;
|
||||
|
||||
// aapt resource value: 0x7F0D00BD
|
||||
public const int password_toggle_content_description = 2131558589;
|
||||
|
||||
// aapt resource value: 0x7F0D00BE
|
||||
public const int path_password_eye = 2131558590;
|
||||
|
||||
// aapt resource value: 0x7F0D00BF
|
||||
public const int path_password_eye_mask_strike_through = 2131558591;
|
||||
public const int password_toggle_content_description = 2131558591;
|
||||
|
||||
// aapt resource value: 0x7F0D00C0
|
||||
public const int path_password_eye_mask_visible = 2131558592;
|
||||
public const int path_password_eye = 2131558592;
|
||||
|
||||
// aapt resource value: 0x7F0D00C1
|
||||
public const int path_password_strike_through = 2131558593;
|
||||
public const int path_password_eye_mask_strike_through = 2131558593;
|
||||
|
||||
// aapt resource value: 0x7F0D00C2
|
||||
public const int search_menu_title = 2131558594;
|
||||
public const int path_password_eye_mask_visible = 2131558594;
|
||||
|
||||
// aapt resource value: 0x7F0D00C3
|
||||
public const int status_bar_notification_info_overflow = 2131558595;
|
||||
public const int path_password_strike_through = 2131558595;
|
||||
|
||||
// aapt resource value: 0x7F0D00C4
|
||||
public const int search_menu_title = 2131558596;
|
||||
|
||||
// aapt resource value: 0x7F0D0006
|
||||
public const int SelfHostedServerUrl = 2131558406;
|
||||
|
||||
// aapt resource value: 0x7F0D0007
|
||||
public const int ServerUrl = 2131558407;
|
||||
|
||||
// aapt resource value: 0x7F0D00C5
|
||||
public const int status_bar_notification_info_overflow = 2131558597;
|
||||
|
||||
static String()
|
||||
{
|
||||
|
@ -15659,16 +15665,19 @@ namespace Bit.Droid
|
|||
public const int accessibilityservice = 2131755008;
|
||||
|
||||
// aapt resource value: 0x7F100001
|
||||
public const int autofillservice = 2131755009;
|
||||
public const int app_restrictions = 2131755009;
|
||||
|
||||
// aapt resource value: 0x7F100002
|
||||
public const int filepaths = 2131755010;
|
||||
public const int autofillservice = 2131755010;
|
||||
|
||||
// aapt resource value: 0x7F100003
|
||||
public const int network_security_config = 2131755011;
|
||||
public const int filepaths = 2131755011;
|
||||
|
||||
// aapt resource value: 0x7F100004
|
||||
public const int xamarin_essentials_fileprovider_file_paths = 2131755012;
|
||||
public const int network_security_config = 2131755012;
|
||||
|
||||
// aapt resource value: 0x7F100005
|
||||
public const int xamarin_essentials_fileprovider_file_paths = 2131755013;
|
||||
|
||||
static Xml()
|
||||
{
|
||||
|
|
|
@ -16,4 +16,10 @@
|
|||
<string name="PasswordGenerator">
|
||||
Password Generator
|
||||
</string>
|
||||
<string name="SelfHostedServerUrl">
|
||||
Self-hosted server URL
|
||||
</string>
|
||||
<string name="ServerUrl">
|
||||
Server URL
|
||||
</string>
|
||||
</resources>
|
||||
|
|
9
src/Android/Resources/xml/app_restrictions.xml
Normal file
9
src/Android/Resources/xml/app_restrictions.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<restriction
|
||||
android:key="baseEnvironmentUrl"
|
||||
android:title="@string/SelfHostedServerUrl"
|
||||
android:restrictionType="string"
|
||||
android:description="@string/ServerUrl"
|
||||
android:defaultValue="@null" />
|
||||
</restrictions>
|
|
@ -1,10 +1,15 @@
|
|||
using Android.Content;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Android.Content;
|
||||
using Android.Provider;
|
||||
using Bit.App.Utilities;
|
||||
|
||||
namespace Bit.Droid.Utilities
|
||||
{
|
||||
public static class AndroidHelpers
|
||||
{
|
||||
private static string BaseEnvironmentUrlRestrictionKey = "baseEnvironmentUrl";
|
||||
|
||||
public static string GetFileName(Context context, Android.Net.Uri uri)
|
||||
{
|
||||
string name = null;
|
||||
|
@ -26,5 +31,21 @@ namespace Bit.Droid.Utilities
|
|||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
public static async Task SetPreconfiguredRestrictionSettingsAsync(Context context)
|
||||
{
|
||||
var restrictionsManager = (RestrictionsManager)context.GetSystemService(Context.RestrictionsService);
|
||||
var restrictions = restrictionsManager.ApplicationRestrictions;
|
||||
var dict = new Dictionary<string, string>();
|
||||
if(restrictions.ContainsKey(BaseEnvironmentUrlRestrictionKey))
|
||||
{
|
||||
dict.Add(BaseEnvironmentUrlRestrictionKey, restrictions.GetString(BaseEnvironmentUrlRestrictionKey));
|
||||
}
|
||||
|
||||
if(dict.Count > 0)
|
||||
{
|
||||
await AppHelpers.SetPreconfiguredSettingsAsync(dict);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ using Bit.Core.Abstractions;
|
|||
using Bit.Core.Models.View;
|
||||
using Bit.Core.Utilities;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
|
||||
|
@ -145,5 +146,35 @@ namespace Bit.App.Utilities
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static async Task SetPreconfiguredSettingsAsync(IDictionary<string, string> configSettings)
|
||||
{
|
||||
if(configSettings?.Any() ?? true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach(var setting in configSettings)
|
||||
{
|
||||
switch(setting.Key)
|
||||
{
|
||||
case "baseEnvironmentUrl":
|
||||
var environmentService = ServiceContainer.Resolve<IEnvironmentService>("environmentService");
|
||||
if(environmentService.BaseUrl != setting.Value)
|
||||
{
|
||||
await environmentService.SetUrlsAsync(new Core.Models.Data.EnvironmentUrlData
|
||||
{
|
||||
Base = setting.Value,
|
||||
Api = environmentService.ApiUrl,
|
||||
Identity = environmentService.IdentityUrl,
|
||||
WebVault = environmentService.WebVaultUrl,
|
||||
Icons = environmentService.IconsUrl
|
||||
});
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.IO;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using Bit.App.Abstractions;
|
||||
using Bit.App.Services;
|
||||
|
@ -64,12 +65,12 @@ namespace Bit.iOS.Core.Utilities
|
|||
ServiceContainer.Register<IPlatformUtilsService>("platformUtilsService", platformUtilsService);
|
||||
}
|
||||
|
||||
public static void Bootstrap()
|
||||
public static void Bootstrap(Func<Task> postBootstrapFunc = null)
|
||||
{
|
||||
(ServiceContainer.Resolve<II18nService>("i18nService") as MobileI18nService).Init();
|
||||
ServiceContainer.Resolve<IAuthService>("authService").Init();
|
||||
// Note: This is not awaited
|
||||
var bootstrapTask = BootstrapAsync();
|
||||
var bootstrapTask = BootstrapAsync(postBootstrapFunc);
|
||||
}
|
||||
|
||||
public static void AppearanceAdjustments(IDeviceActionService deviceActionService)
|
||||
|
@ -79,13 +80,17 @@ namespace Bit.iOS.Core.Utilities
|
|||
UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;
|
||||
}
|
||||
|
||||
private static async Task BootstrapAsync()
|
||||
private static async Task BootstrapAsync(Func<Task> postBootstrapFunc = null)
|
||||
{
|
||||
var disableFavicon = await ServiceContainer.Resolve<IStorageService>("storageService").GetAsync<bool?>(
|
||||
Bit.Core.Constants.DisableFaviconKey);
|
||||
await ServiceContainer.Resolve<IStateService>("stateService").SaveAsync(
|
||||
Bit.Core.Constants.DisableFaviconKey, disableFavicon);
|
||||
await ServiceContainer.Resolve<IEnvironmentService>("environmentService").SetUrlsFromStorageAsync();
|
||||
if(postBootstrapFunc != null)
|
||||
{
|
||||
await postBootstrapFunc.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -282,7 +282,7 @@ namespace Bit.iOS
|
|||
_nfcDelegate = new NFCReaderDelegate((success, message) =>
|
||||
_messagingService.Send("gotYubiKeyOTP", message));
|
||||
|
||||
iOSCoreHelpers.Bootstrap();
|
||||
iOSCoreHelpers.Bootstrap(async () => await ApplyManagedSettingsAsync());
|
||||
}
|
||||
|
||||
private void RegisterPush()
|
||||
|
@ -475,5 +475,20 @@ namespace Bit.iOS
|
|||
UIApplication.SharedApplication.EndBackgroundTask(_eventBackgroundTaskId);
|
||||
_eventBackgroundTaskId = 0;
|
||||
}
|
||||
|
||||
private async Task ApplyManagedSettingsAsync()
|
||||
{
|
||||
var userDefaults = NSUserDefaults.StandardUserDefaults;
|
||||
var managedSettings = userDefaults.DictionaryForKey("com.apple.configuration.managed");
|
||||
if(managedSettings != null && managedSettings.Count > 0)
|
||||
{
|
||||
var dict = new Dictionary<string, string>();
|
||||
foreach(var setting in managedSettings)
|
||||
{
|
||||
dict.Add(setting.Key.ToString(), setting.Value?.ToString());
|
||||
}
|
||||
await AppHelpers.SetPreconfiguredSettingsAsync(dict);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue