Improved message in PasswordActivity

Fixed Android 2.3 bug
This commit is contained in:
Philipp Crocoll 2013-11-30 14:44:03 +01:00
parent f4f105757b
commit 4c4d466771
9 changed files with 330 additions and 205 deletions

View File

@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.18051
// Laufzeitversion:4.0.30319.34003
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.

View File

@ -4,7 +4,7 @@
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="con" path="com.google.gdt.eclipse.managedapis.MANAGED_API_CONTAINER/drive-v2r102lv1.16.0-rc"/>
<classpathentry exported="true" kind="lib" path="C:/Users/Philipp/AppData/Local/Android/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar"/>
<classpathentry kind="output" path="bin/classes"/>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

View File

@ -4,6 +4,6 @@
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

View File

@ -285,7 +285,9 @@ namespace keepass2android
{
if (_otpInfo == null)
{
Toast.MakeText(this, GetString(Resource.String.CouldntLoadOtpAuxFile), ToastLength.Long).Show();
Toast.MakeText(this,
GetString(Resource.String.CouldntLoadOtpAuxFile) + " " + GetString(Resource.String.CouldntLoadOtpAuxFile_Hint)
, ToastLength.Long).Show();
return;
}

View File

@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.18051
// Laufzeitversion:4.0.30319.34003
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
@ -2343,8 +2343,8 @@ namespace keepass2android
// aapt resource value: 0x7f070039
public const int edit_query = 2131165241;
// aapt resource value: 0x7f0700fa
public const int enable_quickunlock = 2131165434;
// aapt resource value: 0x7f07010c
public const int enable_quickunlock = 2131165452;
// aapt resource value: 0x7f070016
public const int end = 2131165206;
@ -2565,8 +2565,8 @@ namespace keepass2android
// aapt resource value: 0x7f07008c
public const int imgoktfest = 2131165324;
// aapt resource value: 0x7f070100
public const int init_otp = 2131165440;
// aapt resource value: 0x7f0700fd
public const int init_otp = 2131165437;
// aapt resource value: 0x7f0700e6
public const int insert_element = 2131165414;
@ -2574,8 +2574,8 @@ namespace keepass2android
// aapt resource value: 0x7f0700f1
public const int keyboard = 2131165425;
// aapt resource value: 0x7f0700fd
public const int keyfileLine = 2131165437;
// aapt resource value: 0x7f0700f9
public const int keyfileLine = 2131165433;
// aapt resource value: 0x7f070087
public const int keyfile_filename = 2131165319;
@ -2583,8 +2583,8 @@ namespace keepass2android
// aapt resource value: 0x7f070085
public const int keyfile_title = 2131165317;
// aapt resource value: 0x7f0700f9
public const int kill_app = 2131165433;
// aapt resource value: 0x7f07010b
public const int kill_app = 2131165451;
// aapt resource value: 0x7f0700cb
public const int label_app_name = 2131165387;
@ -2694,56 +2694,56 @@ namespace keepass2android
// aapt resource value: 0x7f0700c6
public const int open = 2131165382;
// aapt resource value: 0x7f070104
public const int otp1 = 2131165444;
// aapt resource value: 0x7f070105
public const int otp2 = 2131165445;
// aapt resource value: 0x7f070106
public const int otp3 = 2131165446;
// aapt resource value: 0x7f070107
public const int otp4 = 2131165447;
// aapt resource value: 0x7f070108
public const int otp5 = 2131165448;
// aapt resource value: 0x7f070109
public const int otp6 = 2131165449;
// aapt resource value: 0x7f070101
public const int otp1 = 2131165441;
// aapt resource value: 0x7f070102
public const int otpEntry = 2131165442;
// aapt resource value: 0x7f0700ff
public const int otpInitView = 2131165439;
// aapt resource value: 0x7f07010a
public const int otpSecretLine = 2131165450;
// aapt resource value: 0x7f0700fe
public const int otpView = 2131165438;
public const int otp2 = 2131165442;
// aapt resource value: 0x7f070103
public const int otp_expl = 2131165443;
public const int otp3 = 2131165443;
// aapt resource value: 0x7f070101
public const int otps_pending = 2131165441;
// aapt resource value: 0x7f070104
public const int otp4 = 2131165444;
// aapt resource value: 0x7f07010c
public const int otpsecret_format_spinner = 2131165452;
// aapt resource value: 0x7f070105
public const int otp5 = 2131165445;
// aapt resource value: 0x7f070106
public const int otp6 = 2131165446;
// aapt resource value: 0x7f0700ff
public const int otpEntry = 2131165439;
// aapt resource value: 0x7f0700fc
public const int otpInitView = 2131165436;
// aapt resource value: 0x7f070107
public const int otpSecretLine = 2131165447;
// aapt resource value: 0x7f0700fb
public const int otpView = 2131165435;
// aapt resource value: 0x7f070100
public const int otp_expl = 2131165440;
// aapt resource value: 0x7f0700fe
public const int otps_pending = 2131165438;
// aapt resource value: 0x7f070109
public const int otpsecret_format_spinner = 2131165449;
// aapt resource value: 0x7f070126
public const int pass_conf_password = 2131165478;
// aapt resource value: 0x7f0700f7
public const int pass_keyfile = 2131165431;
// aapt resource value: 0x7f0700fa
public const int pass_keyfile = 2131165434;
// aapt resource value: 0x7f0700f8
public const int pass_ok = 2131165432;
// aapt resource value: 0x7f07010a
public const int pass_ok = 2131165450;
// aapt resource value: 0x7f07010b
public const int pass_otpsecret = 2131165451;
// aapt resource value: 0x7f070108
public const int pass_otpsecret = 2131165448;
// aapt resource value: 0x7f070125
public const int pass_password = 2131165477;
@ -2751,14 +2751,14 @@ namespace keepass2android
// aapt resource value: 0x7f0700d3
public const int password = 2131165395;
// aapt resource value: 0x7f0700fc
public const int passwordLine = 2131165436;
// aapt resource value: 0x7f0700f8
public const int passwordLine = 2131165432;
// aapt resource value: 0x7f0700f6
public const int password_label = 2131165430;
// aapt resource value: 0x7f0700fb
public const int password_mode_spinner = 2131165435;
// aapt resource value: 0x7f0700f7
public const int password_mode_spinner = 2131165431;
// aapt resource value: 0x7f070080
public const int password_title = 2131165312;
@ -3338,47 +3338,47 @@ namespace keepass2android
// aapt resource value: 0x7f0801cb
public const int CannotMoveGroupHere = 2131231179;
// aapt resource value: 0x7f080205
public const int ChangeLog = 2131231237;
// aapt resource value: 0x7f080204
public const int ChangeLog = 2131231236;
// aapt resource value: 0x7f080203
public const int ChangeLog_0_7 = 2131231235;
// aapt resource value: 0x7f080201
public const int ChangeLog_0_8 = 2131231233;
// aapt resource value: 0x7f080200
public const int ChangeLog_0_8_1 = 2131231232;
// aapt resource value: 0x7f0801ff
public const int ChangeLog_0_8_2 = 2131231231;
// aapt resource value: 0x7f0801fe
public const int ChangeLog_0_8_3 = 2131231230;
// aapt resource value: 0x7f0801fd
public const int ChangeLog_0_8_4 = 2131231229;
// aapt resource value: 0x7f0801fc
public const int ChangeLog_0_8_5 = 2131231228;
// aapt resource value: 0x7f0801fb
public const int ChangeLog_0_8_6 = 2131231227;
// aapt resource value: 0x7f0801fa
public const int ChangeLog_0_9 = 2131231226;
// aapt resource value: 0x7f0801f9
public const int ChangeLog_0_9_1 = 2131231225;
// aapt resource value: 0x7f0801f8
public const int ChangeLog_0_9_2 = 2131231224;
public const int ChangeLog_0_7 = 2131231236;
// aapt resource value: 0x7f080202
public const int ChangeLog_keptDonate = 2131231234;
public const int ChangeLog_0_8 = 2131231234;
// aapt resource value: 0x7f0801f7
public const int ChangeLog_title = 2131231223;
// aapt resource value: 0x7f080201
public const int ChangeLog_0_8_1 = 2131231233;
// aapt resource value: 0x7f080200
public const int ChangeLog_0_8_2 = 2131231232;
// aapt resource value: 0x7f0801ff
public const int ChangeLog_0_8_3 = 2131231231;
// aapt resource value: 0x7f0801fe
public const int ChangeLog_0_8_4 = 2131231230;
// aapt resource value: 0x7f0801fd
public const int ChangeLog_0_8_5 = 2131231229;
// aapt resource value: 0x7f0801fc
public const int ChangeLog_0_8_6 = 2131231228;
// aapt resource value: 0x7f0801fb
public const int ChangeLog_0_9 = 2131231227;
// aapt resource value: 0x7f0801fa
public const int ChangeLog_0_9_1 = 2131231226;
// aapt resource value: 0x7f0801f9
public const int ChangeLog_0_9_2 = 2131231225;
// aapt resource value: 0x7f080203
public const int ChangeLog_keptDonate = 2131231235;
// aapt resource value: 0x7f0801f8
public const int ChangeLog_title = 2131231224;
// aapt resource value: 0x7f080093
public const int CheckForFileChangesOnSave_key = 2131230867;
@ -3416,8 +3416,11 @@ namespace keepass2android
// aapt resource value: 0x7f0801ec
public const int CouldntLoadOtpAuxFile = 2131231212;
// aapt resource value: 0x7f0801f2
public const int CouldntParseOtpSecret = 2131231218;
// aapt resource value: 0x7f0801ed
public const int CouldntLoadOtpAuxFile_Hint = 2131231213;
// aapt resource value: 0x7f0801f3
public const int CouldntParseOtpSecret = 2131231219;
// aapt resource value: 0x7f0800a1
public const int CreditsText = 2131230881;
@ -3437,8 +3440,8 @@ namespace keepass2android
// aapt resource value: 0x7f0801c9
public const int ErrorOcurred = 2131231177;
// aapt resource value: 0x7f0801f4
public const int ErrorUpdatingOtpAuxFile = 2131231220;
// aapt resource value: 0x7f0801f5
public const int ErrorUpdatingOtpAuxFile = 2131231221;
// aapt resource value: 0x7f0800b9
public const int FileHandling_prefs = 2131230905;
@ -3494,8 +3497,8 @@ namespace keepass2android
// aapt resource value: 0x7f080191
public const int OpenKp2aKeyboardAutomatically_title = 2131231121;
// aapt resource value: 0x7f0801f3
public const int OtpKeyError = 2131231219;
// aapt resource value: 0x7f0801f4
public const int OtpKeyError = 2131231220;
// aapt resource value: 0x7f0801af
public const int ParsingDatabase = 2131231151;
@ -3599,8 +3602,8 @@ namespace keepass2android
// aapt resource value: 0x7f080176
public const int SaveAttachment_doneMessage = 2131231094;
// aapt resource value: 0x7f0801f5
public const int SavingOtpAuxFile = 2131231221;
// aapt resource value: 0x7f0801f6
public const int SavingOtpAuxFile = 2131231222;
// aapt resource value: 0x7f0801ab
public const int SettingPassword = 2131231147;
@ -4490,8 +4493,8 @@ namespace keepass2android
// aapt resource value: 0x7f080105
public const int list_size_title = 2131230981;
// aapt resource value: 0x7f0801f6
public const int loading = 2131231222;
// aapt resource value: 0x7f0801f7
public const int loading = 2131231223;
// aapt resource value: 0x7f080107
public const int loading_database = 2131230983;
@ -4625,14 +4628,14 @@ namespace keepass2android
// aapt resource value: 0x7f0801c8
public const int otp_aux_file = 2131231176;
// aapt resource value: 0x7f0801ef
public const int otp_discarded_because_db_open = 2131231215;
// aapt resource value: 0x7f0801ed
public const int otp_discarded_because_no_db = 2131231213;
// aapt resource value: 0x7f0801f0
public const int otp_discarded_because_db_open = 2131231216;
// aapt resource value: 0x7f0801ee
public const int otp_discarded_no_space = 2131231214;
public const int otp_discarded_because_no_db = 2131231214;
// aapt resource value: 0x7f0801ef
public const int otp_discarded_no_space = 2131231215;
// aapt resource value: 0x7f0801ea
public const int otp_explanation = 2131231210;
@ -4640,11 +4643,11 @@ namespace keepass2android
// aapt resource value: 0x7f0801eb
public const int otp_hint = 2131231211;
// aapt resource value: 0x7f0801f0
public const int otps_pending = 2131231216;
// aapt resource value: 0x7f0801f1
public const int otpsecret_hint = 2131231217;
public const int otps_pending = 2131231217;
// aapt resource value: 0x7f0801f2
public const int otpsecret_hint = 2131231218;
// aapt resource value: 0x7f080129
public const int pass_filename = 2131231017;

View File

@ -1,99 +1,218 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:id="@+id/filename_group"
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/filename_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pass_filename" />
<ImageView
android:id="@+id/divider1"
android:layout_height="match_parent"
android:layout_marginLeft="12dip"
android:layout_marginRight="12dip"
android:layout_marginBottom="12dip"
android:orientation="vertical"
>
<RelativeLayout
android:id="@+id/filename_group"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/filename_label"
android:scaleType="fitXY"
android:src="@android:drawable/divider_horizontal_dark" />
<HorizontalScrollView
android:id="@+id/filenamescroll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/divider1">
android:layout_height="wrap_content">
<TextView
android:id="@+id/filename"
style="@style/GroupText"
android:id="@+id/filename_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance_SmallHeading"
android:text="@string/pass_filename" />
<ImageView
android:id="@+id/divider1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="none"
android:focusable="true"
android:focusableInTouchMode="true" />
</HorizontalScrollView>
<ImageView
android:id="@+id/divider2"
android:layout_below="@id/filename_label"
android:scaleType="fitXY"
android:src="@android:drawable/divider_horizontal_dark" />
<HorizontalScrollView
android:id="@+id/filenamescroll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/divider1">
<TextView
android:id="@+id/filename"
style="@style/GroupText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="none"
android:focusable="true"
android:focusableInTouchMode="true" />
</HorizontalScrollView>
<ImageView
android:id="@+id/divider2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/filenamescroll"
android:scaleType="fitXY"
android:src="@android:drawable/divider_horizontal_dark" />
</RelativeLayout>
<TextView
android:id="@+id/password_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:text="@string/master_key_type" />
<Spinner
android:id="@+id/password_mode_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/password_modes"
/>
<LinearLayout
android:id="@+id/passwordLine"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/filenamescroll"
android:scaleType="fitXY"
android:src="@android:drawable/divider_horizontal_dark" />
</RelativeLayout>
<TextView
android:id="@+id/password_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/filename_group"
android:text="" />
<ImageButton
android:id="@+id/toggle_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_menu_view"
android:layout_below="@id/password_label"
android:layout_alignParentRight="true" />
<EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/password_label"
android:singleLine="true"
android:inputType="textPassword"
android:layout_toLeftOf="@id/toggle_password"
android:hint="@string/hint_login_pass" />
<ImageButton
android:id="@+id/browse_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_folder_small"
android:layout_below="@id/password"
android:layout_alignParentRight="true" />
<EditText
android:id="@+id/pass_keyfile"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/password"
android:layout_toLeftOf="@id/browse_button"
android:singleLine="true"
android:hint="@string/entry_keyfile" />
<Button
android:id="@+id/pass_ok"
android:text="@android:string/ok"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/pass_keyfile" />
<Button
android:id="@+id/kill_app"
android:text="@string/kill_app_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/pass_ok" />
<CheckBox
android:id="@+id/enable_quickunlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/kill_app"
android:text="@string/enable_quickunlock" />
</RelativeLayout>
android:baselineAligned="false"
android:orientation="horizontal">
<EditText
android:id="@+id/password"
android:layout_width="0px"
android:layout_height="wrap_content"
android:singleLine="true"
android:inputType="textPassword"
android:layout_weight="1"
android:layout_gravity="bottom"
android:hint="@string/hint_login_pass" />
<ImageButton
android:id="@+id/toggle_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_menu_view" />
</LinearLayout>
<LinearLayout
android:id="@+id/keyfileLine"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:orientation="horizontal">
<EditText
android:id="@+id/pass_keyfile"
android:layout_width="0px"
android:layout_height="wrap_content"
android:singleLine="true"
android:layout_weight="1"
android:layout_gravity="bottom"
android:hint="@string/entry_keyfile" />
<ImageButton
android:id="@+id/browse_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_folder_small" />
</LinearLayout>
<LinearLayout
android:id="@+id/otpView"
android:layout_marginLeft="12dip"
android:layout_marginRight="12dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:id="@+id/otpInitView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<Button
android:id="@+id/init_otp"
android:text="@string/init_otp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/otps_pending"
android:text="@string/otps_pending"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/otpEntry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="vertical"
>
<TextView
android:id="@+id/otp_expl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/otp_explanation" />
<EditText
android:id="@+id/otp1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="93317749"
android:singleLine="true" />
<EditText
android:id="@+id/otp2"
android:text="54719327"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true" />
<EditText
android:id="@+id/otp3"
android:text="49844651"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true" />
<EditText
android:id="@+id/otp4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true" />
<EditText
android:id="@+id/otp5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true" />
<EditText
android:id="@+id/otp6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/otpSecretLine"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/pass_otpsecret"
android:layout_width="0px"
android:layout_height="wrap_content"
android:singleLine="true"
android:layout_weight="1"
android:hint="@string/otpsecret_hint" />
<Spinner
android:id="@+id/otpsecret_format_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<Button
android:id="@+id/pass_ok"
android:text="@android:string/ok"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/kill_app"
android:text="@string/kill_app_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/enable_quickunlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/enable_quickunlock" />
</LinearLayout>
</ScrollView>

View File

@ -360,6 +360,7 @@
<string name="otp_explanation">Enter the next One-time-passwords (OTPs). Swipe your Yubikey NEO at the back of your device to enter via NFC.</string>
<string name="otp_hint">OTP %1$d</string>
<string name="CouldntLoadOtpAuxFile">Could not load auxiliary OTP file!</string>
<string name="CouldntLoadOtpAuxFile_Hint">Please use the OtpKeyProv plugin in KeePass 2.x (PC) to configure your database for use with OTPs!</string>
<string name="otp_discarded_because_no_db">Please select database first. OTP is discarded for security reasons.</string>
<string name="otp_discarded_no_space">OTP discarded: All OTPs already entered!</string>
<string name="otp_discarded_because_db_open">Please close database first. OTP is discarded.</string>