Compare commits

...

1678 Commits

Author SHA1 Message Date
Philipp Crocoll
bb74305b26 remove accidentally commited code, was for testing only (into 1.08-pre3) 2019-11-06 20:52:55 +01:00
Philipp Crocoll
32549c9eff make sure biometric prompt does not show up directly after authentication (into 1.08-pre3) 2019-11-06 19:31:57 +01:00
Philipp Crocoll
83b5aa7d7b don't require confirmation for face unlock, as suggested in #795; makes it into pre3 2019-11-06 18:52:34 +01:00
Philipp Crocoll
640a2c7e88 manifest for 1.08-pre3 2019-11-06 18:28:04 +01:00
Philipp Crocoll
31aad963d6 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-11-06 18:27:37 +01:00
Philipp Crocoll
326f4282d7 fix potential crash (opening an activity without NewTask flag) 2019-11-06 18:27:24 +01:00
Philipp Crocoll
e5b3cf3db6 trust more Opera browsers 2019-11-06 17:46:26 +01:00
PhilippC
ca3e4a5135 Merge pull request #1023 from squabbi/patch-1
Update How-to-create-a-plug-in_.md
2019-11-06 11:37:50 -05:00
Jayden
c1607bbfb3 Update How-to-create-a-plug-in_.md
Fix malformed link for QR code Play Store link
2019-11-06 16:05:24 +11:00
Philipp Crocoll
0639201b4c add compatibility with steam encoding for OTPs (e.g. otpauth://totp/test:test@example.com?secret=63BEDWCQZKTQWPESARIERL5DTTQFCJTK&issuer=Valve&algorithm=SHA1&digits=5&period=30&encoder=steam) 2019-11-06 04:50:29 +01:00
Philipp Crocoll
b5fe3b8ce4 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-11-05 22:41:10 +01:00
Philipp Crocoll
2362efe5fc fix SelectCurrentDbActivity not correctly forwarding to PasswordActivity 2019-11-05 22:40:59 +01:00
Philipp Crocoll
308d8889e4 add missing permission and fix app version for 1.08-pre2 (142 was already used for pre1) 2019-11-05 21:33:14 +01:00
Philipp Crocoll
5e4ea21377 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-11-05 20:56:53 +01:00
Philipp Crocoll
45489ad600 changelog and manifest for 1.08-pre2 2019-11-05 20:56:45 +01:00
Philipp Crocoll
683cde5a8b update targetSdkVersion to 29 (Android 10/Q). Change canvas clipping in Soft keyboard to adhere to behavior changes in Android 10. Migrate to AndroidX. Migrate to using BiometricPrompt instead of FingerprintManager, keeping compatibility to SamsungPass API for devices like SGS5. Closes #795, should close #626, closes #910 2019-11-05 20:55:02 +01:00
Philipp Crocoll
8a9c781de2 packages.config to .csproj 2019-11-01 20:35:25 +01:00
PhilippC
6812998c8d Update README.md 2019-10-29 19:43:41 +01:00
Philipp Crocoll
89fda1eee5 update to target Android Q (build tools and targetSdkVersion) 2019-10-28 20:24:20 +01:00
Philipp Crocoll
0cf0170144 changelog and manifest for 1.08-pre1 2019-10-27 22:30:02 +01:00
Philipp Crocoll
cb79c8b1ff Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-10-27 22:19:57 +01:00
Philipp Crocoll
658dd6a0ec add kiwi browser to list of support autofill browsers 2019-10-27 22:11:36 +01:00
Philipp Crocoll
e6049eca2c upgrade OkHttp to 4.2.2 2019-10-27 22:11:03 +01:00
Philipp Crocoll
efcaa36325 no donate notice in changelog when using the app for one of the first times 2019-10-21 10:33:31 +02:00
Philipp Crocoll
905efd0454 Merge branch 'master' of https://github.com/PhilippC/keepass2android
# Resolved Conflicts:
#	src/keepass2android/Resources/values/strings.xml
2019-10-21 10:24:15 +02:00
Philipp Crocoll
3ce1c04cf2 Merge branch 'Branch_1.07'
# Resolved Conflicts:
#	src/keepass2android/Resources/values/strings.xml
2019-10-10 03:25:02 +02:00
Philipp Crocoll
cb979f8975 Merge remote-tracking branch 'remotes/origin/master' 2019-10-10 03:22:31 +02:00
Philipp Crocoll
cc8cea0049 manifest for 1.07b-r0 2019-10-10 03:20:48 +02:00
Philipp Crocoll
a94e6143e1 "rebase" changes to strings.xml to be in sync with translations from crowdin 2019-10-10 03:15:15 +02:00
PhilippC
699c97eaf9 New translations strings.xml (Portuguese, Brazilian) 2019-10-10 03:09:25 +02:00
PhilippC
10d4ec9bba New translations strings.xml (Portuguese) 2019-10-10 03:09:25 +02:00
PhilippC
e1f1b10f56 New translations strings.xml (French) 2019-10-10 03:09:25 +02:00
PhilippC
cfc09b8f3b New translations strings.xml (Swedish) 2019-10-10 03:09:24 +02:00
PhilippC
4c1571ff2d New translations strings.xml (Spanish) 2019-10-10 03:09:24 +02:00
PhilippC
5aea520cd1 New translations strings.xml (Portuguese, Brazilian) 2019-10-10 03:09:24 +02:00
PhilippC
00294f1aad New translations strings.xml (Portuguese) 2019-10-10 03:09:23 +02:00
PhilippC
e0fd45f838 New translations strings.xml (German) 2019-10-10 03:09:23 +02:00
PhilippC
a7e8363ed7 New translations strings.xml (Swedish) 2019-10-10 03:09:23 +02:00
PhilippC
cb144c5bcf New translations strings.xml (Swedish) 2019-10-10 03:09:23 +02:00
PhilippC
57a9570d34 New translations strings.xml (Swedish) 2019-10-10 03:09:22 +02:00
PhilippC
28162762ef New translations strings.xml (Czech) 2019-10-10 03:09:22 +02:00
PhilippC
b9e745a7fb New translations strings.xml (Czech) 2019-10-10 03:09:22 +02:00
PhilippC
e08e59c226 New translations strings.xml (Polish) 2019-10-10 03:09:21 +02:00
PhilippC
3d6b02a016 New translations strings.xml (Catalan) 2019-10-10 03:09:21 +02:00
PhilippC
b18a7b1a23 New translations strings.xml (Catalan) 2019-10-10 03:09:21 +02:00
PhilippC
8595674eb0 New translations strings.xml (Catalan) 2019-10-10 03:09:21 +02:00
PhilippC
23fd50df21 New translations strings.xml (Dutch) 2019-10-10 03:09:20 +02:00
PhilippC
af80997ed4 New translations strings.xml (Ukrainian) 2019-10-10 03:09:20 +02:00
PhilippC
7e3ac2959e New translations strings.xml (German) 2019-10-10 03:09:20 +02:00
PhilippC
78124c505e New translations strings.xml (German) 2019-10-10 03:09:19 +02:00
PhilippC
589b3f9540 New translations strings.xml (Russian) 2019-10-10 03:09:19 +02:00
PhilippC
bd505d858a New translations strings.xml (Chinese Traditional) 2019-10-10 03:09:19 +02:00
PhilippC
308909f4eb New translations strings.xml (Danish) 2019-10-10 03:09:19 +02:00
PhilippC
9cfcda2938 New translations strings.xml (Danish) 2019-10-10 03:09:18 +02:00
PhilippC
fa4887ffef New translations strings.xml (Italian) 2019-10-10 03:09:18 +02:00
PhilippC
f70f26149e New translations strings.xml (Italian) 2019-10-10 03:09:18 +02:00
PhilippC
3cc904dc18 New translations strings.xml (Danish) 2019-10-10 03:09:17 +02:00
PhilippC
16c6346797 New translations strings.xml (Japanese) 2019-10-10 03:09:17 +02:00
PhilippC
01b8f92d43 New translations strings.xml (Danish) 2019-10-10 03:09:17 +02:00
PhilippC
082f0a928f New translations strings.xml (Chinese Traditional) 2019-10-10 03:09:17 +02:00
PhilippC
2ec4d6e006 New translations strings.xml (Dutch) 2019-10-10 03:09:16 +02:00
PhilippC
7bd46b2182 New translations strings.xml (Chinese Traditional) 2019-10-10 03:09:16 +02:00
PhilippC
2e9ba3bcfc New translations strings.xml (Spanish) 2019-10-10 03:09:16 +02:00
PhilippC
551e374786 New translations strings.xml (Slovenian) 2019-10-10 03:09:15 +02:00
PhilippC
4366858b73 New translations strings.xml (Spanish) 2019-10-10 03:09:15 +02:00
PhilippC
29b7c24312 New translations strings.xml (Slovak) 2019-10-10 03:09:15 +02:00
PhilippC
3c5894db5d New translations strings.xml (Italian) 2019-10-10 03:09:15 +02:00
PhilippC
1d652272d7 New translations strings.xml (French) 2019-10-10 03:09:14 +02:00
PhilippC
d8c7f479ae New translations strings.xml (Danish) 2019-10-10 03:09:14 +02:00
PhilippC
3a0cb3fc72 New translations strings.xml (Slovak) 2019-10-10 03:09:14 +02:00
PhilippC
65f1ec8bf4 New translations strings.xml (Portuguese, Brazilian) 2019-10-10 03:09:14 +02:00
PhilippC
0421e16910 New translations strings.xml (Portuguese) 2019-10-10 03:09:13 +02:00
PhilippC
2489d8e95f New translations strings.xml (Spanish) 2019-10-10 03:09:13 +02:00
PhilippC
ac46ac7372 New translations strings.xml (Japanese) 2019-10-10 03:09:13 +02:00
PhilippC
3ed3c90dae New translations strings.xml (Japanese) 2019-10-10 03:09:12 +02:00
PhilippC
a45530393e New translations strings.xml (Spanish) 2019-10-10 03:09:12 +02:00
PhilippC
a3e4b61216 New translations strings.xml (French) 2019-10-10 03:09:12 +02:00
PhilippC
c4939dd231 New translations strings.xml (Spanish) 2019-10-10 03:09:12 +02:00
PhilippC
c20303ebf1 New translations strings.xml (Chinese Traditional) 2019-10-10 03:09:11 +02:00
PhilippC
d7627899ea New translations strings.xml (Chinese Traditional) 2019-10-10 03:09:11 +02:00
PhilippC
87f82fb23f New translations strings.xml (Chinese Traditional) 2019-10-10 03:09:11 +02:00
PhilippC
f866cdd4aa New translations strings.xml (Slovenian) 2019-10-10 03:09:10 +02:00
PhilippC
a9fc44a4a2 New translations strings.xml (Danish) 2019-10-10 03:09:10 +02:00
PhilippC
ee00e66e4f New translations strings.xml (German) 2019-10-10 03:09:10 +02:00
PhilippC
cfa97759da New translations strings.xml (Danish) 2019-10-10 03:09:10 +02:00
PhilippC
cf26b9fd58 New translations strings.xml (Danish) 2019-10-10 03:09:09 +02:00
PhilippC
6a5ddcc06d New translations strings.xml (Polish) 2019-10-10 03:09:09 +02:00
PhilippC
592667a845 New translations strings.xml (Italian) 2019-10-10 03:09:09 +02:00
PhilippC
8f6e3db71d New translations strings.xml (Czech) 2019-10-10 03:09:08 +02:00
PhilippC
70502414c3 New translations strings.xml (French) 2019-10-10 03:09:08 +02:00
PhilippC
c9189d37f5 New translations strings.xml (Portuguese, Brazilian) 2019-10-10 03:09:08 +02:00
PhilippC
9e62e32e0a New translations strings.xml (Turkish) 2019-10-10 03:09:08 +02:00
PhilippC
f592126d63 New translations strings.xml (Italian) 2019-10-10 03:09:07 +02:00
PhilippC
c26b360bcc New translations strings.xml (Portuguese) 2019-10-10 03:09:07 +02:00
PhilippC
33c844bc97 New translations strings.xml (Dutch) 2019-10-10 03:09:07 +02:00
PhilippC
23a4a90afa New translations strings.xml (Hungarian) 2019-10-10 03:09:06 +02:00
PhilippC
643d8cc644 New translations strings.xml (Turkish) 2019-10-10 03:09:06 +02:00
PhilippC
10d9f73982 New translations strings.xml (Dutch) 2019-10-10 03:09:06 +02:00
PhilippC
a8f3e079a4 New translations strings.xml (Dutch) 2019-10-10 03:09:06 +02:00
PhilippC
8ad258d6b3 New translations strings.xml (Czech) 2019-10-10 03:09:05 +02:00
PhilippC
9a37d61892 New translations strings.xml (German) 2019-10-10 03:09:05 +02:00
PhilippC
30b5443ee1 New translations strings.xml (Vietnamese) 2019-10-10 03:09:05 +02:00
PhilippC
82885da6aa New translations strings.xml (Hungarian) 2019-10-10 03:09:04 +02:00
PhilippC
b498b8b437 New translations strings.xml (Greek) 2019-10-10 03:09:04 +02:00
PhilippC
7109fe405a New translations strings.xml (German) 2019-10-10 03:09:04 +02:00
PhilippC
0611cf2d89 New translations strings.xml (Galician) 2019-10-10 03:09:04 +02:00
PhilippC
2f5a1770c4 New translations strings.xml (French) 2019-10-10 03:09:03 +02:00
PhilippC
f7ee43fc89 New translations strings.xml (Finnish) 2019-10-10 03:09:03 +02:00
PhilippC
1457bdf69b New translations strings.xml (Indonesian) 2019-10-10 03:09:03 +02:00
PhilippC
db4a1a918e New translations strings.xml (Dutch) 2019-10-10 03:09:03 +02:00
PhilippC
66fafc25c8 New translations strings.xml (Czech) 2019-10-10 03:09:02 +02:00
PhilippC
b83cd39754 New translations strings.xml (Croatian) 2019-10-10 03:09:02 +02:00
PhilippC
3010643dc1 New translations strings.xml (Chinese Traditional) 2019-10-10 03:09:02 +02:00
PhilippC
823d6467b9 New translations strings.xml (Chinese Simplified) 2019-10-10 03:09:01 +02:00
PhilippC
9ebdf9c22c New translations strings.xml (Catalan) 2019-10-10 03:09:01 +02:00
PhilippC
0e4421ddc2 New translations strings.xml (Bulgarian) 2019-10-10 03:09:01 +02:00
PhilippC
3fbdf836cd New translations strings.xml (Basque) 2019-10-10 03:09:01 +02:00
PhilippC
124c07efa3 New translations strings.xml (Danish) 2019-10-10 03:09:00 +02:00
PhilippC
5d8cb69938 New translations strings.xml (Italian) 2019-10-10 03:09:00 +02:00
PhilippC
5e2f19b73e New translations strings.xml (Korean) 2019-10-10 03:09:00 +02:00
PhilippC
6e5f2dc910 New translations strings.xml (Ukrainian) 2019-10-10 03:08:59 +02:00
PhilippC
11119c8aa6 New translations strings.xml (Turkish) 2019-10-10 03:08:59 +02:00
PhilippC
b53ebafa9b New translations strings.xml (Swedish) 2019-10-10 03:08:59 +02:00
PhilippC
53bb74b837 New translations strings.xml (Spanish) 2019-10-10 03:08:59 +02:00
PhilippC
8b56ace8d1 New translations strings.xml (Slovenian) 2019-10-10 03:08:58 +02:00
PhilippC
524b8414d5 New translations strings.xml (Slovak) 2019-10-10 03:08:58 +02:00
PhilippC
88bfa05921 New translations strings.xml (Japanese) 2019-10-10 03:08:58 +02:00
PhilippC
4115463922 New translations strings.xml (Russian) 2019-10-10 03:08:57 +02:00
PhilippC
83ab0b2ee4 New translations strings.xml (Portuguese, Brazilian) 2019-10-10 03:08:57 +02:00
PhilippC
5bacadbca0 New translations strings.xml (Portuguese) 2019-10-10 03:08:57 +02:00
PhilippC
005930c8a0 New translations strings.xml (Polish) 2019-10-10 03:08:56 +02:00
PhilippC
a16e6ff00b New translations strings.xml (Persian) 2019-10-10 03:08:56 +02:00
PhilippC
aef334ec61 New translations strings.xml (Norwegian Bokmal) 2019-10-10 03:08:56 +02:00
PhilippC
7917a59757 New translations strings.xml (Romanian) 2019-10-10 03:08:55 +02:00
PhilippC
954fc0f5fb New translations strings.xml (Arabic) 2019-10-10 03:08:55 +02:00
PhilippC
f9578493b4 New translations strings.xml (French) 2019-10-10 03:08:55 +02:00
PhilippC
f49a82745f New translations strings.xml (Chinese Traditional) 2019-10-10 03:08:55 +02:00
PhilippC
84bd67bdea New translations strings.xml (French) 2019-10-10 03:08:54 +02:00
PhilippC
e32bb0a573 New translations strings.xml (Turkish) 2019-10-10 03:08:54 +02:00
PhilippC
8f5d4be864 New translations strings.xml (Italian) 2019-10-10 03:08:54 +02:00
PhilippC
e99c425120 New translations strings.xml (Spanish) 2019-10-10 03:08:53 +02:00
PhilippC
369379df2f New translations strings.xml (Japanese) 2019-10-10 03:08:53 +02:00
PhilippC
9a35575741 New translations strings.xml (Chinese Traditional) 2019-10-10 03:08:53 +02:00
PhilippC
455ca956ab New translations strings.xml (Portuguese) 2019-10-10 03:08:53 +02:00
PhilippC
b87df11941 New translations strings.xml (Dutch) 2019-10-10 03:08:52 +02:00
PhilippC
beb9e2241b New translations strings.xml (Dutch) 2019-10-10 03:08:52 +02:00
PhilippC
71c78d04c6 New translations strings.xml (Dutch) 2019-10-10 03:08:52 +02:00
PhilippC
9a5b18d842 New translations strings.xml (Norwegian Bokmal) 2019-10-10 03:08:52 +02:00
PhilippC
702baf3614 New translations strings.xml (Dutch) 2019-10-10 03:08:51 +02:00
PhilippC
c8b7a8d51e New translations strings.xml (Dutch) 2019-10-10 03:08:51 +02:00
PhilippC
95f1d2ca14 New translations strings.xml (Dutch) 2019-10-10 03:08:51 +02:00
PhilippC
d4673abd01 New translations strings.xml (Polish) 2019-10-10 03:08:50 +02:00
PhilippC
225f0ab437 New translations strings.xml (Polish) 2019-10-10 03:08:50 +02:00
PhilippC
7a36a53a4b New translations strings.xml (Korean) 2019-10-10 03:08:50 +02:00
PhilippC
d9a3469e19 New translations strings.xml (Swedish) 2019-10-10 03:08:50 +02:00
PhilippC
46a5202edb New translations strings.xml (Swedish) 2019-10-10 03:08:49 +02:00
PhilippC
e28b55df9d New translations strings.xml (Swedish) 2019-10-10 03:08:49 +02:00
PhilippC
91a8d6ac6c New translations strings.xml (Swedish) 2019-10-10 03:08:49 +02:00
PhilippC
151d7bb5ca New translations strings.xml (Swedish) 2019-10-10 03:08:48 +02:00
PhilippC
7432f294b2 New translations strings.xml (Swedish) 2019-10-10 03:08:48 +02:00
PhilippC
6ac2bd3c1f New translations strings.xml (Vietnamese) 2019-10-10 03:08:48 +02:00
PhilippC
3ad238e7e8 New translations strings.xml (Basque) 2019-10-10 03:08:47 +02:00
PhilippC
59230fe57a New translations strings.xml (Bulgarian) 2019-10-10 03:08:47 +02:00
PhilippC
43e1e62b41 New translations strings.xml (Catalan) 2019-10-10 03:08:47 +02:00
PhilippC
afb4dd5ce9 New translations strings.xml (Chinese Simplified) 2019-10-10 03:08:47 +02:00
PhilippC
f2b861c369 New translations strings.xml (Croatian) 2019-10-10 03:08:46 +02:00
PhilippC
4080966331 New translations strings.xml (Czech) 2019-10-10 03:08:46 +02:00
PhilippC
54b4662322 New translations strings.xml (Danish) 2019-10-10 03:08:46 +02:00
PhilippC
26e8e2afc9 New translations strings.xml (Dutch) 2019-10-10 03:08:45 +02:00
PhilippC
9aa705f3e7 New translations strings.xml (Finnish) 2019-10-10 03:08:45 +02:00
PhilippC
cb49c90b4a New translations strings.xml (French) 2019-10-10 03:08:45 +02:00
PhilippC
84b2b83901 New translations strings.xml (Galician) 2019-10-10 03:08:45 +02:00
PhilippC
abebc9d3aa New translations strings.xml (German) 2019-10-10 03:08:44 +02:00
PhilippC
19a6044044 New translations strings.xml (Arabic) 2019-10-10 03:08:44 +02:00
PhilippC
6a396561a8 New translations strings.xml (Greek) 2019-10-10 03:08:43 +02:00
PhilippC
025b822046 New translations strings.xml (Hungarian) 2019-10-10 03:08:43 +02:00
PhilippC
1f95c684d8 New translations strings.xml (Indonesian) 2019-10-10 03:08:43 +02:00
PhilippC
7116370908 New translations strings.xml (Italian) 2019-10-10 03:08:43 +02:00
PhilippC
caca6237b8 New translations strings.xml (Japanese) 2019-10-10 03:08:42 +02:00
PhilippC
c5ddf1644d New translations strings.xml (Romanian) 2019-10-10 03:08:42 +02:00
PhilippC
7147874d79 New translations strings.xml (Russian) 2019-10-10 03:08:42 +02:00
PhilippC
91bcbcf47d New translations strings.xml (Serbian (Cyrillic)) 2019-10-10 03:08:41 +02:00
PhilippC
e9ecff62a3 New translations strings.xml (Slovak) 2019-10-10 03:08:41 +02:00
PhilippC
69e081a279 New translations strings.xml (Slovenian) 2019-10-10 03:08:41 +02:00
PhilippC
51ce9847e2 New translations strings.xml (Spanish) 2019-10-10 03:08:41 +02:00
PhilippC
988cc8bd3d New translations strings.xml (Swedish) 2019-10-10 03:08:40 +02:00
PhilippC
9b34ddfd9d New translations strings.xml (Turkish) 2019-10-10 03:08:40 +02:00
PhilippC
bd158984b7 New translations strings.xml (Chinese Traditional) 2019-10-10 03:08:40 +02:00
PhilippC
ba76baf6ce New translations strings.xml (Polish) 2019-10-10 03:08:39 +02:00
PhilippC
19cf36c1e6 New translations strings.xml (Persian) 2019-10-10 03:08:39 +02:00
PhilippC
2bee860748 New translations strings.xml (Norwegian Bokmal) 2019-10-10 03:08:39 +02:00
PhilippC
edcbfeca1c New translations strings.xml (Korean) 2019-10-10 03:08:39 +02:00
PhilippC
db7a629e7d New translations strings.xml (Portuguese, Brazilian) 2019-10-10 03:08:38 +02:00
PhilippC
213ff373a9 New translations strings.xml (Ukrainian) 2019-10-10 03:08:38 +02:00
PhilippC
13fe371b73 New translations strings.xml (Vietnamese) 2019-10-10 03:08:38 +02:00
PhilippC
42e8c28320 New translations strings.xml (Basque) 2019-10-10 03:08:37 +02:00
PhilippC
cefeff50c9 New translations strings.xml (Bulgarian) 2019-10-10 03:08:37 +02:00
PhilippC
d3bb247b65 New translations strings.xml (Catalan) 2019-10-10 03:08:37 +02:00
PhilippC
6a7097a70f New translations strings.xml (Chinese Simplified) 2019-10-10 03:08:37 +02:00
PhilippC
c00ba4ad67 New translations strings.xml (Croatian) 2019-10-10 03:08:36 +02:00
PhilippC
63f3639196 New translations strings.xml (Czech) 2019-10-10 03:08:36 +02:00
PhilippC
5a02b65b66 New translations strings.xml (Danish) 2019-10-10 03:08:36 +02:00
PhilippC
daf0dfa761 New translations strings.xml (Dutch) 2019-10-10 03:08:35 +02:00
PhilippC
9aaf0ff08d New translations strings.xml (Finnish) 2019-10-10 03:08:35 +02:00
PhilippC
afac7406d7 New translations strings.xml (French) 2019-10-10 03:08:35 +02:00
PhilippC
6ae7c6e7ab New translations strings.xml (Galician) 2019-10-10 03:08:34 +02:00
PhilippC
16e8b01bcc New translations strings.xml (German) 2019-10-10 03:08:34 +02:00
PhilippC
ffd37f3658 New translations strings.xml (Arabic) 2019-10-10 03:08:34 +02:00
PhilippC
f6d18b18b9 New translations strings.xml (Greek) 2019-10-10 03:08:34 +02:00
PhilippC
2061ea8e18 New translations strings.xml (Hungarian)
# Conflicts:
#	src/keepass2android/Resources/values-hu/strings.xml
2019-10-10 03:08:33 +02:00
PhilippC
f9ff03d85d New translations strings.xml (Indonesian) 2019-10-10 03:08:33 +02:00
PhilippC
4b8a8e83d2 New translations strings.xml (Italian) 2019-10-10 03:08:33 +02:00
PhilippC
47466e7322 New translations strings.xml (Japanese) 2019-10-10 03:08:32 +02:00
PhilippC
92be6e1b56 New translations strings.xml (Romanian) 2019-10-10 03:08:32 +02:00
PhilippC
f763840c14 New translations strings.xml (Russian)
# Conflicts:
#	src/keepass2android/Resources/values-ru/strings.xml
2019-10-10 03:08:32 +02:00
PhilippC
09fed92c4f New translations strings.xml (Serbian (Cyrillic)) 2019-10-10 03:08:32 +02:00
PhilippC
0cb4e1db64 New translations strings.xml (Slovak) 2019-10-10 03:08:31 +02:00
PhilippC
66c7afc8db New translations strings.xml (Slovenian) 2019-10-10 03:08:31 +02:00
PhilippC
7482006851 New translations strings.xml (Spanish) 2019-10-10 03:08:31 +02:00
PhilippC
45f17d81e7 New translations strings.xml (Swedish) 2019-10-10 03:08:30 +02:00
PhilippC
dc2e557d2c New translations strings.xml (Turkish)
# Conflicts:
#	src/keepass2android/Resources/values-tr/strings.xml
2019-10-10 03:08:30 +02:00
PhilippC
6d4630e2d9 New translations strings.xml (Chinese Traditional) 2019-10-10 03:08:30 +02:00
PhilippC
fc96bc6b4e New translations strings.xml (Polish) 2019-10-10 03:08:30 +02:00
PhilippC
c13986a88f New translations strings.xml (Persian) 2019-10-10 03:08:29 +02:00
PhilippC
6eb7f15045 New translations strings.xml (Norwegian Bokmal) 2019-10-10 03:08:29 +02:00
PhilippC
61346438eb New translations strings.xml (Korean) 2019-10-10 03:08:29 +02:00
PhilippC
47e520c4b0 New translations strings.xml (Portuguese, Brazilian) 2019-10-10 03:08:28 +02:00
PhilippC
bcdae3d3e7 New translations strings.xml (Ukrainian) 2019-10-10 03:08:28 +02:00
PhilippC
a17aafeabd New translations strings.xml (Chinese Traditional) 2019-10-10 03:08:28 +02:00
PhilippC
286c27f7f8 New translations strings.xml (Ukrainian) 2019-10-10 03:08:28 +02:00
PhilippC
a44d08c352 New translations strings.xml (Polish) 2019-10-10 03:08:27 +02:00
PhilippC
aeb396f000 New translations strings.xml (Polish) 2019-10-10 03:08:27 +02:00
PhilippC
6c8dcbadb4 New translations strings.xml (Polish) 2019-10-10 03:08:27 +02:00
PhilippC
0071502c83 New translations strings.xml (Czech) 2019-10-10 03:08:26 +02:00
PhilippC
eb47e19df7 New translations strings.xml (Czech) 2019-10-10 03:08:26 +02:00
PhilippC
8ff2d10697 New translations strings.xml (Czech) 2019-10-10 03:08:26 +02:00
PhilippC
e1bfb4f7c2 New translations strings.xml (Czech) 2019-10-10 03:08:26 +02:00
PhilippC
8ae699b751 New translations strings.xml (Catalan) 2019-10-10 03:08:25 +02:00
PhilippC
6381d323da New translations strings.xml (Catalan) 2019-10-10 03:08:25 +02:00
PhilippC
8e9ec81591 New translations strings.xml (Turkish) 2019-10-10 03:08:25 +02:00
PhilippC
ad847e0114 New translations strings.xml (Chinese Simplified) 2019-10-10 03:08:24 +02:00
PhilippC
d44dd3e738 New translations strings.xml (Chinese Simplified) 2019-10-10 03:08:24 +02:00
PhilippC
6b6a3db89a New translations strings.xml (Chinese Simplified) 2019-10-10 03:08:24 +02:00
PhilippC
cecdb4e76d New translations strings.xml (Swedish) 2019-10-10 03:08:24 +02:00
PhilippC
c984497454 New translations strings.xml (Swedish) 2019-10-10 03:08:23 +02:00
PhilippC
5a617ad824 New translations strings.xml (Danish) 2019-10-10 03:08:23 +02:00
PhilippC
7f83846937 New translations strings.xml (Chinese Traditional) 2019-10-10 03:08:23 +02:00
PhilippC
19de6e7d52 New translations strings.xml (Portuguese, Brazilian) 2019-10-10 03:08:22 +02:00
Philipp Crocoll
12d2f961cf re-acquire token in OneDrive2FileStorage after expiry, closes https://github.com/PhilippC/keepass2android/issues/983 2019-10-10 03:08:22 +02:00
PhilippC
8fe549fc55 Merge pull request #768 from PhilippC/l10n_master
New Crowdin translations
2019-10-10 02:44:27 +02:00
PhilippC
a99e55e884 New translations strings.xml (Portuguese, Brazilian) 2019-10-10 02:41:12 +02:00
PhilippC
e361f770e8 New translations strings.xml (Portuguese) 2019-10-10 02:41:09 +02:00
PhilippC
a27e13bcb3 New translations strings.xml (French) 2019-10-10 02:34:34 +02:00
PhilippC
03cf25766b New translations strings.xml (Swedish) 2019-10-10 02:33:44 +02:00
PhilippC
9ce42a8e98 New translations strings.xml (Spanish) 2019-10-10 02:33:39 +02:00
PhilippC
c03a5b08fd New translations strings.xml (Portuguese, Brazilian) 2019-10-10 02:33:16 +02:00
PhilippC
9b5853d3f9 New translations strings.xml (Portuguese) 2019-10-10 02:33:11 +02:00
PhilippC
8a3735dc01 New translations strings.xml (German) 2019-10-09 22:30:13 +02:00
PhilippC
aae662ab5e New translations strings.xml (Swedish) 2019-10-09 10:10:14 +02:00
PhilippC
d051f02a43 New translations strings.xml (Swedish) 2019-10-09 10:00:15 +02:00
PhilippC
2e4cf0dfc6 New translations strings.xml (Swedish) 2019-10-09 09:50:09 +02:00
Philipp Crocoll
fc76e2042d remove "pre" from changelog 2019-10-09 02:36:04 +02:00
PhilippC
d7f462d21f New translations strings.xml (Czech) 2019-10-08 21:00:11 +02:00
PhilippC
2b61598c21 New translations strings.xml (Czech) 2019-10-08 20:50:12 +02:00
Philipp Crocoll
799dc3a38f switch to FluentFTP to close #825 2019-10-08 07:11:34 +02:00
PhilippC
9c76dce17d New translations strings.xml (Polish) 2019-10-07 21:50:13 +02:00
PhilippC
28ac79bbe5 New translations strings.xml (Catalan) 2019-10-07 21:50:08 +02:00
PhilippC
bdf825a2b5 New translations strings.xml (Catalan) 2019-10-07 21:40:09 +02:00
PhilippC
37d03a2735 New translations strings.xml (Catalan) 2019-10-07 21:20:08 +02:00
PhilippC
e8fde4ad0a New translations strings.xml (Dutch) 2019-10-07 20:50:08 +02:00
PhilippC
1aa29a82fb New translations strings.xml (Ukrainian) 2019-10-07 18:10:09 +02:00
PhilippC
60f292a5a7 New translations strings.xml (German) 2019-10-07 17:30:10 +02:00
PhilippC
1f956ab1db New translations strings.xml (German) 2019-10-07 17:20:12 +02:00
PhilippC
df39fa5545 New translations strings.xml (Russian) 2019-10-07 17:00:12 +02:00
PhilippC
dd0800f543 New translations strings.xml (Chinese Traditional) 2019-10-07 16:50:14 +02:00
PhilippC
8b3c6eb1ff New translations strings.xml (Danish) 2019-10-07 16:30:13 +02:00
PhilippC
88b35c0051 New translations strings.xml (Danish) 2019-10-07 15:00:10 +02:00
PhilippC
2f83169ddd New translations strings.xml (Italian) 2019-10-07 13:50:08 +02:00
PhilippC
ce4b301f5c New translations strings.xml (Italian) 2019-10-07 13:40:13 +02:00
PhilippC
433f46b8f1 New translations strings.xml (Danish) 2019-10-07 13:40:10 +02:00
PhilippC
03eb52dc14 New translations strings.xml (Japanese) 2019-10-07 13:30:19 +02:00
PhilippC
9d785679c5 New translations strings.xml (Danish) 2019-10-07 13:30:14 +02:00
PhilippC
699a4f96b0 New translations strings.xml (Chinese Traditional) 2019-10-07 13:30:09 +02:00
PhilippC
afd6f0f4d6 New translations strings.xml (Dutch) 2019-10-07 12:40:15 +02:00
PhilippC
eaadc45fce New translations strings.xml (Chinese Traditional) 2019-10-07 12:40:13 +02:00
PhilippC
e9852a6d98 New translations strings.xml (Spanish) 2019-10-07 12:30:17 +02:00
PhilippC
e1b3e769d8 New translations strings.xml (Slovenian) 2019-10-07 12:30:12 +02:00
PhilippC
501535a9a4 New translations strings.xml (Spanish) 2019-10-07 12:20:10 +02:00
PhilippC
fb8608e467 New translations strings.xml (Slovak) 2019-10-07 12:10:29 +02:00
PhilippC
e9eb8c250a New translations strings.xml (Italian) 2019-10-07 12:10:22 +02:00
PhilippC
eaa5a9d375 New translations strings.xml (French) 2019-10-07 12:10:15 +02:00
PhilippC
d28834591a New translations strings.xml (Danish) 2019-10-07 12:02:12 +02:00
PhilippC
49aa0a20cd New translations strings.xml (Slovak) 2019-10-07 12:01:17 +02:00
PhilippC
8d611bd6c6 New translations strings.xml (Portuguese, Brazilian) 2019-10-07 12:01:01 +02:00
PhilippC
bfe8650ec9 New translations strings.xml (Portuguese) 2019-10-07 12:00:56 +02:00
PhilippC
fd52a5f388 New translations strings.xml (Spanish) 2019-10-07 11:40:13 +02:00
PhilippC
6b8c5ea1fb New translations strings.xml (Japanese) 2019-10-07 11:40:09 +02:00
PhilippC
8347feceff New translations strings.xml (Japanese) 2019-10-07 11:30:10 +02:00
PhilippC
626b7fc6b3 New translations strings.xml (Spanish) 2019-10-07 11:20:08 +02:00
Philipp Crocoll
1701c9142b allow to activate search field also after QuickUnlock, not only full unlock. Closes #858 2019-10-07 11:19:34 +02:00
Philipp Crocoll
245794ed53 add Copy TOTP notification, closes #110 2019-10-07 11:18:48 +02:00
PhilippC
24aba30fa8 New translations strings.xml (French) 2019-10-07 10:30:10 +02:00
Philipp Crocoll
6338472e73 order group list with culture-aware sorting, closes #922 2019-10-07 10:30:08 +02:00
Philipp Crocoll
580b46a394 detect if FLAG_SECURE cannot be set and display an explanation, combined with a button to access the app settings to disable screen protection if desired. closes #272. 2019-10-07 10:29:54 +02:00
PhilippC
ea1a34353c New translations strings.xml (Spanish) 2019-10-07 09:50:08 +02:00
PhilippC
f9790e0e3e New translations strings.xml (Chinese Traditional) 2019-10-07 09:30:14 +02:00
PhilippC
540c4a72a2 New translations strings.xml (Chinese Traditional) 2019-10-07 09:20:10 +02:00
PhilippC
bc905304e7 New translations strings.xml (Chinese Traditional) 2019-10-07 09:10:08 +02:00
PhilippC
ad04309f9d New translations strings.xml (Slovenian) 2019-10-07 07:20:07 +02:00
Philipp Crocoll
684ffb8525 show toast in correct thread, closes #371 2019-10-07 07:13:59 +02:00
Philipp Crocoll
049764fe67 don't save files in a file version lower than what was read, closes #791 2019-10-07 02:30:38 +02:00
Philipp Crocoll
a048c45b32 improve clearing of clipboard, closes #936 2019-10-07 02:29:00 +02:00
PhilippC
60c78642b1 New translations strings.xml (Danish) 2019-10-07 00:10:09 +02:00
PhilippC
5c7f551922 New translations strings.xml (German) 2019-10-07 00:00:15 +02:00
PhilippC
ceac7841a0 New translations strings.xml (Danish) 2019-10-07 00:00:11 +02:00
PhilippC
a29fc9d3cc New translations strings.xml (Danish) 2019-10-06 23:50:10 +02:00
PhilippC
f5dbc85450 New translations strings.xml (Polish) 2019-10-06 22:50:10 +02:00
PhilippC
6a86a6906c New translations strings.xml (Italian) 2019-10-06 22:40:12 +02:00
PhilippC
2b4bd1a79d New translations strings.xml (Czech) 2019-10-06 22:40:08 +02:00
PhilippC
2b2ce4eb29 New translations strings.xml (French) 2019-10-06 22:20:10 +02:00
PhilippC
6ac875aeb5 New translations strings.xml (Portuguese, Brazilian) 2019-10-06 22:10:24 +02:00
PhilippC
f43c6d3899 New translations strings.xml (Turkish) 2019-10-06 22:00:26 +02:00
PhilippC
3f240868d0 New translations strings.xml (Italian) 2019-10-06 22:00:22 +02:00
PhilippC
5ccea973ee New translations strings.xml (Portuguese) 2019-10-06 21:51:33 +02:00
PhilippC
c1d59d9203 New translations strings.xml (Dutch) 2019-10-06 21:50:33 +02:00
Philipp Crocoll
c6d3eb7131 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-10-06 21:48:35 +02:00
Philipp Crocoll
f462bbe98b remove "pre" from changelog 2019-10-06 21:48:10 +02:00
PhilippC
c6be5fcf84 New translations strings.xml (Hungarian) 2019-10-06 21:40:10 +02:00
PhilippC
023d9e194f New translations strings.xml (Turkish) 2019-10-06 21:30:10 +02:00
PhilippC
78ad964481 New translations strings.xml (Dutch) 2019-10-06 21:20:08 +02:00
PhilippC
9c9a8277a9 New translations strings.xml (Dutch) 2019-10-06 21:10:13 +02:00
PhilippC
3f414ded5b New translations strings.xml (Czech) 2019-10-06 21:10:11 +02:00
PhilippC
5906824ffc New translations strings.xml (German) 2019-10-06 21:00:09 +02:00
PhilippC
737c87bdf8 New translations strings.xml (Vietnamese) 2019-10-06 20:53:11 +02:00
PhilippC
bb27734a07 New translations strings.xml (Hungarian) 2019-10-06 20:53:07 +02:00
PhilippC
a9e6880add New translations strings.xml (Greek) 2019-10-06 20:52:57 +02:00
PhilippC
a1c3bf19ae New translations strings.xml (German) 2019-10-06 20:52:53 +02:00
PhilippC
0dc86e8662 New translations strings.xml (Galician) 2019-10-06 20:52:50 +02:00
PhilippC
bddc731390 New translations strings.xml (French) 2019-10-06 20:52:46 +02:00
PhilippC
2521aa2621 New translations strings.xml (Finnish) 2019-10-06 20:52:42 +02:00
PhilippC
23af6f3031 New translations strings.xml (Indonesian) 2019-10-06 20:52:39 +02:00
PhilippC
89ac5af115 New translations strings.xml (Dutch) 2019-10-06 20:52:36 +02:00
PhilippC
1f1ac04640 New translations strings.xml (Czech) 2019-10-06 20:52:32 +02:00
PhilippC
67d2eeaaff New translations strings.xml (Croatian) 2019-10-06 20:52:28 +02:00
PhilippC
0788af941e New translations strings.xml (Chinese Traditional) 2019-10-06 20:52:24 +02:00
PhilippC
484cea229c New translations strings.xml (Chinese Simplified) 2019-10-06 20:52:22 +02:00
PhilippC
827a680f81 New translations strings.xml (Catalan) 2019-10-06 20:52:20 +02:00
PhilippC
8b5c170409 New translations strings.xml (Bulgarian) 2019-10-06 20:52:16 +02:00
PhilippC
9ec76c2738 New translations strings.xml (Basque) 2019-10-06 20:52:11 +02:00
PhilippC
ea9539ad0a New translations strings.xml (Danish) 2019-10-06 20:52:06 +02:00
PhilippC
03f4040c09 New translations strings.xml (Italian) 2019-10-06 20:51:58 +02:00
PhilippC
869f5d35bd New translations strings.xml (Korean) 2019-10-06 20:51:54 +02:00
PhilippC
01ac1c601f New translations strings.xml (Ukrainian) 2019-10-06 20:51:50 +02:00
PhilippC
22f3f5ce59 New translations strings.xml (Turkish) 2019-10-06 20:51:47 +02:00
PhilippC
0b430c90f4 New translations strings.xml (Swedish) 2019-10-06 20:51:41 +02:00
PhilippC
080483b2d0 New translations strings.xml (Spanish) 2019-10-06 20:51:35 +02:00
PhilippC
2da645f25b New translations strings.xml (Slovenian) 2019-10-06 20:51:32 +02:00
PhilippC
3ff6c35e35 New translations strings.xml (Slovak) 2019-10-06 20:51:30 +02:00
PhilippC
5f3fb52833 New translations strings.xml (Japanese) 2019-10-06 20:51:23 +02:00
PhilippC
6117053dd7 New translations strings.xml (Russian) 2019-10-06 20:51:18 +02:00
PhilippC
c3a1faffca New translations strings.xml (Portuguese, Brazilian) 2019-10-06 20:51:12 +02:00
PhilippC
5d85fdda46 New translations strings.xml (Portuguese) 2019-10-06 20:51:10 +02:00
PhilippC
907705b657 New translations strings.xml (Polish) 2019-10-06 20:51:04 +02:00
PhilippC
22e460d7bf New translations strings.xml (Persian) 2019-10-06 20:51:00 +02:00
PhilippC
3a81ebfcd9 New translations strings.xml (Norwegian Bokmal) 2019-10-06 20:50:52 +02:00
PhilippC
ec92225e50 New translations strings.xml (Romanian) 2019-10-06 20:50:49 +02:00
PhilippC
5163d472b3 New translations strings.xml (Arabic) 2019-10-06 20:50:46 +02:00
Philipp Crocoll
069a2d287c catch bad paths passed to search activity. closes #801. 2019-10-06 20:36:37 +02:00
Philipp Crocoll
01b8469fbb fix crash when copying entries, closes #920 2019-10-06 20:25:25 +02:00
PhilippC
421a590514 Update Documentation.md 2019-10-06 07:53:37 +02:00
Philipp Crocoll
a0a494e724 fix bug in BinaryDictionary.java which lead to crashes with dictionary using on 64bit devices; enable multi-dex and increase heap size also for Release build 2019-10-04 20:10:58 +02:00
Philipp Crocoll
3f6f0b7430 Merge branch 'master' of c:/ph/keepass2android 2019-10-03 17:19:35 +02:00
Philipp Crocoll
b8d161ffee add sha sources to repo 2019-10-03 17:18:11 +02:00
Philipp Crocoll
e27ff98517 remove Java implementation of OneDriveStorage2 2019-10-03 17:02:34 +02:00
Philipp Crocoll
4c2c6bbb54 Merge branch 'master' of c:/ph/keepass2android
# Resolved Conflicts:
#	src/keepass2android/proguard.cfg
2019-10-03 16:58:33 +02:00
Philipp Crocoll
5de92719f8 keep keyboard native methods in proguard 2019-10-03 16:57:07 +02:00
Philipp Crocoll
34b9d71cbf prepare for preview release 2019-10-03 16:54:35 +02:00
Philipp Crocoll
57e9253270 improvements to OneDrive2 implementation: it's now possible select between different access scopes, also fixed several issues 2019-10-03 16:42:50 +02:00
Philipp Crocoll
99d0ecfd59 refactoring, use less UrlUtil and more IFileStorage 2019-10-01 20:04:03 +02:00
Philipp Crocoll
706debfa33 add missing file OneDrive2FileStorage (with improvements) 2019-09-30 21:18:40 +02:00
Philipp Crocoll
db26fb6f39 first version of OneDrive implementation in C# 2019-09-30 10:42:27 +02:00
Philipp Crocoll
57e36fb728 subrepo update 2019-09-25 19:28:13 +02:00
Philipp Crocoll
7c49eeca97 update SamsungPass 2019-09-25 19:25:00 +02:00
Philipp Crocoll
8d065255d6 update dropbox sdk and gson jars, upgrade to TargetFramework Android 9 2019-09-25 19:17:08 +02:00
Philipp Crocoll
a630543ecc Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-09-23 11:52:38 +02:00
Philipp Crocoll
989e397ee2 Integrate 64-bit native libraries (required by Google Play)
Therefore change the way Keyboard and KdbLibrary are built and add (updated) native files for Keyboard.
2019-09-23 11:52:24 +02:00
Philipp Crocoll
f99843737f implement java side of OneDriveStorage2 2019-09-10 05:26:38 +02:00
PhilippC
5197111a3a Merge pull request #949 from ihanson/patch-1
Fix “CHANGE DATABAS” button bug
2019-09-10 05:04:28 +02:00
Ira Hanson
d12339bb50 Correctly strip ellipsis
Fix bug where button caption is “CHANGE DATABAS”
2019-09-09 19:45:52 -05:00
PhilippC
e166e9f754 Update Documentation.md 2019-09-03 11:43:28 +02:00
PhilippC
1d5bca81da Update Documentation.md 2019-09-03 11:36:33 +02:00
Philipp Crocoll
56891d6183 add contributor names 2019-08-21 05:02:37 +02:00
Philipp Crocoll
d0f1882995 manifest for release 1.07b-pre1 2019-08-20 06:09:54 +02:00
Philipp Crocoll
b1b67807ac added ChangeLog for 1.07b, updated contributors 2019-08-20 06:05:50 +02:00
Philipp Crocoll
265c67c91c change SamsungPass back to https://github.com/PhilippC/Xamarin-Samsung-Pass.git, merged changes for Linux from gilbsgilbs 2019-08-20 06:05:21 +02:00
Philipp Crocoll
7c55c50b4c explicity use 8.0 as target version to fix compile error. (Note: I could also upgrade everything to 8.1 to fix the compile error, but that would require extensive testing; updating target version can come with subtle changes in how the app behaves at many places) 2019-08-20 05:46:53 +02:00
Philipp Crocoll
a42b74b614 add Fennec_fdroid and Bromite to list of browsers for Autofill 2019-08-20 05:10:53 +02:00
Philipp Crocoll
262b931a1e Merge branch 'master' of c:/ph/keepass2android 2019-08-19 14:47:53 +02:00
Philipp Crocoll
3f1db5aa56 changes for 1.07-r1 (not commited correctly) 2019-08-19 14:47:46 +02:00
Philipp Crocoll
95ce6878e6 avoid exception for invalid input of getDisplayName, fixes #771 2019-08-19 14:36:33 +02:00
Philipp Crocoll
9f6fea7038 improve error message to diagnose #801 2019-08-19 14:33:44 +02:00
Philipp Crocoll
28eaa2ee7f Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-08-19 14:32:43 +02:00
Philipp Crocoll
c35cf56d8a fix entry notification being closed immediately after opening when there are TOTP fields in the entry (closes #799) 2019-08-19 14:32:29 +02:00
PhilippC
0526c58913 Update Documentation.md 2019-08-19 12:53:38 +02:00
Philipp Crocoll
1f20c18ad6 fix creation of IfDevice string, closes #888 2019-08-19 12:10:27 +02:00
Philipp Crocoll
4b56eca5e2 add mark.via.gp browser, closes #885 2019-08-19 11:47:42 +02:00
Philipp Crocoll
d14702494e Merge branch 'marcoDallas-fingerprint-improvement-#831' 2019-08-17 23:06:07 +02:00
Philipp Crocoll
f2bda0f2d1 Merge branch 'fingerprint-improvement-#831' of https://github.com/marcoDallas/keepass2android into marcoDallas-fingerprint-improvement-#831 2019-08-17 19:56:01 +02:00
Marco Dalla Libera
5f90628d2d Improved code by using a single call to setPositiveButton.
The positive button is always the same so there's no need to use two different
calls, I just brought one outside the if statement. It was an artifact left
from a previous test where I was changing both of the buttons.
2019-08-15 14:45:24 +02:00
Marco Dalla Libera
409c3eec55 Added underscreen fingerprint improvement to QuickUnlockActivity. 2019-08-15 10:44:03 +02:00
Philipp Crocoll
2a7ea24d17 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-08-15 06:53:09 +02:00
PhilippC
f81a398f4b Merge pull request #886 from DDoSolitary/patch-password-cursor
Restore cursor position after switching password visibility.
2019-08-15 06:52:56 +02:00
Philipp Crocoll
7a94f83019 fix compile errors 2019-08-15 06:51:27 +02:00
Philipp Crocoll
134234da12 Merge branch 'patch-password-cursor' of https://github.com/DDoSolitary/keepass2android 2019-08-15 05:48:53 +02:00
Philipp Crocoll
7354c8933c Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-08-15 05:46:23 +02:00
Philipp Crocoll
0565a83085 update Dropbox SDK version to fix https://github.com/PhilippC/keepass2android/issues/793 2019-08-15 05:45:40 +02:00
PhilippC
eab79eaac2 Merge pull request #905 from marcoDallas/improvement/linux-build-scripts
Improved Android SDK detection in Linux build scripts
2019-08-15 05:42:55 +02:00
PhilippC
1007f7ee6b Merge pull request #906 from marcoDallas/improvement/linux-build-instructions
Added a different path to libzip5 in Linux build instructions
2019-08-15 05:41:40 +02:00
Marco Dalla Libera
ce008843e2 Added a different path to libzip5
In my system (OpenSUSE Tumbleweed 20190806 64bit) its path was
"/usr/lib64/libzip.so.5".
2019-08-12 16:53:54 +02:00
Marco Dalla Libera
ea5ae50813 Improved Android SDK detection
If ANDROID_HOME environment variable is set, add parameter
"/p:AndroidSdkDirectory=$ANDROID_HOME" to improve the Android SDK detection.
2019-08-12 16:37:11 +02:00
Marco Dalla Libera
0970f0659a Fixed wrong indentation in files. 2019-08-12 15:31:45 +02:00
Marco Dalla Libera
ef2123422c IMPROVED UNDERSCREEN FINGERPRINT, ISSUE #831
Improved underscreen fingerprint as request in issue #831 by giving the users
the ability to disable the sensor in the PasswordActivity. Now pressing the
fingerprint icon opens up a dialog that has the option to enable/disable the
sensor.
I added two new strings to the resources (enable sensor - disable sensor) and
already translated them to italian.
2019-08-12 15:09:13 +02:00
PhilippC
6d82642176 Merge pull request #896 from jonalmeida/moz-browser-whitelist
Add support for Fenix Nightly and Reference Browser
2019-08-09 03:46:35 +02:00
Jonathan Almeida
f9c22574a7 Add support for Fenix Nightly and Reference Browser 2019-08-08 19:56:06 -04:00
PhilippC
3fde6af2a2 Merge pull request #892 from PhilippC/Branch_b0f6103
1.07-r1
2019-08-05 07:25:51 +02:00
Philipp Crocoll
5322468819 Merge branch 'Branch_b0f6103' 2019-08-05 07:21:53 +02:00
Philipp Crocoll
0ce77a2729 1.07-r1 2019-08-05 07:20:44 +02:00
Philipp Crocoll
e50cb41d1f Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-08-05 06:36:56 +02:00
Philipp Crocoll
428c360abf avoid potential NullReferenceException 2019-08-05 06:36:40 +02:00
DDoSolitary
b89f3906e9 Restore cursor position after switching password visibility. 2019-07-27 13:22:42 +08:00
PhilippC
c3898245ce New translations strings.xml (French) 2019-07-22 17:30:13 +02:00
PhilippC
f15748b4e9 New translations strings.xml (Chinese Traditional) 2019-07-22 14:00:18 +02:00
PhilippC
d11c871526 New translations strings.xml (French) 2019-07-22 13:00:11 +02:00
PhilippC
6944d842c3 New translations strings.xml (Turkish) 2019-07-22 11:40:15 +02:00
PhilippC
183087b441 New translations strings.xml (Italian) 2019-07-22 11:30:13 +02:00
PhilippC
5e081805f1 New translations strings.xml (Spanish) 2019-07-22 11:10:22 +02:00
PhilippC
e1addd1485 New translations strings.xml (Japanese) 2019-07-22 11:10:14 +02:00
PhilippC
801f13c2d3 New translations strings.xml (Chinese Traditional) 2019-07-22 10:50:11 +02:00
PhilippC
6dcb22dfc2 New translations strings.xml (Portuguese) 2019-07-22 09:50:30 +02:00
PhilippC
e5dbd86eb3 Merge pull request #835 from PhilippC/pcloud-help-dialog
PCloud improvements
2019-07-22 09:46:54 +02:00
PhilippC
1706891be4 Merge pull request #836 from PhilippC/fix-linux-build
Fix invalid namespace in manifests causing build failure on Linux.
2019-07-22 09:45:07 +02:00
PhilippC
11323c0206 Merge pull request #855 from caesar/patch-1
Add support for autofill in Firefox Preview/Fenix
2019-07-22 09:44:15 +02:00
PhilippC
c36d252159 Merge pull request #872 from yan12125/argon2-performance
Improve Argon2 performance
2019-07-22 09:39:50 +02:00
Chih-Hsuan Yen
7d1eeb1e34 Use native Argon2 implementation 2019-07-16 21:07:26 +08:00
Chih-Hsuan Yen
e081a6aa2c Build fixes 2019-07-16 21:07:26 +08:00
PhilippC
014f238f6c New translations strings.xml (Dutch) 2019-07-03 10:30:13 +02:00
PhilippC
9482b37672 New translations strings.xml (Dutch) 2019-07-03 10:20:13 +02:00
PhilippC
69c5601de4 New translations strings.xml (Dutch) 2019-07-03 10:10:13 +02:00
Caesar Schinas
96c717f748 Add support for autofill in Firefox Preview/Fenix
Also tidy / reorganize `_trustedBrowsers` list somewhat.

Fixes #758.
2019-07-01 11:39:50 +01:00
PhilippC
856ba36a20 New translations strings.xml (Norwegian Bokmal) 2019-06-27 23:10:10 +02:00
PhilippC
396cf51794 New translations strings.xml (Dutch) 2019-06-26 13:30:10 +02:00
PhilippC
8138790396 New translations strings.xml (Dutch) 2019-06-26 13:20:10 +02:00
PhilippC
e698468c39 New translations strings.xml (Dutch) 2019-06-26 13:10:12 +02:00
PhilippC
da005a35bf New translations strings.xml (Polish) 2019-06-21 02:40:11 +02:00
PhilippC
9b62f28e93 New translations strings.xml (Polish) 2019-06-21 02:30:13 +02:00
PhilippC
5adc738c03 New translations strings.xml (Korean) 2019-06-18 10:10:14 +02:00
PhilippC
d784394ea9 New translations strings.xml (Swedish) 2019-06-02 18:00:11 +02:00
PhilippC
b1cbb7893c New translations strings.xml (Swedish) 2019-06-02 17:50:09 +02:00
PhilippC
51b2049429 New translations strings.xml (Swedish) 2019-06-02 17:40:09 +02:00
PhilippC
84c8af7357 New translations strings.xml (Swedish) 2019-06-02 17:30:10 +02:00
PhilippC
69cbda8a39 New translations strings.xml (Swedish) 2019-06-02 17:20:09 +02:00
PhilippC
48f351ba0d New translations strings.xml (Swedish) 2019-06-02 17:10:11 +02:00
PhilippC
0a7fac77ff New translations strings.xml (Vietnamese) 2019-05-26 13:32:22 +02:00
PhilippC
ff336b40ae New translations strings.xml (Basque) 2019-05-26 13:32:16 +02:00
PhilippC
86a8da3ef3 New translations strings.xml (Bulgarian) 2019-05-26 13:32:12 +02:00
PhilippC
a72b681205 New translations strings.xml (Catalan) 2019-05-26 13:32:07 +02:00
PhilippC
3c75a4a012 New translations strings.xml (Chinese Simplified) 2019-05-26 13:32:01 +02:00
PhilippC
f9fc4b9a06 New translations strings.xml (Croatian) 2019-05-26 13:31:56 +02:00
PhilippC
6869f940ac New translations strings.xml (Czech) 2019-05-26 13:31:52 +02:00
PhilippC
79f0f90f3e New translations strings.xml (Danish) 2019-05-26 13:31:47 +02:00
PhilippC
1119610a10 New translations strings.xml (Dutch) 2019-05-26 13:31:42 +02:00
PhilippC
90fe3f04c0 New translations strings.xml (Finnish) 2019-05-26 13:31:37 +02:00
PhilippC
aca0aef285 New translations strings.xml (French) 2019-05-26 13:31:32 +02:00
PhilippC
8134b73902 New translations strings.xml (Galician) 2019-05-26 13:31:28 +02:00
PhilippC
57414cd0b8 New translations strings.xml (German) 2019-05-26 13:31:23 +02:00
PhilippC
6792eb53f0 New translations strings.xml (Arabic) 2019-05-26 13:31:19 +02:00
PhilippC
a6d4814980 New translations strings.xml (Greek) 2019-05-26 13:31:15 +02:00
PhilippC
3ef0afa6bc New translations strings.xml (Hungarian) 2019-05-26 13:31:10 +02:00
PhilippC
942be17e61 New translations strings.xml (Indonesian) 2019-05-26 13:31:06 +02:00
PhilippC
37e8f14e3b New translations strings.xml (Italian) 2019-05-26 13:31:00 +02:00
PhilippC
64ca771c51 New translations strings.xml (Japanese) 2019-05-26 13:30:54 +02:00
PhilippC
df2c2cd827 New translations strings.xml (Romanian) 2019-05-26 13:30:50 +02:00
PhilippC
4b692e4697 New translations strings.xml (Russian) 2019-05-26 13:30:45 +02:00
PhilippC
a0fa5ff4c2 New translations strings.xml (Serbian (Cyrillic)) 2019-05-26 13:30:42 +02:00
PhilippC
32df0ae8fe New translations strings.xml (Slovak) 2019-05-26 13:30:36 +02:00
PhilippC
73b9bcac7a New translations strings.xml (Slovenian) 2019-05-26 13:30:31 +02:00
PhilippC
11f606631c New translations strings.xml (Spanish) 2019-05-26 13:30:28 +02:00
PhilippC
9f696441e3 New translations strings.xml (Swedish) 2019-05-26 13:30:23 +02:00
PhilippC
118d18613f New translations strings.xml (Turkish) 2019-05-26 13:30:19 +02:00
PhilippC
a39bc9b7f7 New translations strings.xml (Chinese Traditional) 2019-05-26 13:30:12 +02:00
PhilippC
e0e17359c9 New translations strings.xml (Polish) 2019-05-25 21:50:41 +02:00
PhilippC
5ab25b0bc8 New translations strings.xml (Persian) 2019-05-25 21:50:37 +02:00
PhilippC
686e7eb6c1 New translations strings.xml (Norwegian Bokmal) 2019-05-25 21:50:29 +02:00
PhilippC
c3ba8662b9 New translations strings.xml (Korean) 2019-05-25 21:50:25 +02:00
PhilippC
b7e23fd046 New translations strings.xml (Portuguese, Brazilian) 2019-05-25 21:50:20 +02:00
PhilippC
9ff89ba263 New translations strings.xml (Ukrainian) 2019-05-25 21:50:16 +02:00
Gilbert Gilb's
c84f85444a Fix invalid manifest namespace causing build failures on Linux. 2019-05-25 21:49:04 +02:00
Gilbert Gilb's
37c10e7b48 Show a dialog after picking PCloud file storage.
Not seeing any file was confusing to users.

See https://github.com/PhilippC/keepass2android/issues/794
See https://github.com/PhilippC/keepass2android/issues/796
2019-05-25 21:44:48 +02:00
Gilbert Gilb's
02b8292a2e Use new option to overwrite file in PCloud file storage. 2019-05-25 21:36:39 +02:00
Gilbert Gilb's
2d1909c227 Update PCloud SDK to 1.1.0. 2019-05-25 21:35:54 +02:00
PhilippC
f470606af0 New translations strings.xml (Vietnamese) 2019-05-21 15:43:03 +02:00
PhilippC
4a7b3f17c2 New translations strings.xml (Basque) 2019-05-21 15:42:54 +02:00
PhilippC
788df21115 New translations strings.xml (Bulgarian) 2019-05-21 15:42:48 +02:00
PhilippC
2aaaa8b416 New translations strings.xml (Catalan) 2019-05-21 15:42:43 +02:00
PhilippC
2660084401 New translations strings.xml (Chinese Simplified) 2019-05-21 15:42:37 +02:00
PhilippC
e0dfb888c1 New translations strings.xml (Croatian) 2019-05-21 15:42:31 +02:00
PhilippC
ab66b5585d New translations strings.xml (Czech) 2019-05-21 15:42:25 +02:00
PhilippC
bf8b9f32df New translations strings.xml (Danish) 2019-05-21 15:42:20 +02:00
PhilippC
d259143736 New translations strings.xml (Dutch) 2019-05-21 15:42:15 +02:00
PhilippC
83dc82a308 New translations strings.xml (Finnish) 2019-05-21 15:42:09 +02:00
PhilippC
233f4bb04f New translations strings.xml (French) 2019-05-21 15:42:04 +02:00
PhilippC
8183d17706 New translations strings.xml (Galician) 2019-05-21 15:41:57 +02:00
PhilippC
feedcae410 New translations strings.xml (German) 2019-05-21 15:41:52 +02:00
PhilippC
3157ea741e New translations strings.xml (Arabic) 2019-05-21 15:41:47 +02:00
PhilippC
623040bf3e New translations strings.xml (Greek) 2019-05-21 15:41:40 +02:00
PhilippC
6a394f697a New translations strings.xml (Hungarian) 2019-05-21 15:41:34 +02:00
PhilippC
3908f4b5ce New translations strings.xml (Indonesian) 2019-05-21 15:41:29 +02:00
PhilippC
ad21ee1e64 New translations strings.xml (Italian) 2019-05-21 15:41:21 +02:00
PhilippC
6c69796248 New translations strings.xml (Japanese) 2019-05-21 15:41:16 +02:00
PhilippC
e6f79562dc New translations strings.xml (Romanian) 2019-05-21 15:41:10 +02:00
PhilippC
5e9c655672 New translations strings.xml (Russian) 2019-05-21 15:41:06 +02:00
PhilippC
6b01100ca4 New translations strings.xml (Serbian (Cyrillic)) 2019-05-21 15:41:01 +02:00
PhilippC
838382ea0a New translations strings.xml (Slovak) 2019-05-21 15:40:55 +02:00
PhilippC
3c62c22f3a New translations strings.xml (Slovenian) 2019-05-21 15:40:50 +02:00
PhilippC
bc1197b4a0 New translations strings.xml (Spanish) 2019-05-21 15:40:44 +02:00
PhilippC
d691570099 New translations strings.xml (Swedish) 2019-05-21 15:40:35 +02:00
PhilippC
772d55fa45 New translations strings.xml (Turkish) 2019-05-21 15:40:29 +02:00
PhilippC
676072e96b New translations strings.xml (Chinese Traditional) 2019-05-21 15:40:17 +02:00
PhilippC
29dec2d9f7 New translations strings.xml (Polish) 2019-05-21 11:50:55 +02:00
PhilippC
b1d6099e2c New translations strings.xml (Persian) 2019-05-21 11:50:51 +02:00
PhilippC
e5cbf010a3 New translations strings.xml (Norwegian Bokmal) 2019-05-21 11:50:41 +02:00
PhilippC
023364f968 New translations strings.xml (Korean) 2019-05-21 11:50:34 +02:00
PhilippC
26fe7f610d New translations strings.xml (Portuguese, Brazilian) 2019-05-21 11:50:29 +02:00
PhilippC
37d6e54e70 New translations strings.xml (Ukrainian) 2019-05-21 11:50:23 +02:00
PhilippC
adc4c59a99 New translations strings.xml (Chinese Traditional) 2019-05-17 05:20:11 +02:00
PhilippC
16fd528e95 New translations strings.xml (Ukrainian) 2019-05-07 13:30:13 +02:00
PhilippC
efdfdac6cb New translations strings.xml (Polish) 2019-05-05 02:40:09 +02:00
PhilippC
03ebe6b176 New translations strings.xml (Polish) 2019-05-05 02:30:11 +02:00
Philipp Crocoll
730019b420 Merge branch 'master' of c:/ph/keepass2android 2019-04-10 06:01:42 +02:00
Philipp Crocoll
b0f61038e3 fix potential crash in Google Drive storage 2019-04-10 06:01:22 +02:00
PhilippC
477c36d880 New translations strings.xml (Polish) 2019-04-10 01:00:11 +02:00
PhilippC
d4a99ce9b2 New translations strings.xml (Czech) 2019-04-07 15:30:10 +02:00
PhilippC
025c5fe301 New translations strings.xml (Czech) 2019-04-07 15:20:09 +02:00
PhilippC
422f5deafb New translations strings.xml (Czech) 2019-04-07 15:10:09 +02:00
PhilippC
00b5473a7a New translations strings.xml (Czech) 2019-04-07 15:00:09 +02:00
PhilippC
945264d927 New translations strings.xml (Catalan) 2019-04-07 10:50:11 +02:00
PhilippC
74848cd015 New translations strings.xml (Catalan) 2019-04-07 10:40:09 +02:00
PhilippC
c583e3238a New translations strings.xml (Turkish) 2019-04-06 12:20:09 +02:00
PhilippC
0cc7abf322 New translations strings.xml (Chinese Simplified) 2019-04-06 10:20:12 +02:00
PhilippC
8f3b9c532c New translations strings.xml (Chinese Simplified) 2019-04-06 10:10:10 +02:00
PhilippC
4ce35de276 New translations strings.xml (Chinese Simplified) 2019-04-06 10:00:10 +02:00
PhilippC
7c05aa625f New translations strings.xml (Swedish) 2019-04-05 11:20:11 +02:00
PhilippC
139ac0b269 New translations strings.xml (Swedish) 2019-04-05 11:10:12 +02:00
PhilippC
8ba35083d8 New translations strings.xml (Danish) 2019-04-04 01:10:11 +02:00
PhilippC
02003abf1d New translations strings.xml (Chinese Traditional) 2019-04-01 16:12:30 +02:00
PhilippC
88ce729351 New translations strings.xml (Portuguese, Brazilian) 2019-04-01 16:11:53 +02:00
Philipp Crocoll
dcac392e43 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-04-01 10:44:31 +02:00
PhilippC
87cfa4c4d4 Merge pull request #766 from PhilippC/l10n_master
New Crowdin translations
2019-04-01 10:44:12 +02:00
PhilippC
58ec829d1a New translations strings.xml (Portuguese) 2019-04-01 10:39:46 +02:00
PhilippC
90fd2daa01 New translations strings.xml (Danish) 2019-04-01 10:39:05 +02:00
Philipp Crocoll
d0749324c9 Merge remote-tracking branch 'remotes/origin/l10n_master'
# Resolved Conflicts:
#	src/keepass2android/Resources/values-da/strings.xml
#	src/keepass2android/Resources/values-de/strings.xml
#	src/keepass2android/Resources/values-nl/strings.xml
#	src/keepass2android/Resources/values-ru/strings.xml
2019-04-01 10:36:15 +02:00
PhilippC
a43f72d18a New translations strings.xml (German) 2019-04-01 10:29:58 +02:00
PhilippC
3d691088be New translations strings.xml (Portuguese, Brazilian) 2019-04-01 10:29:53 +02:00
Philipp Crocoll
bca3becadb improved language in resource strings 2019-04-01 10:21:50 +02:00
PhilippC
d937fbe7ad New translations strings.xml (Danish) 2019-04-01 04:10:10 +02:00
PhilippC
c13e00871d New translations strings.xml (Danish) 2019-04-01 03:50:10 +02:00
PhilippC
b5b716da4c New translations strings.xml (Danish) 2019-04-01 03:30:09 +02:00
PhilippC
45d2a8e0b2 New translations strings.xml (Danish) 2019-04-01 03:20:10 +02:00
PhilippC
d47c948699 New translations strings.xml (Danish) 2019-04-01 03:10:11 +02:00
PhilippC
fdf36babba New translations strings.xml (Danish) 2019-04-01 03:00:12 +02:00
PhilippC
d47411264e New translations strings.xml (Danish) 2019-04-01 02:50:11 +02:00
PhilippC
b9ebad7942 New translations strings.xml (Danish) 2019-04-01 02:40:09 +02:00
PhilippC
2878cc1cb5 New translations strings.xml (Danish) 2019-04-01 02:10:11 +02:00
PhilippC
9277d76f37 New translations strings.xml (Danish) 2019-04-01 02:00:21 +02:00
PhilippC
b7b1301334 New translations strings.xml (Turkish) 2019-03-31 14:10:11 +02:00
PhilippC
954dd73ffa New translations strings.xml (Turkish) 2019-03-31 14:00:12 +02:00
PhilippC
7aeab98c5b New translations strings.xml (Portuguese) 2019-03-30 00:00:10 +01:00
PhilippC
51123d60d3 New translations strings.xml (Portuguese) 2019-03-29 23:50:11 +01:00
PhilippC
395d4b5a97 New translations strings.xml (Hungarian) 2019-03-29 15:00:15 +01:00
PhilippC
654f025f64 New translations strings.xml (Hungarian) 2019-03-29 14:50:11 +01:00
PhilippC
8a9ccea5d3 New translations strings.xml (Hungarian) 2019-03-29 14:40:11 +01:00
PhilippC
92e00075c6 New translations strings.xml (Hungarian) 2019-03-29 14:30:11 +01:00
PhilippC
624e78e734 New translations strings.xml (Hungarian) 2019-03-29 14:20:11 +01:00
PhilippC
76bb8822fa New translations strings.xml (Hungarian) 2019-03-29 14:10:09 +01:00
PhilippC
e3cba097fa New translations strings.xml (Hungarian) 2019-03-29 14:00:13 +01:00
PhilippC
c812fca8c1 New translations strings.xml (Hungarian) 2019-03-29 13:50:10 +01:00
PhilippC
f86f4ee18c New translations strings.xml (Hungarian) 2019-03-29 13:20:09 +01:00
PhilippC
dafed9786e New translations strings.xml (Hungarian) 2019-03-29 13:10:10 +01:00
PhilippC
cd3a119053 New translations strings.xml (Hungarian) 2019-03-29 13:00:14 +01:00
PhilippC
f143a171aa New translations strings.xml (Hungarian) 2019-03-29 12:50:13 +01:00
PhilippC
ee93d7df82 New translations strings.xml (Hungarian) 2019-03-29 12:40:11 +01:00
PhilippC
61a3bcc53d New translations strings.xml (Hungarian) 2019-03-29 12:30:12 +01:00
PhilippC
17a46eb92c New translations strings.xml (Hungarian) 2019-03-29 12:00:11 +01:00
PhilippC
14b121a8ba New translations strings.xml (Danish) 2019-03-29 01:50:11 +01:00
PhilippC
41b57417e5 New translations strings.xml (Russian) 2019-03-28 20:10:13 +01:00
PhilippC
bb492c3043 New translations strings.xml (Slovak) 2019-03-28 18:50:14 +01:00
PhilippC
b683dca67c New translations strings.xml (Slovak) 2019-03-28 18:40:11 +01:00
PhilippC
b6e6024bda New translations strings.xml (German) 2019-03-28 15:30:31 +01:00
PhilippC
2b3a95e21d New translations strings.xml (German) 2019-03-28 15:20:13 +01:00
PhilippC
de9c27f1f5 New translations strings.xml (Portuguese, Brazilian) 2019-03-28 13:40:13 +01:00
PhilippC
85c9cb26b1 New translations strings.xml (Portuguese, Brazilian) 2019-03-28 13:30:13 +01:00
PhilippC
8ffa27e93d New translations strings.xml (Italian) 2019-03-28 13:20:19 +01:00
PhilippC
ea743fc2c5 New translations strings.xml (Portuguese, Brazilian) 2019-03-28 13:20:13 +01:00
PhilippC
7fab9aab00 New translations strings.xml (Italian) 2019-03-28 13:10:18 +01:00
PhilippC
444e224d41 New translations strings.xml (Portuguese, Brazilian) 2019-03-28 13:10:12 +01:00
PhilippC
9fde19f1ce New translations strings.xml (Portuguese) 2019-03-28 12:20:22 +01:00
PhilippC
4e085b5dca New translations strings.xml (Italian) 2019-03-28 12:20:16 +01:00
PhilippC
06ab58cc07 New translations strings.xml (Danish) 2019-03-28 11:50:12 +01:00
PhilippC
9dae1746ec New translations strings.xml (Danish) 2019-03-28 11:30:11 +01:00
PhilippC
db87191f1f New translations strings.xml (Danish) 2019-03-28 11:20:10 +01:00
PhilippC
76abe79b6d New translations strings.xml (Japanese) 2019-03-28 10:30:12 +01:00
PhilippC
970bc29e01 New translations strings.xml (Japanese) 2019-03-28 10:20:13 +01:00
PhilippC
79a3262659 New translations strings.xml (French) 2019-03-28 10:10:11 +01:00
PhilippC
3add6d64ef New translations strings.xml (French) 2019-03-28 09:50:12 +01:00
PhilippC
43168b18d1 New translations strings.xml (French) 2019-03-28 09:40:11 +01:00
PhilippC
6970b42456 New translations strings.xml (Polish) 2019-03-28 09:10:17 +01:00
PhilippC
a545b96601 New translations strings.xml (Spanish) 2019-03-28 09:10:11 +01:00
PhilippC
59b66409e8 New translations strings.xml (Chinese Traditional) 2019-03-28 09:00:13 +01:00
PhilippC
25c50bbcaf New translations strings.xml (Chinese Traditional) 2019-03-28 08:50:09 +01:00
PhilippC
a9a5df00d2 New translations strings.xml (German) 2019-03-28 08:40:09 +01:00
PhilippC
5f4d9c29dc New translations strings.xml (German) 2019-03-28 08:10:09 +01:00
PhilippC
31e158e39b New translations strings.xml (Ukrainian) 2019-03-28 08:00:10 +01:00
PhilippC
25af5844be New translations strings.xml (German) 2019-03-28 07:50:10 +01:00
PhilippC
f79bb49af1 New translations strings.xml (Slovenian) 2019-03-28 07:30:19 +01:00
PhilippC
2756bae656 New translations strings.xml (Italian) 2019-03-28 07:30:14 +01:00
PhilippC
b574b55f84 New translations strings.xml (Dutch) 2019-03-28 07:30:09 +01:00
PhilippC
76ef1c4033 New translations strings.xml (Dutch) 2019-03-28 07:20:09 +01:00
PhilippC
409deaee9d New translations strings.xml (Italian) 2019-03-28 07:10:16 +01:00
PhilippC
8396e18283 New translations strings.xml (Dutch) 2019-03-28 07:10:10 +01:00
PhilippC
5e952e06ff New translations strings.xml (Italian) 2019-03-28 07:00:12 +01:00
PhilippC
7b6dc3d773 New translations strings.xml (Italian) 2019-03-28 06:50:10 +01:00
PhilippC
1759b67921 New translations strings.xml (Ukrainian) 2019-03-28 06:10:10 +01:00
PhilippC
1307b0e5d1 New translations strings.xml (Ukrainian) 2019-03-28 05:50:10 +01:00
PhilippC
c1af6994bf New translations strings.xml (Ukrainian) 2019-03-28 05:40:09 +01:00
PhilippC
d09c15e5b8 New translations strings.xml (Chinese Simplified) 2019-03-28 05:30:23 +01:00
PhilippC
ea98b170d9 New translations strings.xml (Russian) 2019-03-28 05:30:17 +01:00
PhilippC
c67f4e45c7 New translations strings.xml (Ukrainian) 2019-03-28 05:30:11 +01:00
PhilippC
c21a5afe94 New translations strings.xml (Chinese Simplified) 2019-03-28 05:20:15 +01:00
PhilippC
49de16f0f3 New translations strings.xml (Russian) 2019-03-28 05:20:09 +01:00
PhilippC
6d60afadf4 New translations strings.xml (Chinese Simplified) 2019-03-28 05:10:09 +01:00
PhilippC
c6751af075 New translations strings.xml (Vietnamese) 2019-03-28 05:02:50 +01:00
PhilippC
d41aa389a7 New translations strings.xml (Dutch) 2019-03-28 05:02:46 +01:00
PhilippC
f95986fd7a New translations strings.xml (Czech) 2019-03-28 05:02:40 +01:00
PhilippC
ac522bce43 New translations strings.xml (Croatian) 2019-03-28 05:02:34 +01:00
PhilippC
6e0729c3b3 New translations strings.xml (Chinese Traditional) 2019-03-28 05:02:30 +01:00
PhilippC
9ce674da2b New translations strings.xml (Chinese Simplified) 2019-03-28 05:02:26 +01:00
PhilippC
da8a8e7e77 New translations strings.xml (Catalan) 2019-03-28 05:02:22 +01:00
PhilippC
566a1088bd New translations strings.xml (Bulgarian) 2019-03-28 05:02:16 +01:00
PhilippC
11f1f07653 New translations strings.xml (Finnish) 2019-03-28 05:02:11 +01:00
PhilippC
45194bb26f New translations strings.xml (Basque) 2019-03-28 05:02:05 +01:00
PhilippC
1f6440189f New translations strings.xml (Russian) 2019-03-28 05:01:59 +01:00
PhilippC
60e98d87d8 New translations strings.xml (Danish) 2019-03-28 05:01:54 +01:00
PhilippC
f560124088 New translations strings.xml (German) 2019-03-28 05:01:48 +01:00
PhilippC
7521d0b787 New translations strings.xml (Portuguese, Brazilian) 2019-03-28 05:01:45 +01:00
PhilippC
c45e52f571 New translations strings.xml (Ukrainian) 2019-03-28 04:45:19 +01:00
PhilippC
275920e5be New translations strings.xml (Greek) 2019-03-28 04:45:16 +01:00
PhilippC
7045c6ee8d New translations strings.xml (Turkish) 2019-03-28 04:45:11 +01:00
PhilippC
7a7b65e8c6 New translations strings.xml (Azerbaijani) 2019-03-28 04:45:04 +01:00
PhilippC
261526b4d1 New translations strings.xml (Arabic) 2019-03-28 04:44:58 +01:00
PhilippC
bc74c91a2c New translations strings.xml (French) 2019-03-28 04:44:53 +01:00
PhilippC
ab47543df0 New translations strings.xml (Hebrew) 2019-03-28 04:44:47 +01:00
PhilippC
3a601468a9 New translations strings.xml (Swedish) 2019-03-28 04:44:42 +01:00
PhilippC
f2002e2b90 New translations strings.xml (Slovenian) 2019-03-28 04:44:38 +01:00
PhilippC
29031167d6 New translations strings.xml (Slovak) 2019-03-28 04:44:32 +01:00
PhilippC
7305ac47c3 New translations strings.xml (Serbian (Cyrillic)) 2019-03-28 04:44:26 +01:00
PhilippC
2aec6c9e4b New translations strings.xml (Romanian) 2019-03-28 04:44:22 +01:00
PhilippC
5a2cdf3cda New translations strings.xml (Portuguese) 2019-03-28 04:44:18 +01:00
PhilippC
a943df63fc New translations strings.xml (Polish) 2019-03-28 04:44:13 +01:00
PhilippC
ca771abebe New translations strings.xml (Galician) 2019-03-28 04:44:07 +01:00
PhilippC
010db6148d New translations strings.xml (Persian) 2019-03-28 04:44:01 +01:00
PhilippC
8f065f480c New translations strings.xml (Norwegian Bokmal) 2019-03-28 04:43:57 +01:00
PhilippC
f163f9382f New translations strings.xml (Korean) 2019-03-28 04:43:52 +01:00
PhilippC
e752244b5f New translations strings.xml (Japanese) 2019-03-28 04:43:47 +01:00
PhilippC
4bbb958a05 New translations strings.xml (Italian) 2019-03-28 04:43:43 +01:00
PhilippC
d1ddfed8dd New translations strings.xml (Indonesian) 2019-03-28 04:43:39 +01:00
PhilippC
bdb39f203a New translations strings.xml (Hungarian) 2019-03-28 04:43:34 +01:00
PhilippC
1bcb6aabe7 New translations strings.xml (Norwegian Nynorsk) 2019-03-28 04:43:30 +01:00
PhilippC
90b09b0f7e New translations strings.xml (Spanish) 2019-03-28 04:43:26 +01:00
Philipp Crocoll
4e6e0a0e73 improve English texts 2019-03-28 04:42:40 +01:00
Philipp Crocoll
ad4c764adb fix potential crashes when database has been closed and recreating activities 2019-03-28 04:42:24 +01:00
PhilippC
2265432ec4 New translations strings.xml (German) 2019-03-28 04:40:11 +01:00
PhilippC
bb45e60a3f New translations strings.xml (French) 2019-03-27 22:20:09 +01:00
PhilippC
b1ff92d63e New translations strings.xml (French) 2019-03-27 22:10:15 +01:00
Philipp Crocoll
016864edfc fix potential crash 2019-03-27 19:20:16 +01:00
PhilippC
dc5133e676 New translations strings.xml (Greek) 2019-03-27 01:00:12 +01:00
PhilippC
1fbd10c918 New translations strings.xml (Greek) 2019-03-27 00:50:09 +01:00
PhilippC
4cd219ab32 New translations strings.xml (Greek) 2019-03-27 00:40:10 +01:00
PhilippC
871e84fec9 New translations strings.xml (Greek) 2019-03-27 00:30:11 +01:00
PhilippC
08ce132587 New translations strings.xml (Greek) 2019-03-27 00:20:09 +01:00
PhilippC
4c58d8df72 New translations strings.xml (Greek) 2019-03-27 00:10:11 +01:00
PhilippC
bf554d2417 New translations strings.xml (Greek) 2019-03-27 00:00:09 +01:00
PhilippC
631cd8e35f New translations strings.xml (Greek) 2019-03-26 23:50:12 +01:00
PhilippC
f46c4d8054 New translations strings.xml (Russian) 2019-03-26 22:50:10 +01:00
PhilippC
0010713b78 New translations strings.xml (Russian) 2019-03-26 22:40:13 +01:00
PhilippC
f5bfd4f8f2 New translations strings.xml (Russian) 2019-03-26 22:30:09 +01:00
PhilippC
6d04d2f579 New translations strings.xml (Russian) 2019-03-26 22:20:10 +01:00
PhilippC
0d3cef1626 New translations strings.xml (Chinese Traditional) 2019-03-25 18:50:10 +01:00
PhilippC
4d251becb0 New translations strings.xml (Chinese Traditional) 2019-03-25 18:40:09 +01:00
PhilippC
372d4c4bf3 New translations strings.xml (Slovenian) 2019-03-25 11:20:12 +01:00
PhilippC
2dbda89973 New translations strings.xml (German) 2019-03-25 11:12:54 +01:00
PhilippC
2f55bbddd8 New translations strings.xml (Portuguese) 2019-03-25 11:11:54 +01:00
PhilippC
928773b183 New translations strings.xml (German) 2019-03-25 10:50:13 +01:00
PhilippC
bc9803cbc4 New translations strings.xml (German) 2019-03-25 10:40:10 +01:00
Philipp Crocoll
fca8f5efbc remove unused strings 2019-03-25 10:34:19 +01:00
PhilippC
f09fe4f7e2 New translations strings.xml (German) 2019-03-25 10:30:12 +01:00
Philipp Crocoll
b2b29c692e 1.07-pre9 2019-03-25 10:30:06 +01:00
PhilippC
de3bc0ff6c New translations strings.xml (Japanese) 2019-03-25 10:20:11 +01:00
Philipp Crocoll
c4a1b6a82e avoid opening password activity when database is already open, closes https://github.com/PhilippC/keepass2android/issues/706 2019-03-25 10:10:19 +01:00
PhilippC
bd08dd54e2 New translations strings.xml (Chinese Traditional) 2019-03-25 09:33:14 +01:00
PhilippC
b1f93fdb75 New translations strings.xml (Chinese Simplified) 2019-03-25 09:33:07 +01:00
PhilippC
51599b3f1a New translations strings.xml (Catalan) 2019-03-25 09:33:02 +01:00
PhilippC
1b753877a9 New translations strings.xml (Finnish) 2019-03-25 09:32:55 +01:00
PhilippC
d33ffa9d22 New translations strings.xml (Portuguese, Brazilian) 2019-03-25 09:32:36 +01:00
PhilippC
df710e523a New translations strings.xml (Turkish) 2019-03-25 09:32:23 +01:00
PhilippC
7d218e0706 New translations strings.xml (Slovenian) 2019-03-25 09:31:57 +01:00
PhilippC
88127a4858 New translations strings.xml (Slovak) 2019-03-25 09:31:51 +01:00
PhilippC
63f2a6f902 New translations strings.xml (Japanese) 2019-03-25 09:31:14 +01:00
Philipp Crocoll
d8286eb639 Merge branch 'l10n_master' of https://github.com/PhilippC/keepass2android
# Resolved Conflicts:
#	src/keepass2android/Resources/values-cs/strings.xml
#	src/keepass2android/Resources/values-da/strings.xml
#	src/keepass2android/Resources/values-de/strings.xml
#	src/keepass2android/Resources/values-hu/strings.xml
#	src/keepass2android/Resources/values-nl/strings.xml
#	src/keepass2android/Resources/values-pl/strings.xml
#	src/keepass2android/Resources/values-ru/strings.xml
#	src/keepass2android/Resources/values-tr/strings.xml
2019-03-25 09:27:27 +01:00
PhilippC
668fa46a98 New translations strings.xml (Slovenian) 2019-03-25 09:15:11 +01:00
PhilippC
e16a671a26 New translations strings.xml (Portuguese) 2019-03-25 09:14:56 +01:00
Philipp Crocoll
7f89ef358c Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-03-25 09:10:05 +01:00
Philipp Crocoll
e0df319279 try to proceed to password activity also if file storage setup is required, closes https://github.com/PhilippC/keepass2android/issues/416 2019-03-25 09:09:55 +01:00
Philipp Crocoll
61c7a260b4 improve child database configuration activity 2019-03-25 09:08:48 +01:00
Philipp Crocoll
f26fce63ad avoid crash when ROM does not support fingerprint encryption, closes https://github.com/PhilippC/keepass2android/issues/155 2019-03-25 09:08:32 +01:00
Philipp Crocoll
74c3c96b43 Merge branch 'master' of c:/ph/keepass2android 2019-03-25 09:05:39 +01:00
PhilippC
765b020152 New translations strings.xml (Chinese Traditional) 2019-03-25 05:30:11 +01:00
PhilippC
59c05235f6 New translations strings.xml (Chinese Traditional) 2019-03-25 05:20:10 +01:00
PhilippC
92a4131c88 New translations strings.xml (Chinese Traditional) 2019-03-25 05:10:12 +01:00
Philipp Crocoll
540e14bbe7 1.07-pre8 2019-03-24 20:27:35 +01:00
PhilippC
0ebd355edd New translations strings.xml (Slovak) 2019-03-23 23:10:10 +01:00
PhilippC
68d4dfed04 New translations strings.xml (Slovenian) 2019-03-23 19:40:09 +01:00
PhilippC
37a482d2e4 New translations strings.xml (Slovenian) 2019-03-23 19:30:09 +01:00
PhilippC
b79cc65728 New translations strings.xml (Japanese) 2019-03-23 16:10:10 +01:00
PhilippC
78977c7e31 New translations strings.xml (Japanese) 2019-03-23 16:00:11 +01:00
PhilippC
1957fc5345 New translations strings.xml (Turkish) 2019-03-23 07:50:09 +01:00
PhilippC
49cefff75d New translations strings.xml (Turkish) 2019-03-23 07:30:08 +01:00
PhilippC
2ebb145b7b New translations strings.xml (Turkish) 2019-03-23 07:20:17 +01:00
PhilippC
0a6f1394e4 New translations strings.xml (Turkish) 2019-03-23 07:10:11 +01:00
PhilippC
1310913281 New translations strings.xml (Slovenian) 2019-03-22 20:40:10 +01:00
PhilippC
c245c5ade3 New translations strings.xml (Slovenian) 2019-03-22 20:20:10 +01:00
PhilippC
9e6f45a59b New translations strings.xml (Slovenian) 2019-03-22 20:00:18 +01:00
PhilippC
f6a78c8890 New translations strings.xml (Slovenian) 2019-03-22 16:00:15 +01:00
PhilippC
76717fa3cb New translations strings.xml (Slovenian) 2019-03-22 13:10:10 +01:00
PhilippC
a19230393d New translations strings.xml (Chinese Simplified) 2019-03-22 08:00:13 +01:00
PhilippC
0b89969a33 New translations strings.xml (Chinese Simplified) 2019-03-22 07:50:10 +01:00
PhilippC
bbe97230d2 New translations strings.xml (German) 2019-03-22 05:40:10 +01:00
PhilippC
ee0161737c New translations strings.xml (Catalan) 2019-03-22 05:20:10 +01:00
Philipp Crocoll
e7e0b91703 fix potential crash when changing offline cache preference 2019-03-22 04:59:44 +01:00
PhilippC
dbcdf71bbe New translations strings.xml (French) 2019-03-21 21:50:12 +01:00
PhilippC
779615c09a New translations strings.xml (Finnish) 2019-03-21 06:20:11 +01:00
PhilippC
1c3a1ce53c New translations strings.xml (Finnish) 2019-03-21 06:10:09 +01:00
PhilippC
981c524e3f New translations strings.xml (Croatian) 2019-03-21 05:22:26 +01:00
PhilippC
44a7d68f31 New translations strings.xml (Chinese Traditional) 2019-03-21 05:22:22 +01:00
PhilippC
ae858e3dc4 New translations strings.xml (Chinese Simplified) 2019-03-21 05:22:17 +01:00
PhilippC
22fd23a31d New translations strings.xml (Catalan) 2019-03-21 05:22:13 +01:00
PhilippC
2babe87d6d New translations strings.xml (Russian) 2019-03-21 05:21:59 +01:00
PhilippC
95a8b3fe34 New translations strings.xml (German) 2019-03-21 05:21:50 +01:00
PhilippC
32c526a26a New translations strings.xml (Portuguese, Brazilian) 2019-03-21 05:21:46 +01:00
Philipp Crocoll
b2adfad2ee catch potential file not found exceptions 2019-03-21 04:27:44 +01:00
Philipp Crocoll
ee5a8534a7 catch all exceptions when stopping fingerprint, maybe there is a java exception 2019-03-21 04:15:04 +01:00
Philipp Crocoll
80ba3b969d allow to turn off saving of credentials through Autofill for the whole app. Closes https://github.com/PhilippC/keepass2android/issues/488. Allow to re-enable disabled autofill targets in the app preferences. Closes https://github.com/PhilippC/keepass2android/issues/715 2019-03-21 04:13:29 +01:00
Philipp Crocoll
83bd6911c8 Merge branch 'master' of c:/ph/keepass2android 2019-03-19 22:08:28 +01:00
Philipp Crocoll
6c66f6199c 1.07-pre7 2019-03-19 22:08:19 +01:00
Philipp Crocoll
c11731541c reenable search suggestion listener 2019-03-19 22:07:38 +01:00
PhilippC
609593ebd0 New translations strings.xml (French) 2019-03-19 21:51:42 +01:00
PhilippC
85b867a5ca New translations strings.xml (Slovak) 2019-03-19 21:51:27 +01:00
PhilippC
a3690051eb New translations strings.xml (Portuguese) 2019-03-19 21:51:15 +01:00
PhilippC
ecb44a2611 New translations strings.xml (Polish) 2019-03-19 21:51:08 +01:00
PhilippC
7898ea9ba7 New translations strings.xml (Japanese) 2019-03-19 21:50:50 +01:00
PhilippC
90a2029f3d New translations strings.xml (Italian) 2019-03-19 21:50:45 +01:00
PhilippC
1d9a9ea658 New translations strings.xml (Hungarian) 2019-03-19 21:50:36 +01:00
PhilippC
e88f80eda3 New translations strings.xml (Spanish) 2019-03-19 21:50:27 +01:00
Philipp Crocoll
025e2f415d improve logging output 2019-03-19 21:49:04 +01:00
Philipp Crocoll
e113ca79de add missing file 2019-03-19 21:23:50 +01:00
Philipp Crocoll
f988c44440 update changelog 2019-03-19 21:20:07 +01:00
Philipp Crocoll
37cda26e27 fix potential crashes in AutoFill service 2019-03-19 21:13:16 +01:00
Philipp Crocoll
65c2da9afa implement really hacky workaround for another crash on Samsung devices with Android 9 2019-03-19 20:58:37 +01:00
Philipp Crocoll
434b7b756b Merge branch 'master' of c:/ph/keepass2android 2019-03-18 05:51:54 +01:00
Philipp Crocoll
9dfcab6c1c 1.07-pre6 2019-03-18 05:50:56 +01:00
Philipp Crocoll
9f39f4e377 set NoHistory flag for SwitchImeActivity, improves switching back to KP2A 2019-03-18 05:44:01 +01:00
Philipp Crocoll
58da4284ac Merge branch 'master' of c:/ph/keepass2android
# Resolved Conflicts:
#	src/keepass2android/Properties/AndroidManifest_net.xml
#	src/keepass2android/Resources/values/strings.xml
2019-03-18 05:12:05 +01:00
Philipp Crocoll
55787ff6cf fix crash on Samsung devices with Android 9, fix problem with bringing up keyboard 2019-03-18 05:09:20 +01:00
Philipp Crocoll
3b93610e43 fix crash when sending debug log (closes https://github.com/PhilippC/keepass2android/issues/264) 2019-03-18 05:08:34 +01:00
Philipp Crocoll
40f3066ee0 avoid potential crashes when opening child databases (caused by network on main thread or URLs without username/password), fixes https://github.com/PhilippC/keepass2android/issues/728 2019-03-18 03:56:34 +01:00
PhilippC
2108aac41c New translations strings.xml (Russian) 2019-03-15 10:50:12 +01:00
PhilippC
68f8300395 New translations strings.xml (Russian) 2019-03-15 10:40:10 +01:00
PhilippC
325a61912e New translations strings.xml (Russian) 2019-03-15 10:30:10 +01:00
PhilippC
7363c88fce New translations strings.xml (Russian) 2019-03-15 10:20:09 +01:00
PhilippC
0b0f95c65c New translations strings.xml (Danish) 2019-03-14 18:20:18 +01:00
PhilippC
354675f1e5 New translations strings.xml (German) 2019-03-13 14:50:13 +01:00
PhilippC
7a769f283b New translations strings.xml (German) 2019-03-13 14:40:14 +01:00
PhilippC
3dc67d5978 New translations strings.xml (Portuguese, Brazilian) 2019-03-12 15:40:09 +01:00
PhilippC
d3a0d71857 New translations strings.xml (Portuguese, Brazilian) 2019-03-12 15:30:16 +01:00
PhilippC
72f7534a5f New translations strings.xml (Portuguese, Brazilian) 2019-03-12 15:20:13 +01:00
PhilippC
27a733cbed New translations strings.xml (Portuguese, Brazilian) 2019-03-12 15:10:13 +01:00
Philipp Crocoll
92a0ce98bb make nfc implementation compatible to Yubikey NEO 5 (closes https://github.com/PhilippC/keepass2android/issues/564) 2019-03-11 11:46:02 +01:00
Philipp Crocoll
84c9632508 using public suffix to determine canonical domains which fixes the aliexpress issue (fixes https://github.com/PhilippC/keepass2android/issues/711) 2019-03-11 10:56:55 +01:00
Philipp Crocoll
22c2b406db more attempts to get OneDrive for business working 2019-03-11 09:43:42 +01:00
PhilippC
bc374a1317 New translations strings.xml (Spanish) 2019-03-11 09:10:09 +01:00
Philipp Crocoll
0bf82a999a don't refuse to load databases with invalid times 2019-03-11 02:52:56 +01:00
PhilippC
453a8459ac New translations strings.xml (Turkish) 2019-03-10 01:20:10 +01:00
PhilippC
53f6ddad22 New translations strings.xml (Ukrainian) 2019-03-09 22:10:08 +01:00
PhilippC
14bd128931 New translations strings.xml (Greek) 2019-03-08 23:30:11 +01:00
PhilippC
b0b8daa03d New translations strings.xml (Greek) 2019-03-08 23:20:08 +01:00
PhilippC
940cd70f64 New translations strings.xml (Spanish) 2019-03-08 08:40:09 +01:00
PhilippC
d8cdef0622 New translations strings.xml (Spanish) 2019-03-08 08:30:12 +01:00
PhilippC
44a7cfe32e New translations strings.xml (Spanish) 2019-03-08 08:20:09 +01:00
PhilippC
8584352e21 New translations strings.xml (Turkish) 2019-03-07 12:50:10 +01:00
PhilippC
1c39d027e0 New translations strings.xml (Turkish) 2019-03-07 12:40:12 +01:00
PhilippC
ce82e2cdcf New translations strings.xml (Arabic) 2019-03-06 07:30:10 +01:00
PhilippC
a8492f75cd New translations strings.xml (Arabic) 2019-03-06 07:20:10 +01:00
PhilippC
03afb38aa3 New translations strings.xml (Portuguese) 2019-03-04 19:20:10 +01:00
PhilippC
acc2acce2c New translations strings.xml (Portuguese) 2019-03-04 18:50:08 +01:00
PhilippC
3a612864f8 New translations strings.xml (Portuguese) 2019-03-04 18:40:09 +01:00
PhilippC
7e1789a3f4 New translations strings.xml (Slovak) 2019-03-03 13:10:10 +01:00
PhilippC
69dea794e1 New translations strings.xml (Dutch) 2019-03-02 14:50:08 +01:00
PhilippC
4e024bd8b1 New translations strings.xml (Dutch) 2019-03-02 14:40:10 +01:00
PhilippC
6078e511aa New translations strings.xml (Dutch) 2019-03-02 14:30:09 +01:00
PhilippC
58574cd824 New translations strings.xml (Spanish) 2019-02-27 14:30:11 +01:00
PhilippC
635fa99cf2 New translations strings.xml (Spanish) 2019-02-27 14:00:12 +01:00
PhilippC
074d71cef7 New translations strings.xml (Spanish) 2019-02-27 09:20:12 +01:00
PhilippC
027075b1b2 New translations strings.xml (Czech) 2019-02-24 00:00:09 +01:00
PhilippC
898ad42f96 New translations strings.xml (Czech) 2019-02-23 23:50:10 +01:00
PhilippC
c87ffeff71 New translations strings.xml (Japanese) 2019-02-22 11:20:10 +01:00
PhilippC
40f0744adc New translations strings.xml (Japanese) 2019-02-22 11:10:09 +01:00
PhilippC
eba555f260 New translations strings.xml (Japanese) 2019-02-22 11:00:12 +01:00
PhilippC
e7db208a40 New translations strings.xml (Russian) 2019-02-20 20:40:11 +01:00
PhilippC
69399bb328 New translations strings.xml (Italian) 2019-02-18 20:20:14 +01:00
PhilippC
749e928d66 New translations strings.xml (Italian) 2019-02-18 20:10:09 +01:00
PhilippC
a3b8690609 New translations strings.xml (Polish) 2019-02-18 12:40:12 +01:00
PhilippC
340e6794ca New translations strings.xml (German) 2019-02-17 02:50:09 +01:00
PhilippC
7a23152cee New translations strings.xml (German) 2019-02-17 02:40:09 +01:00
PhilippC
d00f71884a New translations strings.xml (German) 2019-02-17 02:30:11 +01:00
PhilippC
587014159d New translations strings.xml (Chinese Simplified) 2019-02-16 15:20:11 +01:00
PhilippC
e2cb3691e4 New translations strings.xml (Chinese Simplified) 2019-02-16 15:10:09 +01:00
PhilippC
a40be3b658 New translations strings.xml (Chinese Simplified) 2019-02-16 13:50:08 +01:00
PhilippC
598d7c699a New translations strings.xml (Chinese Simplified) 2019-02-16 13:40:11 +01:00
PhilippC
23c9b9f2d9 New translations strings.xml (Norwegian Bokmal) 2019-02-15 08:50:09 +01:00
PhilippC
22aeff708a New translations strings.xml (Chinese Simplified) 2019-02-14 08:10:11 +01:00
PhilippC
e9b7b935ee New translations strings.xml (Chinese Simplified) 2019-02-14 08:00:15 +01:00
PhilippC
eb0d9ec482 New translations strings.xml (Chinese Simplified) 2019-02-14 07:50:11 +01:00
PhilippC
cfd0d72100 New translations strings.xml (Polish) 2019-02-11 20:00:15 +01:00
PhilippC
f615dc265a New translations strings.xml (Polish) 2019-02-11 19:50:12 +01:00
PhilippC
53c4971c4e New translations strings.xml (Polish) 2019-02-11 19:40:12 +01:00
PhilippC
3a98fa9f53 New translations strings.xml (Japanese) 2019-02-11 08:20:11 +01:00
PhilippC
6ed5386c12 New translations strings.xml (German) 2019-02-11 04:10:09 +01:00
PhilippC
a998a7f92b New translations strings.xml (German) 2019-02-11 04:00:09 +01:00
PhilippC
3218989b13 New translations strings.xml (German) 2019-02-11 03:50:09 +01:00
PhilippC
3aff954063 New translations strings.xml (Catalan) 2019-02-09 16:20:09 +01:00
PhilippC
11e824c133 New translations strings.xml (Catalan) 2019-02-09 16:10:09 +01:00
PhilippC
a26662a813 New translations strings.xml (Catalan) 2019-02-09 10:10:10 +01:00
PhilippC
007838197b New translations strings.xml (Catalan) 2019-02-09 10:00:09 +01:00
PhilippC
0ad82d5b91 New translations strings.xml (Catalan) 2019-02-09 09:10:08 +01:00
PhilippC
52e47a62d2 New translations strings.xml (Korean) 2019-02-08 17:40:11 +01:00
PhilippC
cbaaf3ee54 New translations strings.xml (Chinese Traditional) 2019-02-08 16:10:12 +01:00
PhilippC
26f26ee35d New translations strings.xml (Chinese Traditional) 2019-02-08 16:00:13 +01:00
PhilippC
0102ac77e3 New translations strings.xml (Chinese Traditional) 2019-02-08 15:50:10 +01:00
PhilippC
d24101bee2 New translations strings.xml (Chinese Traditional) 2019-02-08 15:40:11 +01:00
PhilippC
36cced5ce7 New translations strings.xml (Chinese Traditional) 2019-02-08 15:30:13 +01:00
PhilippC
87eb537ebe New translations strings.xml (French) 2019-02-07 00:40:11 +01:00
PhilippC
86fdc17d2a New translations strings.xml (Slovak) 2019-02-06 21:21:11 +01:00
PhilippC
bd8763c62f New translations strings.xml (Portuguese, Brazilian) 2019-02-06 21:20:54 +01:00
Philipp Crocoll
bc917d41ad 1.07-pre5 2019-02-06 21:13:59 +01:00
Philipp Crocoll
68b60b427a fix missing native keytransform, closes #630 2019-02-06 21:13:46 +01:00
PhilippC
c9e64c53ec New translations strings.xml (Slovak) 2019-02-06 16:10:18 +01:00
PhilippC
6ba6c6bac7 New translations strings.xml (Slovak) 2019-02-06 16:00:26 +01:00
PhilippC
f2967e1d8f New translations strings.xml (Slovak) 2019-02-06 15:50:13 +01:00
PhilippC
60783ca88e New translations strings.xml (Slovak) 2019-02-06 15:40:12 +01:00
PhilippC
8d7c1371df New translations strings.xml (Vietnamese) 2019-02-06 15:33:16 +01:00
PhilippC
090bfe9091 New translations strings.xml (Basque) 2019-02-06 15:33:10 +01:00
PhilippC
3ad2ba9f33 New translations strings.xml (Bulgarian) 2019-02-06 15:33:05 +01:00
PhilippC
1036def599 New translations strings.xml (Catalan) 2019-02-06 15:33:00 +01:00
PhilippC
2acad69940 New translations strings.xml (Chinese Simplified) 2019-02-06 15:32:56 +01:00
PhilippC
1f18011a5b New translations strings.xml (Chinese Traditional) 2019-02-06 15:32:51 +01:00
PhilippC
3da63b378c New translations strings.xml (Croatian) 2019-02-06 15:32:45 +01:00
PhilippC
0852aa7429 New translations strings.xml (Czech) 2019-02-06 15:32:39 +01:00
PhilippC
8a863ca636 New translations strings.xml (Danish) 2019-02-06 15:32:33 +01:00
PhilippC
83db5c205d New translations strings.xml (Finnish) 2019-02-06 15:32:26 +01:00
PhilippC
760e73959c New translations strings.xml (French) 2019-02-06 15:32:22 +01:00
PhilippC
e516e06a53 New translations strings.xml (Galician) 2019-02-06 15:32:16 +01:00
PhilippC
a954461be3 New translations strings.xml (German) 2019-02-06 15:32:12 +01:00
PhilippC
5998369af6 New translations strings.xml (Greek) 2019-02-06 15:32:06 +01:00
PhilippC
f41a2604c4 New translations strings.xml (Azerbaijani) 2019-02-06 15:31:57 +01:00
PhilippC
6fc578d286 New translations strings.xml (Hebrew) 2019-02-06 15:31:51 +01:00
PhilippC
f2604a5fec New translations strings.xml (Indonesian) 2019-02-06 15:31:47 +01:00
PhilippC
642026156a New translations strings.xml (Italian) 2019-02-06 15:31:41 +01:00
PhilippC
708c511a98 New translations strings.xml (Japanese) 2019-02-06 15:31:35 +01:00
PhilippC
2c75b5886f New translations strings.xml (Korean) 2019-02-06 15:31:30 +01:00
PhilippC
0ef7f5a955 New translations strings.xml (Russian) 2019-02-06 15:31:20 +01:00
PhilippC
28856c01cd New translations strings.xml (Serbian (Cyrillic)) 2019-02-06 15:31:09 +01:00
PhilippC
a47bd03e94 New translations strings.xml (Slovak) 2019-02-06 15:31:01 +01:00
PhilippC
c5551ddeb5 New translations strings.xml (Slovenian) 2019-02-06 15:30:57 +01:00
PhilippC
020f274ef3 New translations strings.xml (Spanish) 2019-02-06 15:30:51 +01:00
PhilippC
e2f8f04ace New translations strings.xml (Swedish) 2019-02-06 15:30:45 +01:00
PhilippC
6d61d885c1 New translations strings.xml (Turkish) 2019-02-06 15:30:39 +01:00
PhilippC
e98cd16032 New translations strings.xml (Ukrainian) 2019-02-06 15:30:33 +01:00
PhilippC
4ec8bdda2f New translations strings.xml (Hungarian) 2019-02-06 15:30:29 +01:00
PhilippC
16df1624f8 New translations strings.xml (Arabic) 2019-02-06 15:30:20 +01:00
PhilippC
cb978e012b New translations strings.xml (Portuguese) 2019-02-06 06:20:56 +01:00
PhilippC
b7ea02696b New translations strings.xml (Polish) 2019-02-06 06:20:51 +01:00
PhilippC
49cb8874ca New translations strings.xml (Persian) 2019-02-06 06:20:46 +01:00
PhilippC
1384256d87 New translations strings.xml (Norwegian Nynorsk) 2019-02-06 06:20:41 +01:00
PhilippC
705b2fcd9a New translations strings.xml (Norwegian Bokmal) 2019-02-06 06:20:38 +01:00
PhilippC
906ca77973 New translations strings.xml (Romanian) 2019-02-06 06:20:34 +01:00
PhilippC
7dc5c734d0 New translations strings.xml (Dutch) 2019-02-06 06:20:29 +01:00
Philipp Crocoll
a3c1e311f7 1.07-pre4 2019-02-06 06:15:33 +01:00
Philipp Crocoll
4d246a250d remove AdalBindings project 2019-02-06 06:15:20 +01:00
Philipp Crocoll
8d2c41f558 fix duplicate string resource id 2019-02-06 06:14:49 +01:00
PhilippC
3b06c4c14a New translations strings.xml (Chinese Traditional) 2019-02-05 20:03:10 +01:00
PhilippC
f98dcb813d New translations strings.xml (Finnish) 2019-02-05 20:02:56 +01:00
PhilippC
17cf31e8cf New translations strings.xml (Portuguese, Brazilian) 2019-02-05 20:02:13 +01:00
PhilippC
6771c378bf New translations strings.xml (Russian) 2019-02-05 20:02:09 +01:00
Philipp Crocoll
013aa4d071 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-02-05 19:55:58 +01:00
PhilippC
b887e16628 Merge pull request #515 from PhilippC/l10n_master
New Crowdin translations
2019-02-05 19:55:45 +01:00
PhilippC
7774ed65bd Merge branch 'master' into l10n_master 2019-02-05 19:55:11 +01:00
PhilippC
c85f996aa3 New translations strings.xml (Portuguese) 2019-02-05 19:51:56 +01:00
Philipp Crocoll
64d9cc00d1 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2019-02-05 19:46:56 +01:00
Philipp Crocoll
a0efbecee4 Forward to Search results directly when multiple databases open, closes https://github.com/PhilippC/keepass2android/issues/642 2019-02-05 12:15:22 +01:00
Philipp Crocoll
cceb4c6677 increase timeout (https://github.com/PhilippC/keepass2android/issues/339). still todo: test how KP2A behaves on write errors. 2019-02-05 12:14:52 +01:00
Philipp Crocoll
66e448a648 avoid using a deprecated method, might help with https://github.com/PhilippC/keepass2android/issues/653 2019-02-05 11:08:38 +01:00
Philipp Crocoll
eb134fd41a NfcOtpActivity is back - this time with app link enabled (allows users to enter https://keepass2android.crocoll.net/neo/ as NDEF payload and should work on all recent Android devices with NFC). Closes #603 2019-02-05 10:36:08 +01:00
Philipp Crocoll
857d6f9008 reset cancellation signal when cancelled. might fix https://github.com/PhilippC/keepass2android/issues/560 (cannot reproduce, so user must test) 2019-02-05 10:04:10 +01:00
PhilippC
32396c4534 Merge pull request #654 from Small-Ku/master
Update crowdin.yml for better Chinese localiztion
2019-02-05 06:38:57 +01:00
Philipp Crocoll
2df46b6647 improve language in some strings 2019-02-05 06:29:01 +01:00
Philipp Crocoll
9f6ad37547 Revert "failing attempt to integrate ADAL authentication (for OneDrive for business)"
This reverts commit 6b69ad20ad.
2019-02-05 06:28:40 +01:00
PhilippC
65955843e5 New translations strings.xml (Dutch) 2019-01-26 15:40:08 +01:00
PhilippC
9e9b5fb9dd New translations strings.xml (Polish) 2019-01-19 14:10:09 +01:00
PhilippC
f96fc67bc2 New translations strings.xml (Russian) 2019-01-15 13:50:14 +01:00
PhilippC
07ebd0b4ca New translations strings.xml (Russian) 2019-01-15 13:40:10 +01:00
PhilippC
64e955c512 New translations strings.xml (Japanese) 2019-01-14 13:50:11 +01:00
PhilippC
161753b195 New translations strings.xml (Japanese) 2019-01-14 13:40:15 +01:00
PhilippC
f92adb847a New translations strings.xml (Japanese) 2019-01-14 13:30:13 +01:00
PhilippC
98f780c277 New translations strings.xml (Portuguese, Brazilian) 2019-01-14 03:20:08 +01:00
PhilippC
3c512e74db New translations strings.xml (Portuguese, Brazilian) 2019-01-14 03:10:08 +01:00
PhilippC
9b752dd28f New translations strings.xml (Portuguese, Brazilian) 2019-01-14 03:00:11 +01:00
PhilippC
3cf2719c29 New translations strings.xml (Croatian) 2019-01-07 07:30:10 +01:00
PhilippC
be420c0394 New translations strings.xml (Croatian) 2019-01-07 07:20:08 +01:00
PhilippC
1b1d995b9d New translations strings.xml (Russian) 2019-01-03 16:50:10 +01:00
PhilippC
6410f41fa2 New translations strings.xml (Italian) 2019-01-02 15:50:09 +01:00
PhilippC
f90a45b1e6 New translations strings.xml (Italian) 2019-01-02 15:40:08 +01:00
PhilippC
9ca5569122 New translations strings.xml (Slovak) 2019-01-02 12:20:08 +01:00
Philipp Crocoll
a6b4a35973 added OneDriveStorage2 based on Graph SDK 2018-12-30 07:53:29 +01:00
PhilippC
06cb6bac3e New translations strings.xml (Turkish) 2018-12-28 10:50:11 +01:00
PhilippC
5241aeea9f New translations strings.xml (Turkish) 2018-12-28 10:40:09 +01:00
Philipp Crocoll
6b69ad20ad failing attempt to integrate ADAL authentication (for OneDrive for business) 2018-12-27 21:46:11 +01:00
PhilippC
a79d2ec323 New translations strings.xml (Catalan) 2018-12-27 21:40:08 +01:00
PhilippC
209a0fe2da New translations strings.xml (Catalan) 2018-12-27 21:30:10 +01:00
Small_Ku
277f439f70 Update crowdin.yml
for Chinese translation
2018-12-27 00:05:15 +08:00
PhilippC
d9f29fdcaa New translations strings.xml (Danish) 2018-12-26 06:50:08 +01:00
PhilippC
a9141d3fe2 New translations strings.xml (Danish) 2018-12-26 06:40:08 +01:00
PhilippC
4ce55e88fa New translations strings.xml (Danish) 2018-12-26 06:30:08 +01:00
PhilippC
c930d388dc New translations strings.xml (Finnish) 2018-12-25 10:30:25 +01:00
PhilippC
12c7911cf4 New translations strings.xml (Finnish) 2018-12-25 10:20:18 +01:00
PhilippC
06377ff497 New translations strings.xml (Finnish) 2018-12-25 10:10:08 +01:00
PhilippC
7a1938e515 New translations strings.xml (Finnish) 2018-12-25 10:00:09 +01:00
PhilippC
445166d220 New translations strings.xml (Danish) 2018-12-25 08:10:08 +01:00
PhilippC
3963501d0c New translations strings.xml (Danish) 2018-12-25 08:00:09 +01:00
PhilippC
acb51d7859 New translations strings.xml (Spanish) 2018-12-23 19:50:09 +01:00
PhilippC
4dbfb76ced Merge pull request #628 from Skycoder42/master
Correctly extract protected fields from intent (Fixes #627)
2018-12-23 07:27:32 +01:00
Philipp Crocoll
4188464652 change "application" to "app" in english strings 2018-12-23 07:09:17 +01:00
PhilippC
fb552a8d62 New translations strings.xml (Chinese Simplified) 2018-12-23 02:40:09 +01:00
PhilippC
c998e4e34f New translations strings.xml (Chinese Simplified) 2018-12-23 02:30:09 +01:00
PhilippC
ab46015a5a New translations strings.xml (Chinese Simplified) 2018-12-23 02:20:09 +01:00
PhilippC
dd10740bf2 New translations strings.xml (German) 2018-12-22 13:40:08 +01:00
PhilippC
44f26685e4 New translations strings.xml (German) 2018-12-22 13:30:08 +01:00
PhilippC
3caa56ae8c New translations strings.xml (French) 2018-12-21 16:30:09 +01:00
PhilippC
1ca4fbb078 New translations strings.xml (Czech) 2018-12-18 23:40:10 +01:00
PhilippC
bdf5270fa0 New translations strings.xml (Czech) 2018-12-18 19:30:09 +01:00
PhilippC
e3e865b108 New translations strings.xml (Czech) 2018-12-18 19:20:09 +01:00
PhilippC
33f3736798 New translations strings.xml (Czech) 2018-12-18 19:10:11 +01:00
PhilippC
a86fbcee44 New translations strings.xml (Czech) 2018-12-18 19:00:13 +01:00
PhilippC
cdbf8a2811 New translations strings.xml (Czech) 2018-12-18 18:50:09 +01:00
PhilippC
da4fae4e04 New translations strings.xml (Czech) 2018-12-18 18:40:10 +01:00
PhilippC
ddeefc4ab6 New translations strings.xml (Chinese Traditional) 2018-12-17 19:20:11 +01:00
PhilippC
33702064a5 New translations strings.xml (French) 2018-12-17 12:40:10 +01:00
PhilippC
b72995c8bf New translations strings.xml (Chinese Simplified) 2018-12-17 12:20:16 +01:00
PhilippC
868eb1c4fb New translations strings.xml (Catalan) 2018-12-17 12:20:10 +01:00
PhilippC
d93140efc6 New translations strings.xml (Chinese Traditional) 2018-12-17 12:12:20 +01:00
PhilippC
0f59d46ede New translations strings.xml (Croatian) 2018-12-17 12:12:14 +01:00
PhilippC
812b5f22f9 New translations strings.xml (Czech) 2018-12-17 12:12:10 +01:00
PhilippC
d1b5feae0d New translations strings.xml (Danish) 2018-12-17 12:12:05 +01:00
PhilippC
0861fa9e03 New translations strings.xml (Dutch) 2018-12-17 12:12:00 +01:00
PhilippC
c3fe9f513d New translations strings.xml (Finnish) 2018-12-17 12:11:56 +01:00
PhilippC
b513669f4d New translations strings.xml (French) 2018-12-17 12:11:49 +01:00
PhilippC
1ad74fdacc New translations strings.xml (Galician) 2018-12-17 12:11:44 +01:00
PhilippC
9a24ede989 New translations strings.xml (German) 2018-12-17 12:11:40 +01:00
PhilippC
7ea8dfa8ce New translations strings.xml (Greek) 2018-12-17 12:11:35 +01:00
PhilippC
670068eeba New translations strings.xml (Hungarian) 2018-12-17 12:11:28 +01:00
PhilippC
70310f1970 New translations strings.xml (Indonesian) 2018-12-17 12:11:19 +01:00
PhilippC
4463c148a5 New translations strings.xml (Japanese) 2018-12-17 12:11:15 +01:00
PhilippC
c982b45134 New translations strings.xml (Korean) 2018-12-17 12:11:10 +01:00
PhilippC
d209a2c7f8 New translations strings.xml (Norwegian Bokmal) 2018-12-17 12:11:05 +01:00
PhilippC
75c73193a2 New translations strings.xml (Portuguese, Brazilian) 2018-12-17 12:10:59 +01:00
PhilippC
fc99f6774d New translations strings.xml (Romanian) 2018-12-17 12:10:54 +01:00
PhilippC
d40fab86c9 New translations strings.xml (Slovak) 2018-12-17 12:10:45 +01:00
PhilippC
5c0520e093 New translations strings.xml (Slovenian) 2018-12-17 12:10:41 +01:00
PhilippC
1bb9ead202 New translations strings.xml (Spanish) 2018-12-17 12:10:36 +01:00
PhilippC
3afd8915f0 New translations strings.xml (Swedish) 2018-12-17 12:10:32 +01:00
PhilippC
ba3f2d2823 New translations strings.xml (Turkish) 2018-12-17 12:10:28 +01:00
PhilippC
24989d80ac New translations strings.xml (Ukrainian) 2018-12-17 12:10:22 +01:00
PhilippC
d2c16158cc New translations strings.xml (Vietnamese) 2018-12-17 12:10:17 +01:00
PhilippC
8514fd6266 New translations strings.xml (Italian) 2018-12-17 12:10:13 +01:00
Philipp Crocoll
30d1534c01 show save errors as dialogs, closes #339 2018-12-17 12:09:31 +01:00
PhilippC
4f0800d4fc New translations strings.xml (Portuguese) 2018-12-17 12:00:49 +01:00
PhilippC
41fa396318 New translations strings.xml (Polish) 2018-12-17 12:00:45 +01:00
PhilippC
d94af84002 New translations strings.xml (Persian) 2018-12-17 12:00:41 +01:00
PhilippC
63b92cc35a New translations strings.xml (Russian) 2018-12-17 12:00:31 +01:00
PhilippC
3238d9fbc5 New translations strings.xml (Arabic) 2018-12-17 12:00:26 +01:00
Philipp Crocoll
780d4c95fe improve message when file is readonly, closes #521 2018-12-17 11:47:24 +01:00
PhilippC
c3b27c75bf New translations strings.xml (Chinese Traditional) 2018-12-17 11:40:08 +01:00
PhilippC
23c7031672 New translations strings.xml (Chinese Traditional) 2018-12-17 11:30:11 +01:00
PhilippC
9e98d09a93 New translations strings.xml (Chinese Traditional) 2018-12-17 11:20:11 +01:00
Philipp Crocoll
06e64f7347 more autofill logging 2018-12-17 11:12:07 +01:00
Philipp Crocoll
92594db78d automatically fill in OTPs copied from Yubiclip. closes #603 and closes #564 2018-12-17 11:11:56 +01:00
PhilippC
c574f2d6bd New translations strings.xml (Chinese Traditional) 2018-12-17 11:10:11 +01:00
PhilippC
ee156cbfd6 New translations strings.xml (Chinese Traditional) 2018-12-17 10:50:09 +01:00
PhilippC
73d12daf04 New translations strings.xml (Chinese Traditional) 2018-12-17 10:40:09 +01:00
Philipp Crocoll
e4179a934b fix wrong time display when editing expiration date, fixes #634 2018-12-17 10:03:43 +01:00
Philipp Crocoll
afd309d9a8 work on reducing popups for autofill/allow to disable autofill for query. not yet fully functional. refers to #455. 2018-12-17 10:03:02 +01:00
PhilippC
1a24b00c5e New translations strings.xml (Italian) 2018-12-17 09:40:08 +01:00
PhilippC
445e4d8b31 New translations strings.xml (Italian) 2018-12-17 09:30:34 +01:00
PhilippC
224ca98d0e New translations strings.xml (Swedish) 2018-12-16 23:50:10 +01:00
PhilippC
13419c9fb7 New translations strings.xml (Croatian) 2018-12-16 22:10:12 +01:00
PhilippC
00646bc84b New translations strings.xml (Croatian) 2018-12-16 22:00:13 +01:00
PhilippC
cb4b686335 New translations strings.xml (Dutch) 2018-12-16 14:10:09 +01:00
PhilippC
5e900b62c8 New translations strings.xml (Ukrainian) 2018-12-12 09:00:09 +01:00
PhilippC
74c94d37e5 New translations strings.xml (French) 2018-12-11 21:40:08 +01:00
PhilippC
588814d1a6 New translations strings.xml (Portuguese) 2018-12-11 21:30:12 +01:00
PhilippC
572b858f81 New translations strings.xml (Portuguese) 2018-12-11 21:20:10 +01:00
PhilippC
1a9fc48490 New translations strings.xml (Japanese) 2018-12-11 05:30:09 +01:00
PhilippC
2dd131e6c3 New translations strings.xml (Portuguese, Brazilian) 2018-12-11 00:10:08 +01:00
Philipp Crocoll
d1ad2a681f Autofill: fill emailAddress fields with username 2018-12-10 11:24:40 +01:00
Philipp Crocoll
e2e7666c4f fix incorrect webDomain checking, fixes https://github.com/PhilippC/keepass2android/issues/592 2018-12-10 11:23:44 +01:00
Philipp Crocoll
665639fdca fix switching keyboards not working in Android 9: fixes https://github.com/PhilippC/keepass2android/issues/530 2018-12-10 09:52:23 +01:00
Philipp Crocoll
8bb930c1fc make kdb library "embedded jar" instead of "inputjar" to fix issue with native key transform not working. -> 1.07-pre3 2018-12-10 09:50:26 +01:00
PhilippC
b3b9d8d105 New translations strings.xml (Catalan) 2018-12-09 17:30:10 +01:00
PhilippC
82c409252b New translations strings.xml (Polish) 2018-12-09 15:30:18 +01:00
PhilippC
14c63a03c4 New translations strings.xml (Chinese Simplified) 2018-12-09 15:30:14 +01:00
PhilippC
0c7ad8b16c New translations strings.xml (Catalan) 2018-12-09 15:30:10 +01:00
PhilippC
1bf2d8219a New translations strings.xml (Chinese Traditional) 2018-12-09 14:42:11 +01:00
PhilippC
a72264ef36 New translations strings.xml (Croatian) 2018-12-09 14:42:06 +01:00
PhilippC
1acc399568 New translations strings.xml (Czech) 2018-12-09 14:42:00 +01:00
PhilippC
160960437c New translations strings.xml (Danish) 2018-12-09 14:41:56 +01:00
PhilippC
61992adcca New translations strings.xml (Dutch) 2018-12-09 14:41:52 +01:00
PhilippC
10e0ae8200 New translations strings.xml (Finnish) 2018-12-09 14:41:47 +01:00
PhilippC
eb58b8576e New translations strings.xml (French) 2018-12-09 14:41:43 +01:00
PhilippC
9b4d2d6ed7 New translations strings.xml (Galician) 2018-12-09 14:41:38 +01:00
PhilippC
6417e9dec5 New translations strings.xml (German) 2018-12-09 14:41:33 +01:00
PhilippC
f5ac217f13 New translations strings.xml (Greek) 2018-12-09 14:41:29 +01:00
PhilippC
a3d3b14dd1 New translations strings.xml (Bulgarian) 2018-12-09 14:41:21 +01:00
PhilippC
8fccce8684 New translations strings.xml (Hungarian) 2018-12-09 14:41:17 +01:00
PhilippC
4a847cd74a New translations strings.xml (Italian) 2018-12-09 14:41:11 +01:00
PhilippC
f4c1db39ad New translations strings.xml (Japanese) 2018-12-09 14:41:07 +01:00
PhilippC
d9ff177427 New translations strings.xml (Korean) 2018-12-09 14:41:02 +01:00
PhilippC
95e3566c5f New translations strings.xml (Norwegian Bokmal) 2018-12-09 14:40:57 +01:00
PhilippC
76e02ff514 New translations strings.xml (Romanian) 2018-12-09 14:40:52 +01:00
PhilippC
8aca9a2d82 New translations strings.xml (Serbian (Cyrillic)) 2018-12-09 14:40:47 +01:00
PhilippC
3abab2072a New translations strings.xml (Slovak) 2018-12-09 14:40:42 +01:00
PhilippC
ca9e479dc5 New translations strings.xml (Slovenian) 2018-12-09 14:40:38 +01:00
PhilippC
4d230a7b3e New translations strings.xml (Spanish) 2018-12-09 14:40:34 +01:00
PhilippC
974cc59e6c New translations strings.xml (Swedish) 2018-12-09 14:40:31 +01:00
PhilippC
9f09b144f0 New translations strings.xml (Turkish) 2018-12-09 14:40:26 +01:00
PhilippC
9d4dad5fee New translations strings.xml (Ukrainian) 2018-12-09 14:40:22 +01:00
PhilippC
46ffa93d93 New translations strings.xml (Vietnamese) 2018-12-09 14:40:19 +01:00
PhilippC
8b709bc070 New translations strings.xml (Indonesian) 2018-12-09 14:40:14 +01:00
PhilippC
c1284c760a New translations strings.xml (Basque) 2018-12-09 14:40:09 +01:00
PhilippC
6529a94d3a New translations strings.xml (Portuguese) 2018-12-09 08:30:39 +01:00
PhilippC
f5e91a0524 New translations strings.xml (Polish) 2018-12-09 08:30:35 +01:00
PhilippC
f63bd3016b New translations strings.xml (Norwegian Nynorsk) 2018-12-09 08:30:28 +01:00
PhilippC
09cd590796 New translations strings.xml (Russian) 2018-12-09 08:30:24 +01:00
PhilippC
da728c4039 New translations strings.xml (Arabic) 2018-12-09 08:30:20 +01:00
Philipp Crocoll
14b7b8cec1 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-12-09 08:23:18 +01:00
Philipp Crocoll
3695c04933 avoid endless loops trying to open databases when loading fails. changelog 1.07-pre2 for release. 2018-12-09 08:22:45 +01:00
Philipp Crocoll
f0f3bb6ede more logging regarding key transformation 2018-12-09 08:21:25 +01:00
Philipp Crocoll
7824326c5b fix typo in string 2018-12-09 08:21:03 +01:00
Philipp Crocoll
a65d263ae2 manifest for 1.07-pre2 2018-12-09 08:20:50 +01:00
PhilippC
f3e628be6b New translations strings.xml (Polish) 2018-12-09 02:10:10 +01:00
PhilippC
62e8dc7767 New translations strings.xml (Polish) 2018-12-09 02:00:09 +01:00
PhilippC
8e8cfa704a New translations strings.xml (Polish) 2018-12-09 01:50:08 +01:00
PhilippC
8b2eff0194 New translations strings.xml (Polish) 2018-12-09 01:40:08 +01:00
PhilippC
d4d063b97a New translations strings.xml (Polish) 2018-12-09 01:30:08 +01:00
PhilippC
d5ec33e1bd New translations strings.xml (Polish) 2018-12-09 01:20:09 +01:00
PhilippC
0726f22ec7 New translations strings.xml (Polish) 2018-12-09 01:00:12 +01:00
PhilippC
531ab93388 New translations strings.xml (Polish) 2018-12-09 00:50:08 +01:00
Philipp Crocoll
a7ad00d402 fix incorrect expiration time in EntryEditActivity, fixes #634 2018-12-08 17:44:02 +01:00
PhilippC
1f18848b4e New translations strings.xml (French) 2018-12-08 17:30:08 +01:00
PhilippC
38179d9ce3 New translations strings.xml (Chinese Simplified) 2018-12-07 08:10:10 +01:00
PhilippC
b86c493cf8 New translations strings.xml (Slovak) 2018-12-04 22:20:13 +01:00
PhilippC
0cc2df85da New translations strings.xml (Catalan) 2018-12-03 21:30:10 +01:00
Skycoder42
3157bac5f6 Add missing import 2018-12-03 18:40:01 +01:00
Skycoder42
5cb1709f5d Correctly extract protected fields from intent
Fixes #627
2018-12-03 18:37:36 +01:00
PhilippC
e6834b13a5 New translations strings.xml (Azerbaijani) 2018-12-03 11:52:59 +01:00
PhilippC
8a17daa002 New translations strings.xml (Chinese Traditional) 2018-12-03 11:52:08 +01:00
PhilippC
1b09189195 New translations strings.xml (Portuguese, Brazilian) 2018-12-03 11:50:50 +01:00
Philipp Crocoll
7f21fa2c40 added ConfigChanges flags to all activities which could potentially show the ykDroid dialog to reduce the chance of activity recreation (this is considered a workaround, waiting for the solution at https://github.com/pp3345/ykDroid/issues/8) 2018-12-03 11:37:08 +01:00
PhilippC
e0e4fc85f7 New translations strings.xml (Vietnamese) 2018-12-01 21:20:08 +01:00
PhilippC
b3e57db9f8 New translations strings.xml (Portuguese) 2018-12-01 00:40:08 +01:00
PhilippC
f8d93a5de7 New translations strings.xml (Portuguese) 2018-12-01 00:30:08 +01:00
PhilippC
c5423ac650 New translations strings.xml (German) 2018-11-29 09:20:13 +01:00
PhilippC
6e93d17d14 New translations strings.xml (German) 2018-11-29 09:10:15 +01:00
PhilippC
127bc1be5c New translations strings.xml (Chinese Simplified) 2018-11-28 03:20:14 +01:00
PhilippC
8136b09992 New translations strings.xml (Ukrainian) 2018-11-27 14:20:09 +01:00
PhilippC
2ffac3268e New translations strings.xml (Ukrainian) 2018-11-27 14:00:12 +01:00
PhilippC
c7056e9d40 New translations strings.xml (Ukrainian) 2018-11-27 13:50:10 +01:00
PhilippC
3fb8b4e7ff New translations strings.xml (Russian) 2018-11-26 21:50:09 +01:00
PhilippC
c728a7802d New translations strings.xml (Russian) 2018-11-26 21:40:09 +01:00
PhilippC
e7d3049456 New translations strings.xml (Russian) 2018-11-26 21:30:09 +01:00
PhilippC
316675c77e New translations strings.xml (Russian) 2018-11-26 21:20:09 +01:00
PhilippC
c836d3de71 New translations strings.xml (Russian) 2018-11-26 21:00:14 +01:00
PhilippC
230429135a New translations strings.xml (Russian) 2018-11-26 20:40:08 +01:00
PhilippC
0be8092382 New translations strings.xml (Russian) 2018-11-26 20:30:09 +01:00
PhilippC
eb2019e568 New translations strings.xml (Russian) 2018-11-26 20:20:12 +01:00
PhilippC
bffbb17271 New translations strings.xml (Spanish) 2018-11-26 09:30:11 +01:00
PhilippC
16b997096d New translations strings.xml (Spanish) 2018-11-26 09:20:10 +01:00
PhilippC
3b23f2a4ed New translations strings.xml (Hungarian) 2018-11-25 03:40:09 +01:00
PhilippC
87f86fd2e8 New translations strings.xml (Slovak) 2018-11-23 20:10:07 +01:00
PhilippC
396509579a New translations strings.xml (Slovak) 2018-11-23 20:00:09 +01:00
PhilippC
91175f19c4 New translations strings.xml (Catalan) 2018-11-23 17:50:09 +01:00
PhilippC
7c22ca0f91 New translations strings.xml (Catalan) 2018-11-23 17:40:18 +01:00
PhilippC
5eb416d8d9 New translations strings.xml (Turkish) 2018-11-22 20:32:03 +01:00
PhilippC
12e374bd2f New translations strings.xml (Turkish) 2018-11-22 20:20:15 +01:00
PhilippC
9b50f0e77c New translations strings.xml (German) 2018-11-21 23:00:10 +01:00
PhilippC
6aa89287b1 New translations strings.xml (German) 2018-11-21 22:50:14 +01:00
PhilippC
4b9ebdc87c New translations strings.xml (French) 2018-11-21 22:20:11 +01:00
PhilippC
336b45667e New translations strings.xml (Russian) 2018-11-21 12:50:09 +01:00
PhilippC
3c33a1126b New translations strings.xml (Russian) 2018-11-21 12:40:10 +01:00
Philipp Crocoll
836cdfb16c move CurrentlyWaitingKey to App instead of activity to survive activity recreation. Avoid activity recreation when plugging in Yubikey. Fixes #609. 2018-11-21 03:01:43 +01:00
Philipp Crocoll
8512bae997 make sure we always save database as KDBX4 when using ChallengeXCKey (for compatibility with KeepassXC), closes #596 2018-11-20 06:08:30 +01:00
PhilippC
6fbe8c5dee New translations strings.xml (German) 2018-11-20 05:00:11 +01:00
Philipp Crocoll
2132ea416b notify about unconfigured child databases. finishes implementation of child databases, thus closes #174 2018-11-20 04:54:45 +01:00
PhilippC
24081b9223 New translations strings.xml (Chinese Simplified) 2018-11-19 20:11:57 +01:00
PhilippC
220cc98559 New translations strings.xml (Portuguese, Brazilian) 2018-11-19 20:10:49 +01:00
Philipp Crocoll
ef8b9b0685 allow to open AutoOpenEntries manually if they are not "Enabled" (but "Visible"). Don't suggest to configure fingerprint unlock for child databases. 2018-11-19 20:03:53 +01:00
PhilippC
e8dd47369c New translations strings.xml (Portuguese) 2018-11-19 19:20:09 +01:00
PhilippC
537eaddecd New translations strings.xml (Portuguese) 2018-11-19 19:10:09 +01:00
Philipp Crocoll
183c171da6 first version of KeeAutoExec functionality in Keepass2Android 2018-11-19 19:06:12 +01:00
Philipp Crocoll
58c6114840 fix potentially incorrect display of storage type in EntryEditActivity 2018-11-18 13:33:19 +01:00
Philipp Crocoll
df5162ce56 implemented first version of AutoOpen entry editing 2018-11-18 03:56:49 +01:00
PhilippC
ae61fe892d New translations strings.xml (Persian) 2018-11-15 20:50:08 +01:00
PhilippC
a78de3b4b9 New translations strings.xml (Persian) 2018-11-15 20:40:10 +01:00
PhilippC
f26a864e83 New translations strings.xml (Persian) 2018-11-15 20:30:14 +01:00
PhilippC
0e0b03e6f2 New translations strings.xml (Persian) 2018-11-15 20:20:11 +01:00
Philipp Crocoll
e5595f13eb intermediate commit, starting to implement edit GUI for AutoOpen entries (does not compile) 2018-11-15 19:14:10 +01:00
PhilippC
1b12c16685 New translations strings.xml (Turkish) 2018-11-14 08:30:11 +01:00
PhilippC
048055daac New translations strings.xml (Turkish) 2018-11-14 08:10:11 +01:00
Philipp Crocoll
f2590f1fed Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-11-13 22:00:06 +01:00
Philipp Crocoll
2eb7b22100 start implementing the GUI for editing AutoOpen entries 2018-11-13 21:57:43 +01:00
PhilippC
f169750d1a New translations strings.xml (French) 2018-11-13 20:50:12 +01:00
PhilippC
fbb361fa7a New translations strings.xml (Swedish) 2018-11-13 18:10:13 +01:00
PhilippC
902faca13c New translations strings.xml (Italian) 2018-11-13 17:20:16 +01:00
PhilippC
7e476a5785 New translations strings.xml (Italian) 2018-11-13 17:10:18 +01:00
PhilippC
c78c5aad02 New translations strings.xml (Italian) 2018-11-13 17:00:22 +01:00
PhilippC
42c49645da New translations strings.xml (Catalan) 2018-11-13 17:00:18 +01:00
Philipp Crocoll
9427fb9ecc merge KeeAutoExec extension from https://sourceforge.net/p/keepass/discussion/329220/thread/509d35a111/#f70b 2018-11-12 09:47:38 +01:00
PhilippC
61878f293f New translations strings.xml (Chinese Traditional) 2018-11-12 09:12:42 +01:00
PhilippC
2bd1727076 New translations strings.xml (Croatian) 2018-11-12 09:12:37 +01:00
PhilippC
f0fbf7bf8b New translations strings.xml (Czech) 2018-11-12 09:12:31 +01:00
PhilippC
4a1fccc395 New translations strings.xml (Danish) 2018-11-12 09:12:27 +01:00
PhilippC
54c0497933 New translations strings.xml (Dutch) 2018-11-12 09:12:23 +01:00
PhilippC
49a99e9f15 New translations strings.xml (Finnish) 2018-11-12 09:12:16 +01:00
PhilippC
134fd5b2c2 New translations strings.xml (French) 2018-11-12 09:12:12 +01:00
PhilippC
696f9b3550 New translations strings.xml (Galician) 2018-11-12 09:12:06 +01:00
PhilippC
aeda42cb71 New translations strings.xml (German) 2018-11-12 09:11:59 +01:00
PhilippC
7ba8400c38 New translations strings.xml (Greek) 2018-11-12 09:11:55 +01:00
PhilippC
02f10f07e8 New translations strings.xml (Bulgarian) 2018-11-12 09:11:46 +01:00
PhilippC
83cc32afaa New translations strings.xml (Hungarian) 2018-11-12 09:11:41 +01:00
PhilippC
5b8382643a New translations strings.xml (Italian) 2018-11-12 09:11:35 +01:00
PhilippC
003cb8719a New translations strings.xml (Japanese) 2018-11-12 09:11:28 +01:00
PhilippC
c625ebc128 New translations strings.xml (Korean) 2018-11-12 09:11:23 +01:00
PhilippC
89c0b02327 New translations strings.xml (Norwegian Bokmal) 2018-11-12 09:11:17 +01:00
PhilippC
94bb17a301 New translations strings.xml (Romanian) 2018-11-12 09:11:11 +01:00
PhilippC
4f29b921e5 New translations strings.xml (Serbian (Cyrillic)) 2018-11-12 09:11:06 +01:00
PhilippC
8d5dbb0f3d New translations strings.xml (Slovak) 2018-11-12 09:11:02 +01:00
PhilippC
db321e45da New translations strings.xml (Slovenian) 2018-11-12 09:10:57 +01:00
PhilippC
8e254a341c New translations strings.xml (Spanish) 2018-11-12 09:10:53 +01:00
PhilippC
847a52ab08 New translations strings.xml (Swedish) 2018-11-12 09:10:47 +01:00
PhilippC
94e69e4e84 New translations strings.xml (Turkish) 2018-11-12 09:10:41 +01:00
PhilippC
8834526cac New translations strings.xml (Ukrainian) 2018-11-12 09:10:36 +01:00
PhilippC
788365687e New translations strings.xml (Vietnamese) 2018-11-12 09:10:31 +01:00
PhilippC
4c3d328140 New translations strings.xml (Indonesian) 2018-11-12 09:10:25 +01:00
PhilippC
2588f74f7c New translations strings.xml (Basque) 2018-11-12 09:10:20 +01:00
PhilippC
b70a4ef428 Merge pull request #612 from adorokhine/gradle-build
Add Gradle build config to PluginQR and update to match source conventions.
2018-11-12 09:08:02 +01:00
PhilippC
026a903251 New translations strings.xml (Portuguese) 2018-11-11 07:40:47 +01:00
PhilippC
3557113ed8 New translations strings.xml (Polish) 2018-11-11 07:40:42 +01:00
PhilippC
acd8c27a13 New translations strings.xml (Persian) 2018-11-11 07:40:38 +01:00
PhilippC
3c186eb113 New translations strings.xml (Norwegian Nynorsk) 2018-11-11 07:40:34 +01:00
PhilippC
841eb34224 New translations strings.xml (Russian) 2018-11-11 07:40:29 +01:00
PhilippC
ef583ba7ec New translations strings.xml (Arabic) 2018-11-11 07:40:23 +01:00
Alexander Dorokhine
fa0e06df75 Add Gradle build config to PluginQR and update it to match new source conventions.
Version code is bumped because there was a minor code change to avoid a
fatal lint error complaining about a memory leak.

Fixes #489.
2018-11-10 22:34:05 -08:00
Philipp Crocoll
c26ee7271b Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-11-11 06:36:40 +01:00
Philipp Crocoll
f37c0a9124 allow opening several databases which contain elements with same IDs (required as KeepassHttp stores their settings in an entry with a fixed ID) 2018-11-11 06:35:06 +01:00
Philipp Crocoll
80fbd656a7 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-11-08 05:44:21 +01:00
Philipp Crocoll
3fb5749c86 avoid leakage of IOC username/password to logcat/debuglog for some protocols 2018-11-08 05:44:04 +01:00
PhilippC
1692130559 Merge pull request #608 from jakseb/patch-1
Fix formatting in docs/Keepass2Android-Apk.md
2018-11-08 04:41:00 +01:00
Sebastian Jakubiak
cf77a9eae2 Fix formatting in docs/Keepass2Android-Apk.md 2018-11-06 20:28:42 +01:00
PhilippC
26151af48a New translations strings.xml (Swedish) 2018-11-05 18:00:14 +01:00
PhilippC
c3b858f0fd New translations strings.xml (Swedish) 2018-11-05 17:50:08 +01:00
PhilippC
914e788ad8 New translations strings.xml (Swedish) 2018-11-05 17:40:09 +01:00
PhilippC
074178621c Merge pull request #604 from gilbsgilbs/fix-pcloud-filenames
Fix PCloud not overwriting uploaded files.
2018-11-03 19:21:16 +01:00
Gilbert Gilb's
25d1b6b695 Fix PCloud not overwriting uploaded files.
When uploading an existing file into PCloud, it appends a version number
by default (e.g. "MyDb (2).kdbx", "MyDb (3).kdbx" and so on). This
behavior is not desirable in K2PA case. The workaroundfor this is to upload
the file with a temporary name and then rename it to its final name.
This may also avoid corruption with failed uploads depending on how
PCloud handles uploads.

See https://github.com/PhilippC/keepass2android/issues/512#issuecomment-435475365
2018-11-02 23:30:59 +01:00
PhilippC
f121c73c4b New translations strings.xml (Azerbaijani) 2018-10-30 20:20:09 +01:00
PhilippC
3f79e7677c New translations strings.xml (Italian) 2018-10-29 12:50:10 +01:00
PhilippC
ca573f27be New translations strings.xml (Italian) 2018-10-29 11:30:08 +01:00
PhilippC
056a3342bf New translations strings.xml (Italian) 2018-10-29 11:20:10 +01:00
PhilippC
eaa661cf09 New translations strings.xml (Italian) 2018-10-29 11:10:11 +01:00
Philipp Crocoll
b2d791d6ea acknowledge gilbsgilbs for pcloud implementation 2018-10-29 08:39:05 +01:00
Philipp Crocoll
f1ea1935c5 Changelog and manifest for 1.07-pre1 2018-10-28 15:35:40 +01:00
Philipp Crocoll
d9c101debe remove NfcOtpActivity: not working with current multi-db approach, but also not working since Android has App links 2018-10-28 07:17:45 +01:00
PhilippC
e3a720a69d New translations strings.xml (Dutch) 2018-10-26 22:20:10 +02:00
Philipp Crocoll
4f3f18a0ad bug fixes and improvements after adding multi-database support 2018-10-25 06:03:08 +02:00
PhilippC
10a3a8324b New translations strings.xml (Russian) 2018-10-22 16:30:09 +02:00
Philipp Crocoll
a2dab72b25 first version to have multiple databases open at the same time. needs testing and bug fixing. 2018-10-16 06:33:00 +02:00
PhilippC
ca0a381d8c New translations strings.xml (Turkish) 2018-10-11 15:40:08 +02:00
PhilippC
a503e85a57 New translations strings.xml (Turkish) 2018-10-11 15:30:09 +02:00
PhilippC
0d668561b4 New translations strings.xml (Turkish) 2018-10-11 15:20:11 +02:00
PhilippC
c8d39a2c15 New translations strings.xml (Polish) 2018-10-10 17:40:08 +02:00
PhilippC
6146ac90c1 New translations strings.xml (Polish) 2018-10-10 17:30:13 +02:00
PhilippC
2bb00c948d New translations strings.xml (Polish) 2018-10-10 15:00:08 +02:00
PhilippC
01eadd986c New translations strings.xml (Spanish) 2018-10-07 19:30:09 +02:00
PhilippC
b482ea4ecc New translations strings.xml (Chinese Simplified) 2018-10-07 03:40:09 +02:00
PhilippC
19bb98c857 New translations strings.xml (Chinese Simplified) 2018-10-07 03:30:10 +02:00
PhilippC
225afb85e4 New translations strings.xml (Chinese Simplified) 2018-10-07 03:20:08 +02:00
PhilippC
2873ffdff7 New translations strings.xml (Spanish) 2018-10-05 19:30:09 +02:00
PhilippC
52ba506138 Merge pull request #579 from Zeustopher/patch-1
Added Logo to README.md
2018-10-05 05:56:43 +02:00
PhilippC
798f70a706 New translations strings.xml (Spanish) 2018-10-05 05:50:08 +02:00
Christopher Nash
d731d55a7a Added Logo to README.md
Added the Keepass2Android Logo to README.md to give it a little more "flare" when viewing it on Github.
2018-10-04 14:28:19 -06:00
PhilippC
1bfcea0227 New translations strings.xml (Spanish) 2018-10-04 18:20:10 +02:00
PhilippC
71a307bfef New translations strings.xml (German) 2018-10-01 15:30:06 +02:00
PhilippC
7a16a8eaff New translations strings.xml (German) 2018-10-01 15:20:07 +02:00
PhilippC
c1c2ccd940 New translations strings.xml (Russian) 2018-10-01 12:50:06 +02:00
Philipp Crocoll
8a993b7dcb rename StackDbActivity 2018-10-01 11:25:52 +02:00
Philipp Crocoll
977393a9aa refactoring, remove Loaded property from database. instead, make GetDb() return null if database is not loaded. 2018-10-01 11:12:37 +02:00
Philipp Crocoll
4f36de9900 refactoring: introduce StackBaseActivity which replaces PasswordActivity in its role as stack base and orchestrating activity. This is in preparation to allow multiple open databases. 2018-10-01 10:21:28 +02:00
PhilippC
ef658eb4cd New translations strings.xml (Ukrainian) 2018-09-29 14:40:05 +02:00
PhilippC
6f77577482 New translations strings.xml (Ukrainian) 2018-09-29 14:30:05 +02:00
Philipp Crocoll
bfdb1a8f62 disable notification badges ("1" icons) 2018-09-26 05:51:12 +02:00
PhilippC
0935d70ae4 New translations strings.xml (Slovak) 2018-09-23 12:40:06 +02:00
PhilippC
24e4e2b960 New translations strings.xml (Slovak) 2018-09-23 12:30:05 +02:00
PhilippC
e608d7463e New translations strings.xml (Catalan) 2018-09-23 12:20:05 +02:00
PhilippC
47453f1471 New translations strings.xml (Catalan) 2018-09-23 12:10:06 +02:00
PhilippC
362780f59a New translations strings.xml (French) 2018-09-21 14:00:06 +02:00
PhilippC
a2a511b3c0 New translations strings.xml (Vietnamese) 2018-09-21 13:50:38 +02:00
PhilippC
78cde8ab62 New translations strings.xml (Indonesian) 2018-09-21 13:50:35 +02:00
PhilippC
46b779c9d5 New translations strings.xml (Hungarian) 2018-09-21 13:50:32 +02:00
PhilippC
23129bf95a New translations strings.xml (Hebrew) 2018-09-21 13:50:29 +02:00
PhilippC
fba137bb3f New translations strings.xml (Greek) 2018-09-21 13:50:27 +02:00
PhilippC
e50a73b4bf New translations strings.xml (German) 2018-09-21 13:50:24 +02:00
PhilippC
31afe11d0e New translations strings.xml (Galician) 2018-09-21 13:50:21 +02:00
PhilippC
5dc1d047ac New translations strings.xml (French) 2018-09-21 13:50:18 +02:00
PhilippC
19e0cf406c New translations strings.xml (Finnish) 2018-09-21 13:50:15 +02:00
PhilippC
0bc1eece0a New translations strings.xml (Dutch) 2018-09-21 13:50:12 +02:00
PhilippC
f2e93e915b New translations strings.xml (Czech) 2018-09-21 13:50:09 +02:00
PhilippC
8db6a99194 New translations strings.xml (Croatian) 2018-09-21 13:50:06 +02:00
Philipp Crocoll
1490ebce03 minor refactoring 2018-09-21 06:26:04 +02:00
Philipp Crocoll
cd189e01dc use internal directory for offline caching. this reduces the likelihood of data loss. Users need to disable and then re-enable file caching to make sure all files are cached in the new directory. closes #83 https://github.com/PhilippC/keepass2android/issues/83 2018-09-18 06:18:17 +02:00
PhilippC
15467248ee New translations strings.xml (Chinese Simplified) 2018-09-18 04:31:09 +02:00
PhilippC
23008ab5b8 New translations strings.xml (Catalan) 2018-09-18 04:31:07 +02:00
PhilippC
041fbb10a1 New translations strings.xml (Bulgarian) 2018-09-18 04:31:04 +02:00
PhilippC
9ba0e59df5 New translations strings.xml (Danish) 2018-09-18 04:31:01 +02:00
PhilippC
0bb9f57919 New translations strings.xml (Basque) 2018-09-18 04:30:59 +02:00
PhilippC
106da869c1 New translations strings.xml (Italian) 2018-09-18 04:30:56 +02:00
PhilippC
d34a3352f2 New translations strings.xml (Korean) 2018-09-18 04:30:54 +02:00
PhilippC
4b5c922f11 New translations strings.xml (Ukrainian) 2018-09-18 04:30:52 +02:00
PhilippC
aacb415364 New translations strings.xml (Turkish) 2018-09-18 04:30:49 +02:00
PhilippC
bdc8bcfe5c New translations strings.xml (Swedish) 2018-09-18 04:30:46 +02:00
PhilippC
154238edf0 New translations strings.xml (Spanish) 2018-09-18 04:30:43 +02:00
PhilippC
eba789c200 New translations strings.xml (Slovenian) 2018-09-18 04:30:41 +02:00
PhilippC
63cb67a03c New translations strings.xml (Slovak) 2018-09-18 04:30:38 +02:00
PhilippC
1c299c6d5d New translations strings.xml (Serbian (Cyrillic)) 2018-09-18 04:30:36 +02:00
PhilippC
486c5310d7 New translations strings.xml (Japanese) 2018-09-18 04:30:34 +02:00
PhilippC
5ef4a97d5f New translations strings.xml (Russian) 2018-09-18 04:30:31 +02:00
PhilippC
03adb8f730 New translations strings.xml (Portuguese, Brazilian) 2018-09-18 04:30:29 +02:00
PhilippC
abdcd0b3f0 Merge pull request #555 from tobiasKaminsky/ncNaming
NextCloud -> Nextcloud
2018-09-18 04:29:26 +02:00
Philipp Crocoll
6e225808a9 add support for Binary Resource dictionaries of AnySoftKeyboard, fixes #245 2018-09-18 04:27:07 +02:00
tobiasKaminsky
382c96f587 NextCloud -> Nextcloud 2018-09-17 16:08:24 +02:00
PhilippC
80cb0119c7 New translations strings.xml (Portuguese) 2018-09-17 13:00:39 +02:00
PhilippC
e7bc5072c0 New translations strings.xml (Polish) 2018-09-17 13:00:36 +02:00
PhilippC
a65057679c New translations strings.xml (Persian) 2018-09-17 13:00:32 +02:00
PhilippC
025186d22f New translations strings.xml (Norwegian Bokmal) 2018-09-17 13:00:27 +02:00
PhilippC
e17217206f New translations strings.xml (Romanian) 2018-09-17 13:00:24 +02:00
PhilippC
c64ca44457 New translations strings.xml (Arabic) 2018-09-17 13:00:21 +02:00
PhilippC
c6e9a16274 Merge pull request #553 from PhilippC/1.07
1.07
2018-09-17 12:56:40 +02:00
Philipp Crocoll
2dc125e0ce allow to save attachments to deliberate storages, closes #346 2018-09-17 12:56:10 +02:00
Philipp Crocoll
9c88ce213b make nextcloud support explicit (closes https://github.com/PhilippC/keepass2android/issues/256) 2018-09-17 11:34:36 +02:00
PhilippC
f945380a87 New translations strings.xml (Chinese Traditional) 2018-09-17 11:11:12 +02:00
PhilippC
bb9664eafc New translations strings.xml (Japanese) 2018-09-17 11:10:38 +02:00
PhilippC
eaca802ecc New translations strings.xml (Portuguese, Brazilian) 2018-09-17 11:10:33 +02:00
PhilippC
2e6ca574b6 Merge pull request #552 from PhilippC/1.07
1.07
2018-09-17 11:03:58 +02:00
Philipp Crocoll
026de5dd4e no longer provide a system-wide file chooser, closes #541 2018-09-17 10:48:18 +02:00
Philipp Crocoll
262897fbf6 add preference option to disable auto-return from queries with only one matching result (closes https://github.com/PhilippC/keepass2android/issues/544) 2018-09-17 10:32:41 +02:00
Philipp Crocoll
304a9d90d0 allow to open Autofill settings also if service is enabled 2018-09-17 10:31:21 +02:00
Philipp Crocoll
91e1674833 make sure dialog asking overwrite/append of attachments is shown by moving code to OnResume. fixes https://github.com/PhilippC/keepass2android/issues/342 2018-09-17 10:11:03 +02:00
PhilippC
d4c61ce932 New translations strings.xml (Catalan) 2018-09-16 16:10:05 +02:00
PhilippC
7387ebe182 New translations strings.xml (Catalan) 2018-09-16 16:00:06 +02:00
PhilippC
d6f305cfa6 New translations strings.xml (Dutch) 2018-09-16 10:40:05 +02:00
PhilippC
73b9fbb435 New translations strings.xml (Dutch) 2018-09-16 10:30:05 +02:00
PhilippC
51c2f313d4 New translations strings.xml (Dutch) 2018-09-16 10:20:05 +02:00
PhilippC
0a390107a3 New translations strings.xml (Polish) 2018-09-12 22:40:06 +02:00
PhilippC
077bf997c6 New translations strings.xml (Vietnamese) 2018-09-12 17:10:23 +02:00
PhilippC
48cb473ecb New translations strings.xml (Japanese) 2018-09-12 17:10:19 +02:00
PhilippC
40dc542302 New translations strings.xml (Chinese Simplified) 2018-09-12 17:10:13 +02:00
PhilippC
28bb4894b2 New translations strings.xml (Catalan) 2018-09-12 17:10:08 +02:00
PhilippC
774d17dd25 New translations strings.xml (Chinese Traditional) 2018-09-12 17:01:33 +02:00
PhilippC
790637f1bd New translations strings.xml (Croatian) 2018-09-12 17:01:31 +02:00
PhilippC
99fb5d3b8e New translations strings.xml (Czech) 2018-09-12 17:01:28 +02:00
PhilippC
6676e62579 New translations strings.xml (Danish) 2018-09-12 17:01:25 +02:00
PhilippC
d735992f5c New translations strings.xml (Dutch) 2018-09-12 17:01:22 +02:00
PhilippC
8a32cfc185 New translations strings.xml (Finnish) 2018-09-12 17:01:19 +02:00
PhilippC
285fafc300 New translations strings.xml (French) 2018-09-12 17:01:16 +02:00
PhilippC
0c90433a34 New translations strings.xml (Galician) 2018-09-12 17:01:12 +02:00
PhilippC
d6070368b7 New translations strings.xml (German) 2018-09-12 17:01:09 +02:00
PhilippC
b42389500f New translations strings.xml (Greek) 2018-09-12 17:01:06 +02:00
PhilippC
daca972fc2 New translations strings.xml (Bulgarian) 2018-09-12 17:01:03 +02:00
PhilippC
8447e59d1f New translations strings.xml (Hebrew) 2018-09-12 17:01:00 +02:00
PhilippC
07ff8cd662 New translations strings.xml (Indonesian) 2018-09-12 17:00:57 +02:00
PhilippC
dbc734eee5 New translations strings.xml (Italian) 2018-09-12 17:00:54 +02:00
PhilippC
eaa95fdba4 New translations strings.xml (Japanese) 2018-09-12 17:00:49 +02:00
PhilippC
3ba1169e9c New translations strings.xml (Korean) 2018-09-12 17:00:46 +02:00
PhilippC
0117b53ea2 New translations strings.xml (Russian) 2018-09-12 17:00:43 +02:00
PhilippC
a2ec04b641 New translations strings.xml (Serbian (Cyrillic)) 2018-09-12 17:00:39 +02:00
PhilippC
8fdcef9c42 New translations strings.xml (Slovak) 2018-09-12 17:00:36 +02:00
PhilippC
d311de764d New translations strings.xml (Slovenian) 2018-09-12 17:00:33 +02:00
PhilippC
e9b16b2f70 New translations strings.xml (Spanish) 2018-09-12 17:00:29 +02:00
PhilippC
21a81b977b New translations strings.xml (Swedish) 2018-09-12 17:00:27 +02:00
PhilippC
9ce1c2b075 New translations strings.xml (Turkish) 2018-09-12 17:00:23 +02:00
PhilippC
b974cbd14c New translations strings.xml (Ukrainian) 2018-09-12 17:00:19 +02:00
PhilippC
1d96282fd9 New translations strings.xml (Hungarian) 2018-09-12 17:00:14 +02:00
PhilippC
48efda6bd9 New translations strings.xml (Basque) 2018-09-12 17:00:09 +02:00
PhilippC
aba3e0033f New translations strings.xml (Portuguese) 2018-09-12 05:00:37 +02:00
PhilippC
5bf61a63cc New translations strings.xml (Polish) 2018-09-12 05:00:35 +02:00
PhilippC
48095c0433 New translations strings.xml (Persian) 2018-09-12 05:00:31 +02:00
PhilippC
3e1599119a New translations strings.xml (Norwegian Nynorsk) 2018-09-12 05:00:29 +02:00
PhilippC
f488e8a7ab New translations strings.xml (Norwegian Bokmal) 2018-09-12 05:00:27 +02:00
PhilippC
b5c17bf7bc New translations strings.xml (Romanian) 2018-09-12 05:00:25 +02:00
PhilippC
77e994e9fd New translations strings.xml (Arabic) 2018-09-12 05:00:22 +02:00
PhilippC
bbd3fc4d1d Merge pull request #543 from PhilippC/1.07
first 1.07 features
2018-09-12 04:53:01 +02:00
Philipp Crocoll
ee63946be2 set network security configuration to that of Android 6, trusting user certificates, closes #339 2018-09-12 04:51:58 +02:00
Philipp Crocoll
b1bcfacf35 refactor PasswordActivity's key provider handling, implement Password+Keyfile+ChallengeXC, closes #456 2018-09-12 04:39:21 +02:00
Philipp Crocoll
d4936e8eec fix issue with opening attachments with special characters in their name, closes #480 2018-09-11 21:42:44 +02:00
Philipp Crocoll
dbba098555 allow to delete entries from the EntryActivity (i.e. also after searching), closes #473 2018-09-11 05:03:54 +02:00
Philipp Crocoll
b368e93061 fix potential crash in keyboard 2018-09-11 05:02:31 +02:00
Philipp Crocoll
10b333ae48 allow to switch to built-in keyboard when opening PasswordActivity or EntryEditActivity, closes #67 2018-09-11 04:48:55 +02:00
Philipp Crocoll
87c0345a6a prevent accidental modification of password in edit text after using fingerprint, closes #493 2018-09-11 04:32:49 +02:00
Philipp Crocoll
381510d213 implement GUI for public key authentication with SFTP, closes #69 2018-09-11 04:19:40 +02:00
Philipp Crocoll
f5f99f5a04 attempt to integrate pulickey auth 2018-09-10 12:57:17 +02:00
Philipp Crocoll
fcf1214f80 implement publickey authentication in JavaFileStorage (not yet integrated in main app) 2018-09-10 12:56:03 +02:00
Philipp Crocoll
7e122529d2 implement prompt callbacks for JSch, fixes https://github.com/PhilippC/keepass2android/issues/519 2018-09-10 11:43:59 +02:00
Philipp Crocoll
600c3d21dc Merge branch '1.06' into 1.07 2018-09-10 09:52:39 +02:00
Philipp Crocoll
135d7ebda5 keep old keyboard dialog for Android <= 8, fix bugs with keyboard labels, release 1.06f 2018-09-10 09:51:53 +02:00
PhilippC
2a57b94e08 New translations strings.xml (German) 2018-09-09 21:20:06 +02:00
PhilippC
366a37b765 New translations strings.xml (Polish) 2018-09-09 16:40:05 +02:00
PhilippC
a3806f7a81 New translations strings.xml (Greek) 2018-09-06 22:00:07 +02:00
PhilippC
cf28e373f7 Merge pull request #535 from gilbsgilbs/pcloud-integration
Implement requiresSetup for PCloud.
2018-09-06 03:45:20 +02:00
Gilbert Gilb's
8d80295e07 Implement requiresSetup for PCloud.
Also consider error 2095 as a logout, so that the user can re-login.
2018-09-04 20:59:00 +02:00
PhilippC
1f7ffe6ea0 New translations strings.xml (Catalan) 2018-09-03 15:00:07 +02:00
PhilippC
a740753175 New translations strings.xml (Czech) 2018-09-02 10:30:06 +02:00
PhilippC
c70f996915 New translations strings.xml (Ukrainian) 2018-08-30 15:40:06 +02:00
PhilippC
707dfc2a0b New translations strings.xml (Chinese Traditional) 2018-08-30 01:20:53 +02:00
PhilippC
77db3362fc New translations strings.xml (French) 2018-08-30 01:20:41 +02:00
PhilippC
c8e0687288 New translations strings.xml (Russian) 2018-08-30 01:20:24 +02:00
PhilippC
f61a6191ec New translations strings.xml (Slovak) 2018-08-30 01:20:20 +02:00
PhilippC
2648236bb4 New translations strings.xml (Spanish) 2018-08-30 01:20:16 +02:00
PhilippC
382e23f545 New translations strings.xml (Turkish) 2018-08-30 01:20:12 +02:00
PhilippC
2eddbe3669 New translations strings.xml (Ukrainian) 2018-08-30 01:20:09 +02:00
Philipp Crocoll
267d710c13 some changes to get the build working on VS2017 and to reduce APK size 2018-08-28 21:58:33 +02:00
PhilippC
5e41517178 New translations strings.xml (Portuguese) 2018-08-28 21:00:25 +02:00
PhilippC
5c9cf0a655 Merge pull request #523 from gilbsgilbs/pcloud-integration
Add PCloud support.
2018-08-28 20:55:41 +02:00
Philipp Crocoll
337297e3e0 manifest for 1.06d 2018-08-28 20:54:56 +02:00
Philipp Crocoll
26def9805f avoid potential OutOfBounds exception 2018-08-28 20:47:50 +02:00
Philipp Crocoll
5429876cde fix potential NullPointerExceptions 2018-08-28 05:39:28 +02:00
Gilbert Gilb's
6301b48b5d Fix indentation. 2018-08-27 21:48:48 +02:00
Gilbert Gilb's
5dea97cce2 Add PCloud support. 2018-08-27 20:58:36 +02:00
PhilippC
69b63bcb15 Merge pull request #522 from gilbsgilbs/linux-build
Support build on Linux
2018-08-27 12:17:56 +02:00
Philipp Crocoll
d13b2d236b manifest for 1.06c 2018-08-27 12:14:07 +02:00
Philipp Crocoll
9dce637d22 fix potential crash in FileSelectActivity 2018-08-27 12:06:04 +02:00
Philipp Crocoll
dbb291fb86 implement a new way to select additional fields in the keyboard, closes https://github.com/PhilippC/keepass2android/issues/377 2018-08-27 11:18:46 +02:00
Gilbert Gilb's
cefad66475 Add execution rights to gradle wrappers. 2018-08-25 15:37:25 +02:00
Gilbert Gilb's
726f4438d6 Fix xamarin.Android bindings path.
See https://github.com/PhilippC/keepass2android/pull/156#issuecomment-415965219
2018-08-25 15:37:25 +02:00
Gilbert Gilb's
880e75a91c Fix project configuration paths case.
This is required for linux builds.
2018-08-25 15:37:25 +02:00
Gilbert Gilb's
0f1fd0e367 Fix dummy credentials for Dropbox.
The client disallows empty credentials, making KP2A force close.
2018-08-25 15:37:25 +02:00
Gilbert Gilb's
7a44cf6e26 Add scripts and instructions for Linux builds.
This is mostly based on @bensku work.

See https://github.com/PhilippC/keepass2android/pull/156
2018-08-25 15:37:23 +02:00
PhilippC
177c709e0a New translations strings.xml (Chinese Simplified) 2018-08-24 08:00:06 +02:00
PhilippC
699eb824a1 New translations strings.xml (Chinese Simplified) 2018-08-24 07:50:05 +02:00
Philipp Crocoll
bc2dc1b2e9 manifest for 1.06b 2018-08-23 07:01:36 +02:00
PhilippC
6b19e305f3 New translations strings.xml (Chinese Simplified) 2018-08-21 20:40:44 +02:00
PhilippC
8b1b4044b3 New translations strings.xml (Portuguese) 2018-08-21 20:40:18 +02:00
PhilippC
2d9429d688 Merge pull request #514 from PhilippC/l10n_master
New Crowdin translations
2018-08-21 20:35:40 +02:00
PhilippC
62f3ff1902 New translations strings.xml (German) 2018-08-21 20:32:04 +02:00
PhilippC
36735cdfbe New translations strings.xml (Chinese Traditional) 2018-08-21 20:31:51 +02:00
PhilippC
f57db90d7b New translations strings.xml (Portuguese, Brazilian) 2018-08-21 20:31:23 +02:00
Philipp Crocoll
97aec23384 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-08-21 20:27:59 +02:00
PhilippC
eb3bcf04ea Merge pull request #467 from PhilippC/l10n_master
New Crowdin translations
2018-08-21 20:27:13 +02:00
PhilippC
40626ba708 New translations strings.xml (Chinese Simplified) 2018-08-21 20:23:42 +02:00
PhilippC
882597365b New translations strings.xml (Portuguese) 2018-08-21 20:23:16 +02:00
PhilippC
6b456c2f57 New translations strings.xml (German) 2018-08-21 19:41:08 +02:00
PhilippC
515ae57e88 New translations strings.xml (French) 2018-08-21 19:41:04 +02:00
PhilippC
9cc9d6ab66 New translations strings.xml (Croatian) 2018-08-21 19:40:55 +02:00
PhilippC
40b4fd210a New translations strings.xml (Chinese Traditional) 2018-08-21 19:40:53 +02:00
PhilippC
2ce2d0efab New translations strings.xml (Portuguese, Brazilian) 2018-08-21 19:40:24 +02:00
PhilippC
97a863293d New translations strings.xml (Polish) 2018-08-21 19:40:20 +02:00
PhilippC
d45426a4c1 New translations strings.xml (Persian) 2018-08-21 19:40:17 +02:00
Philipp Crocoll
d5a49db782 Prevent users from accidentally opening the local backup, closes #479 2018-08-21 19:34:22 +02:00
Philipp Crocoll
4b393f412c avoid exception with new Keyboard dialog on some devices 2018-08-21 07:25:31 +02:00
Philipp Crocoll
8cc77fbe1d hide password input fields from accessibility services 2018-08-20 16:56:20 +02:00
PhilippC
673632bd92 Merge pull request #487 from mohammadnaseri/master
Password should be invisible to the accessibility services: fixed for entering online storage credentials
2018-08-20 16:47:08 +02:00
Philipp Crocoll
d2b9a5d1a9 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-08-20 16:45:34 +02:00
Philipp Crocoll
2bc46b0a0e fix a local build issue 2018-08-20 16:44:32 +02:00
Philipp Crocoll
74200daf90 finish transition to custom activity as dialog instead of using AlertDialog which is no longer working in Android P, closes #377 2018-08-20 16:44:23 +02:00
Philipp Crocoll
b89c127df4 try to introduce an activity as dialog for string selection, not yet working 2018-08-20 15:44:22 +02:00
Philipp Crocoll
67bbbb2097 handle empty initialPath in sftp dialog to close #499 2018-08-18 06:08:08 +02:00
PhilippC
c6ddf0de87 New translations strings.xml (Vietnamese) 2018-08-16 19:10:06 +02:00
Philipp Crocoll
0ef73952b1 fix crash when no FingerprintManager is available, fixes #474 2018-08-15 04:47:38 +02:00
PhilippC
0e02a3aeee New translations strings.xml (Croatian) 2018-08-12 16:00:05 +02:00
Mohammad Naseri
1558a7c386 Password should be invisible to the accessibility services 2018-08-03 12:38:48 +02:00
PhilippC
b72becd328 New translations strings.xml (Swedish) 2018-08-03 11:40:06 +02:00
PhilippC
df2ac8e203 New translations strings.xml (Portuguese) 2018-07-26 12:00:09 +02:00
PhilippC
c6c230002c New translations strings.xml (Portuguese) 2018-07-26 11:50:06 +02:00
PhilippC
885503b5fa New translations strings.xml (Persian) 2018-07-24 21:10:10 +02:00
PhilippC
40fd91257e New translations strings.xml (Vietnamese) 2018-07-23 13:40:11 +02:00
PhilippC
02ece3cf41 New translations strings.xml (Chinese Simplified) 2018-07-23 13:40:08 +02:00
PhilippC
901c879647 New translations strings.xml (Catalan) 2018-07-23 13:40:05 +02:00
PhilippC
990a73f4a4 New translations strings.xml (Chinese Traditional) 2018-07-23 13:31:16 +02:00
PhilippC
73169d339d New translations strings.xml (Croatian) 2018-07-23 13:31:14 +02:00
PhilippC
265b86c031 New translations strings.xml (Czech) 2018-07-23 13:31:11 +02:00
PhilippC
7c29c23015 New translations strings.xml (Danish) 2018-07-23 13:31:08 +02:00
PhilippC
538e579477 New translations strings.xml (Dutch) 2018-07-23 13:31:06 +02:00
PhilippC
73db5f55e2 New translations strings.xml (Finnish) 2018-07-23 13:31:02 +02:00
PhilippC
31a9980343 New translations strings.xml (French) 2018-07-23 13:31:00 +02:00
PhilippC
02c50f510f New translations strings.xml (Galician) 2018-07-23 13:30:57 +02:00
PhilippC
3541ee0512 New translations strings.xml (German) 2018-07-23 13:30:54 +02:00
PhilippC
e72821ba1e New translations strings.xml (Greek) 2018-07-23 13:30:51 +02:00
PhilippC
3af00871a5 New translations strings.xml (Hebrew) 2018-07-23 13:30:48 +02:00
PhilippC
22fe4ca790 New translations strings.xml (Bulgarian) 2018-07-23 13:30:46 +02:00
PhilippC
72d0570c15 New translations strings.xml (Hungarian) 2018-07-23 13:30:43 +02:00
PhilippC
62e0cc0867 New translations strings.xml (Italian) 2018-07-23 13:30:40 +02:00
PhilippC
8987480491 New translations strings.xml (Japanese) 2018-07-23 13:30:38 +02:00
PhilippC
70bb4c2478 New translations strings.xml (Korean) 2018-07-23 13:30:35 +02:00
PhilippC
cf079a6be4 New translations strings.xml (Portuguese, Brazilian) 2018-07-23 13:30:33 +02:00
PhilippC
f153cdcba1 New translations strings.xml (Russian) 2018-07-23 13:30:30 +02:00
PhilippC
4e048240c5 New translations strings.xml (Serbian (Cyrillic)) 2018-07-23 13:30:27 +02:00
PhilippC
c098bb1ca0 New translations strings.xml (Slovak) 2018-07-23 13:30:24 +02:00
PhilippC
e02ded734c New translations strings.xml (Slovenian) 2018-07-23 13:30:22 +02:00
PhilippC
e721f29f5a New translations strings.xml (Spanish) 2018-07-23 13:30:19 +02:00
PhilippC
f763d5f936 New translations strings.xml (Swedish) 2018-07-23 13:30:17 +02:00
PhilippC
a3368eb557 New translations strings.xml (Turkish) 2018-07-23 13:30:14 +02:00
PhilippC
b5758347c2 New translations strings.xml (Ukrainian) 2018-07-23 13:30:11 +02:00
PhilippC
775a6d92aa New translations strings.xml (Indonesian) 2018-07-23 13:30:09 +02:00
PhilippC
2ab5995177 New translations strings.xml (Basque) 2018-07-23 13:30:06 +02:00
PhilippC
f6e847d43f New translations strings.xml (Portuguese) 2018-07-23 13:28:28 +02:00
PhilippC
cac2ca3d18 New translations strings.xml (Polish) 2018-07-23 13:28:26 +02:00
PhilippC
d1e870cee0 New translations strings.xml (Persian) 2018-07-23 13:28:24 +02:00
PhilippC
ca0f65767b New translations strings.xml (Norwegian Nynorsk) 2018-07-23 13:28:22 +02:00
PhilippC
7968bfc262 New translations strings.xml (Norwegian Bokmal) 2018-07-23 13:28:19 +02:00
PhilippC
ed4bbe9814 New translations strings.xml (Romanian) 2018-07-23 13:28:16 +02:00
PhilippC
6e83eb6da2 New translations strings.xml (Arabic) 2018-07-23 13:28:14 +02:00
PhilippC
00949b6135 Update Crowdin configuration file 2018-07-23 11:37:54 +02:00
Philipp Crocoll
f3a857f26f Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-07-23 11:00:38 +02:00
PhilippC
4bd03372aa Update Crowdin configuration file 2018-07-23 10:36:20 +02:00
Philipp Crocoll
dcc589c57a Changelog for 1.06 2018-07-23 10:29:55 +02:00
Philipp Crocoll
3018ec8cf0 update translations from crowdin 2018-07-23 10:29:48 +02:00
Philipp Crocoll
c452a66a4f don't try to use samsung api if Fingprint Unlock with Android API is set up, should fix #126 2018-07-23 10:07:30 +02:00
Philipp Crocoll
7a860f8564 fix #460 ("Lookup entry with "%1$s"") 2018-07-20 21:44:29 +02:00
Philipp Crocoll
94f6f4bdff fix string error 2018-07-16 13:07:43 +02:00
Philipp Crocoll
a627dac4b7 remove internal YubiChallenge activity in favor of ykdroid (allows to reduce required permissions) 2018-07-16 13:07:29 +02:00
Philipp Crocoll
848b6862be harmonize wording for caching, closes #86 2018-07-13 06:47:48 +02:00
Philipp Crocoll
d181575e93 improve wording for file caching at more places (see discussion in #86) 2018-07-12 21:23:06 +02:00
Philipp Crocoll
778775055f suggest to enable fingerprint if hardware is detected but fingerprint unlock not configured, closes #426 and closes #355 2018-07-12 06:44:02 +02:00
Philipp Crocoll
22ccda8d34 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-07-12 05:29:08 +02:00
Philipp Crocoll
c5fc6fd72e manifest for next release 2018-07-12 05:28:59 +02:00
Philipp Crocoll
c8a4978b5f improve wording for file caching, considering that this is also used for the offline version (see discussion in #86) 2018-07-12 05:27:01 +02:00
PhilippC
9e88f8c884 Merge pull request #449 from pp3345/ykdroid-keyboard-configuration
Mark keyboard configuration changes as handled in PasswordActivity
2018-07-10 22:25:06 +02:00
Yussuf Khalil
2e543bf4d3 Mark keyboard configuration changes as handled in PasswordActivity
This is required to avoid screen flickering due to recreation of the
activity when the ykDroid overlay is presented.
2018-07-10 19:30:08 +02:00
Philipp Crocoll
caf42d423f make sure the underlying stream is only written when the write transaction is commited. Avoids corrupted files when cancelling Yubichallenge during saving (#4) 2018-07-09 12:34:21 +02:00
Philipp Crocoll
dc39f874ac fix potential null reference exception when displaying error message 2018-07-09 12:27:29 +02:00
Philipp Crocoll
d1c7a124cf don't return empty strings for filename without path and ext in content storage, fixes #446 2018-07-09 11:03:10 +02:00
Philipp Crocoll
8ec17ce9a6 add timeout to fix #444 2018-07-09 10:22:44 +02:00
Philipp Crocoll
012af35e87 fix potential crash in SearchProvider, fixes #429 2018-07-03 19:38:59 +02:00
Philipp Crocoll
78bd1f4a5d update translations from crowdin, activates KeepassXC-challenge-response for all languages, add Changelog for 1.06-pre1 2018-07-02 12:54:25 +02:00
Philipp Crocoll
4477158182 editing groups was not possible, fixed. fixes #434 2018-07-02 12:10:28 +02:00
Philipp Crocoll
6e96021047 allow to use ykDroid instead of built-in activity 2018-07-02 12:03:32 +02:00
Philipp Crocoll
48f57eea66 fix bug with progress dialog not disappearing somtimes 2018-07-02 12:01:47 +02:00
Philipp Crocoll
4b6cfefaf3 Merge branch '1.05b' 2018-06-30 22:14:03 +02:00
Philipp Crocoll
0e34cc7f26 change manifest version to 1.06-pre 2018-06-30 22:13:16 +02:00
Philipp Crocoll
27fb2870ab check if file is trashed, do not load trashed files, fixes #165 2018-06-30 22:13:00 +02:00
Philipp Crocoll
ee6b7c4fe0 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-06-30 21:45:13 +02:00
Philipp Crocoll
0464cecde5 add roundIcon property for app, now round icon should work on Android 7 2018-06-30 21:21:48 +02:00
Philipp Crocoll
b237259599 fix incorrect folder icon (fixes #433) 2018-06-30 21:10:56 +02:00
Philipp Crocoll
8c379739f0 refactoring of ProgressTask and OnFinish classes, allowing to access the currently active activity from the task handlers. This fixes #33 and is required to correctly manage the activity recreation caused by the NFC activity coming to foreground with KeepassXC challenge (#4) 2018-06-26 13:44:48 +02:00
Philipp Crocoll
4fb8db982c add missing calls to base.OnActivityResult() in *EditActivity, leading to errors saving with YubiChallenge (#4). 2018-06-25 13:24:22 +02:00
Philipp Crocoll
921b50b642 add NFC permission to debug manifest also 2018-06-25 13:23:34 +02:00
Philipp Crocoll
031332e8ab re-add KeepassXC-style challenge response support 2018-06-25 13:23:24 +02:00
Philipp Crocoll
f03ccced8d Merge branch 'master' into 1.05b 2018-06-25 12:21:34 +02:00
Philipp Crocoll
51973d225c switch to suggested Native TLS implementation and HttpClient stack (https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/http-stack?tabs=windows) 2018-06-23 13:08:32 +02:00
Philipp Crocoll
a59666e752 workaround to fix #420, based on https://stackoverflow.com/questions/28411153/jsch-suppressed-java-lang-classnotfoundexception-lorg-ietf-jgss-oid/28965796#28965796 and https://github.com/zeapo/Android-Password-Store/issues/49 2018-06-23 13:03:51 +02:00
PhilippC
8259191e50 Merge pull request #415 from jakseb/docfix
Fix broken links to screenshots in documentation
2018-06-23 12:08:44 +02:00
Philipp Crocoll
3eb84cc955 improve permission handling related to GoogleDrive 2018-06-23 11:43:54 +02:00
Philipp Crocoll
b1b7bff09d Manifest for 1.05d 2018-06-18 13:05:35 +02:00
Sebastian Jakubiak
82f28bfc8c Update links to screenshots in docs
Fixes #366 and #396
2018-06-16 11:04:02 +02:00
Philipp Crocoll
dfed92ac61 don't create local backups of local backups 2018-06-11 07:16:04 +02:00
Philipp Crocoll
0d6c9b468e fix UI bug when opening read-only databases (checkmarks were visible in Group list) 2018-06-11 07:15:54 +02:00
Philipp Crocoll
2bc12c510b implement defaults for otpauth:// style otp entries 2018-06-06 06:02:48 +02:00
Philipp Crocoll
f3022a19c2 manifest for 1.05c 2018-06-06 06:02:19 +02:00
Philipp Crocoll
800afae1c9 catch potential null reference exception 2018-06-06 03:05:57 +02:00
Philipp Crocoll
3c19f8e76f fix for IllegalStateException also when stopping the OngoingNotificationsService 2018-06-06 02:57:50 +02:00
Philipp Crocoll
3ca462f46f Manifest for 1.05b 2018-06-06 02:56:49 +02:00
Philipp Crocoll
fadd21ebd0 fix translations errors 2018-06-05 21:35:11 +02:00
Philipp Crocoll
a10c474ce5 attempt to make OngoingNotificationsService compatible to Android 8 restrictions 2018-06-05 21:35:03 +02:00
Philipp Crocoll
513ea5a198 manifest for 1.05a 2018-06-02 09:50:36 +02:00
Philipp Crocoll
4bab1c32d7 fix for second button in bottom bar never visible 2018-06-02 09:50:25 +02:00
Philipp Crocoll
39064eb2c6 update translations from crowdin, make changelog more robust against different forms of list item characters 2018-06-02 07:11:32 +02:00
Philipp Crocoll
28a60f5243 fix bug with automatic addition of URI scheme for owncloud files, improve input types to avoid automatic trailing spaces when using keyboard suggestions 2018-06-02 06:57:00 +02:00
Philipp Crocoll
56b9b878f8 make sure the local backup is not used automatically instead of the actual file 2018-06-02 06:55:48 +02:00
Philipp Crocoll
e7ad6e32e3 avoid showing infotexts after showing android 8 specific texts, update changelog, change version number for actual 1.05-pre3 release 2018-06-02 06:36:36 +02:00
Philipp Crocoll
a1d6347db3 create own YubiChallenge activity 2018-05-28 10:39:09 +02:00
Philipp Crocoll
9e80013e28 check for null bitmap, should fix #369 2018-05-07 11:12:43 +02:00
PhilippC
e66a8a0b21 Merge pull request #367 from gacelperfinian/patch-1
Updated Documentation.md to GitHub-flavoured MarkDown
2018-05-07 10:56:10 +02:00
Philipp Crocoll
77593969b2 fix leaking data to logcat 2018-05-07 10:42:58 +02:00
Gacel Perfinian
186fa35f70 Updated Documentation.md to GitHub-flavoured MarkDown
Changes:
- Changed last bullet in **What you should know and think about** into two bullet points due to change 2.
- Changed MarkDown so it renders correctly on GitHub Parser.
- Changed wording into bullet 2.2 to emphasise storing any second-factor authentication (if any was used).
2018-05-04 14:13:02 +08:00
Philipp Crocoll
c39d0048a8 Merge branch 'filecorruptionhandling' 2018-04-11 06:28:33 +02:00
Philipp Crocoll
5fc22b9530 introduced automatic local backups after successfully opening a database. This should make sure that users can access their database even if the file gets corrupted (#238) 2018-04-11 06:27:56 +02:00
Philipp Crocoll
51735c3f6d implement saving with KeepassXC-Challenge (#4) 2018-04-10 21:44:37 +02:00
Philipp Crocoll
f14aad0c50 implemented loading of files with KeepassXC Challenge (#4).
requires write support, handling of Challenge/Response errors (or user cancels). Caution: saving corrupts the file at the moment!
2018-04-10 07:15:19 +02:00
Philipp Crocoll
cdbb492f2c implemented editing of connection settings for ftp/sftp/webdav, includes changing password. Closes #27 2018-04-06 06:06:03 +02:00
Philipp Crocoll
de18aefd7b introduce vdots for file select list, prepare GUI for editing of storage locations 2018-04-04 05:01:19 +02:00
Philipp Crocoll
5f8807d62c workaround for error with Thai calendar settings (https://bugzilla.xamarin.com/show_bug.cgi?id=59077), fixes #327 2018-04-04 04:06:11 +02:00
Philipp Crocoll
e42d8b8eeb improve message when storage access framework access permission is revoked 2018-04-02 19:05:32 +02:00
Philipp Crocoll
d67b8b8298 fix bug with displaying info texts 2018-04-02 19:04:51 +02:00
Philipp Crocoll
10c8d157f5 request Read AND Write permissions in BuiltInFileStorage to be more compatible with Android O, also request storage permissions for GDrive to fix #265, even though this seems to be a workaround 2018-04-02 17:02:09 +02:00
Philipp Crocoll
1f10558f1f Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-04-02 05:52:41 +02:00
Philipp Crocoll
409228285e upgrade JSch to 0.1.54, closes #48. Upgrade ADAL. 2018-04-02 05:52:37 +02:00
PhilippC
0ac7758c04 Merge pull request #322 from ypid/fix/typo
Fix typo in README.md
2018-04-01 07:11:38 +02:00
Robin Schneider
802e3d04b2 Fix typo in README.md 2018-03-31 22:19:37 +02:00
Philipp Crocoll
39ef4a4711 replace obsolete Android.Text.ClipboardManager, might help with #248 2018-03-29 06:53:56 +02:00
Philipp Crocoll
b2215e1db6 release 1.05-pre2 2018-03-29 06:14:40 +02:00
Philipp Crocoll
7d42da5d3c add an IME subtype to close #56 2018-03-27 21:57:53 +02:00
Philipp Crocoll
82770e6dd0 disable sounds from notifications 2018-03-27 21:37:45 +02:00
Philipp Crocoll
62bbfc6075 remove testing code 2018-03-27 20:45:47 +02:00
Philipp Crocoll
a5eb77dd87 register broadcast receiver on app create, fixes #266 2018-03-27 20:45:32 +02:00
Philipp Crocoll
cb9cf4885f refactor, maybe helps to find crash report cause 2018-03-27 07:15:08 +02:00
PhilippC
a5455925ea Merge pull request #270 from mydexterid/ISSUE-221-Yubikey-static-password-support
Fix for issue #221
2018-03-26 20:31:36 +02:00
Philipp Crocoll
61ef383c38 add button to hide autofill info text in Group activity, closes #311 2018-03-26 20:27:51 +02:00
Philipp Crocoll
b0aa706c07 upgrade to target Android 8.1 2018-03-26 19:56:55 +02:00
Philipp Crocoll
a04c8f6214 fix checking for InputTypes flags, fixes #303 2018-03-26 13:40:30 +02:00
Philipp Crocoll
fd5b582c6c fix crash when disabling log file before writing anything into it, fixes #301 2018-03-21 05:00:57 +01:00
Philipp Crocoll
dc45613b7b fix crash when searching from autofill/keyboard/search url. fixes https://github.com/PhilippC/keepass2android/issues/289 2018-03-21 04:57:27 +01:00
Philipp Crocoll
d986d8f398 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-03-21 04:56:45 +01:00
Philipp Crocoll
6c64f20a14 fix erroneous string value 2018-03-21 04:47:42 +01:00
Philipp Crocoll
2071087794 improve detection of file/folder, closes https://github.com/PhilippC/keepass2android/issues/276 2018-03-21 04:47:26 +01:00
PhilippC
ba56ab719c Update README.md 2018-03-12 11:36:52 +01:00
PhilippC
617c053b95 Update README.md 2018-03-12 11:36:35 +01:00
PhilippC
868cff2c4c Update README.md 2018-03-12 11:36:17 +01:00
Philipp Crocoll
8e23ebf3e4 add package to lock database broadcast from keyboard 2018-02-28 06:11:34 +01:00
DEXTER
6dd6eff02c PasswordActivity.cs: Do not clear the password field
when Yubikey is used to fill in the password entry.
2018-02-24 14:06:39 +01:00
DEXTER
3a1fcd2147 AndroidManifest*.xml: Add yubico's url to VIEW/BROWSABLE intent-filter
This patch makes it so that the user can choose keepass2android as
a handler for my.yubico.com in
Settings->Apps->App links->keepass2android->Open supported links->
Open in this app.
This is needed to be set manually by the user in order for their
Yubikey NEOs to work.
2018-02-24 14:06:01 +01:00
Philipp Crocoll
d4bd4a8150 update info text string to clarify things 2018-02-21 05:56:38 +01:00
Philipp Crocoll
2ace518db9 Merge branch '1.04'
Conflicts:
	src/keepass2android/ChangeLog.cs
	src/keepass2android/GroupBaseActivity.cs
	src/keepass2android/Properties/AndroidManifest_net.xml
	src/keepass2android/Resources/values/strings.xml
2018-02-20 22:18:20 +01:00
Philipp Crocoll
e8641cee8f changelog for 1.05-pre1 2018-02-20 22:15:49 +01:00
Philipp Crocoll
884328d10f refactor CopyToClipboardService to get (hopefully) more helpful reports on Google Play, see #248 2018-02-20 22:03:43 +01:00
Philipp Crocoll
d8bd8a29bc don't create notification channels for devices < sdk 26 2018-02-20 22:02:33 +01:00
Philipp Crocoll
cbd6b796ca created and integrated Adaptive Icons, closes #204 2018-02-20 21:52:25 +01:00
Philipp Crocoll
90cfa4ed5c refactor CopyToClipboardService to get (hopefully) more helpful reports on Google Play, see #248 2018-02-19 13:33:35 +01:00
Philipp Crocoll
6426abfedf commit missing change for previous commit 2018-02-19 13:24:44 +01:00
Philipp Crocoll
d746928765 show entry icon in notification, closes #21 2018-02-19 13:11:45 +01:00
Philipp Crocoll
f83554c817 prevent database from being loaded twice simultaneously, fixes #15 2018-02-12 13:21:58 +01:00
Philipp Crocoll
6fc4741c9a remove icon preferences on Android 8, show info on how to use notification channels on Android 8 2018-02-10 21:06:50 +01:00
Philipp Crocoll
7b63346bd0 set notification channel importances correctly 2018-02-09 12:22:49 +01:00
Philipp Crocoll
737c63e8b0 switch to TargetSDK 26, implement notification channels allowing customization of notification importance on Android 8, see #178 2018-02-09 12:07:21 +01:00
Philipp Crocoll
94b37f6414 fix crashes on Huawei devices when trying to enable autofill 2018-02-09 10:51:08 +01:00
Philipp Crocoll
5fa2bc3bc8 allow to bring up search fied on start, closes #107 2018-02-08 12:44:50 +01:00
Philipp Crocoll
5d7a5ace66 change the way how Files are written through SAF. Fixes #241 2018-02-08 11:46:48 +01:00
Philipp Crocoll
0bd213a327 make sure correct items for ActionMode are displayed, fixes #231 2018-02-08 11:09:41 +01:00
Philipp Crocoll
3d9f351d84 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2018-02-08 08:54:36 +01:00
Philipp Crocoll
9fda220f33 move netftpandroid to github 2018-02-08 08:53:25 +01:00
PhilippC
991ae1d6e3 Merge pull request #203 from StefanSchoof/patch-1
Add Bugzilla link to Firefox Support
2018-01-23 23:10:33 +01:00
Philipp Crocoll
b993be4658 add some info texts, especialy for novice users to avoid some common misunderstandings. closes #46, closes #47 2018-01-23 23:09:17 +01:00
Philipp Crocoll
c4f8af2311 Merge branch '1.04' 2018-01-23 21:05:59 +01:00
Philipp Crocoll
4c541e98ab manifest for release 1.04 2018-01-23 21:05:22 +01:00
Philipp Crocoll
7b8b24b45d fix translations 2018-01-23 20:56:59 +01:00
Philipp Crocoll
a61a44edc9 update translations from crowdin 2018-01-23 20:42:52 +01:00
Philipp Crocoll
393f3e5737 fix bug with showing auto-fill hint too often 2018-01-23 20:32:01 +01:00
Philipp Crocoll
c34e38e50f allow to import content-URI database files to internal folder (closes #158) 2018-01-23 20:23:23 +01:00
Philipp Crocoll
b98676ea77 avoid crash when IconSet was uninstalled (fixes #139) 2018-01-23 20:03:05 +01:00
Philipp Crocoll
002c67e48c support otpauth:// URIs in otp field as used by KeeWeb (closes #118) 2018-01-23 19:53:06 +01:00
Philipp Crocoll
cf21684916 fix display issue with dynamic fields and visible passwords (related to #96) 2018-01-23 19:52:33 +01:00
Philipp Crocoll
9fe1a904c8 allow to hide the length of the QuickUnlock code. Closes #52 2018-01-23 19:11:01 +01:00
Philipp Crocoll
c4e67db75f fix QuickUnlock with Unicode characters like emojis (length correction was incorrect or misleading), fixes #161 2018-01-22 13:07:04 +01:00
Philipp Crocoll
8487555315 fix issue with displaying long passwords by using two different TextViews for the visible and "protected" password view, toggling visibility instead of InputType. Fixes #96. 2018-01-22 12:48:40 +01:00
Philipp Crocoll
304c1ef5d2 don't use implicit intents for notification actions. Should fix #149. 2018-01-22 11:45:28 +01:00
Philipp Crocoll
c911a7a310 manifest for 1.04-pre4 (main change in release: rebuilding keyboard, seems to fix broken keyboard) 2018-01-22 11:33:43 +01:00
Philipp Crocoll
322f29b31b manifest for 1.04-pre3 2018-01-22 10:08:08 +01:00
StefanSchoof
f0a86db9e4 Add Bugzilla link to Firefox Support 2018-01-11 10:56:22 +01:00
Philipp Crocoll
60bcfa8ab1 add a little help page about autofill 2018-01-08 11:06:30 +01:00
Philipp Crocoll
074b63d68d move AccService-Library to plugin repo 2018-01-05 05:51:58 +01:00
Philipp Crocoll
45fb856898 add check for null preference 2018-01-05 05:37:41 +01:00
Philipp Crocoll
138ed85f93 increase number of displayed recent fiels, fixes #179 2018-01-05 05:37:24 +01:00
Philipp Crocoll
a632dd172e version 1.04-pre2 2018-01-04 21:47:26 +01:00
Philipp Crocoll
8fbf915710 set AutoReturnFromQuery to default true 2018-01-04 20:58:03 +01:00
Philipp Crocoll
8eafc5816d show message in bottom bar if KP2A autofill service is not enabled (#9) 2018-01-04 20:48:51 +01:00
Philipp Crocoll
17b50df101 change heuristic to decide what is a username field: treat every field before a password field as username field. Even though this seems to make less sense, it works better with several apps; decode field references for AutoFill; display item in preferences for Autofill (#9) 2018-01-03 21:19:14 +01:00
Philipp Crocoll
b9e436d56d implemented saving of data from autofill service (#9) 2018-01-02 16:28:54 +01:00
Philipp Crocoll
a929db9939 fix save popup in QuickUnlock 2018-01-02 14:59:19 +01:00
Philipp Crocoll
8287232866 display the last opened entry as an additional dataset, helps to fill paypal app and helps with partitioned data 2018-01-02 14:29:29 +01:00
Philipp Crocoll
11330b608b use CommonUtil for logging of Autofill service everywhere 2018-01-02 13:07:14 +01:00
Philipp Crocoll
ff94d188db version 1.04-pre1 2017-12-31 11:47:31 +01:00
Philipp Crocoll
332ce12eb5 ignore .vs folder 2017-12-31 11:23:22 +01:00
Philipp Crocoll
e4eb0c7019 remove deleted entries to avoid "finding" them when SearchForUrl 2017-12-31 11:21:57 +01:00
Philipp Crocoll
8e45d6462f make sure Kp2a is closed after creating an entry for an autofill (#9) fill request 2017-12-31 11:21:41 +01:00
Philipp Crocoll
1857dd72b9 allow to fill single inputs (or autofill=off) with autofill (#9) 2017-12-31 10:52:40 +01:00
Philipp Crocoll
e4c6285fab improve presentation of Autofill (#9), support credit card datasets created from templates & expiry date 2017-12-30 21:30:18 +01:00
Philipp Crocoll
c150d24843 allow webdomains for browsers only, otherwise use package name 2017-12-30 20:36:27 +01:00
Philipp Crocoll
6c69119d09 allow autofill (#9) for apps/websites without explicit autofill hints by detecting password fields and falling back to filling username/password if no autofill hint is available 2017-12-30 03:41:02 +01:00
Philipp Crocoll
d87b8f7652 improve autofill service (#9): introduce partitioning of Autofill data 2017-12-29 17:37:14 +01:00
Philipp Crocoll
577febe3b7 unregister screen off broadcast receiver in PasswordActivity.OnDestroy() 2017-12-29 07:31:20 +01:00
Philipp Crocoll
c8d56a237b improve implementation of Oreo autofill (#9), now supporting all Android/W3cHints, using all Keepass fields (if hints match field name). Make hint comparison code clearer and always compare case insensitive 2017-12-29 07:07:46 +01:00
Philipp Crocoll
fb018946b9 minor refactoring 2017-12-28 21:59:55 +01:00
Philipp Crocoll
0697f4a964 minor refactoring and code formatting 2017-12-28 21:53:03 +01:00
Philipp Crocoll
4c0cfb77fb once again, update support packages, now to 26 versions 2017-12-28 21:31:59 +01:00
Philipp Crocoll
1a2885408d remove support v4 2017-12-28 14:58:30 +01:00
Philipp Crocoll
de8e363d33 remove support v4 from all packages.config 2017-12-28 14:57:21 +01:00
Philipp Crocoll
7436ac0b5e add support v4 package 2017-12-28 10:16:37 +01:00
Philipp Crocoll
eaf9447abc adjust filename of aar 2017-12-28 09:43:48 +01:00
Philipp Crocoll
45cadb9cfb update gson to avoid xpp3 dependency, should fix gradle build errors 2017-12-28 09:31:53 +01:00
Philipp Crocoll
9bab31514e add google Maven repo to build.gradle 2017-12-28 03:22:32 +01:00
Philipp Crocoll
6e13320f36 update build tools versions 2017-12-28 03:20:50 +01:00
Philipp Crocoll
1ed1e91189 first working (but still very rudimentary) version of Oreo Autofill (#9).
Not yet implemented and/or tested: partitioning, autofill fields without hints, saving, filling of other fields than username or password, package signature verification, DAL
2017-12-28 03:04:03 +01:00
Philipp Crocoll
7561afd92d remove support v4 references to avoid incompatible duplicates 2017-12-26 19:48:46 +01:00
Philipp Crocoll
92eb5836fb Merge branch 'master' into master_compiletest 2017-12-26 19:29:50 +01:00
Philipp Crocoll
0068fcef88 Merge commit '7720e8005e7df0338f19522fc23eb074a8c01b35' into master_compiletest 2017-12-26 19:26:28 +01:00
Philipp Crocoll
e2df24522f working 2017-12-26 19:26:05 +01:00
Philipp Crocoll
0c185c78e3 update support libraries to 25er version, some progress on AutoFill service implementation 2017-12-26 11:59:05 +01:00
Philipp Crocoll
7720e8005e start working on Oreo AutofillService (issue #9):
* upgraded target version to 26
* added service, parses autofill structure but does not yet retrieve/fill passwords
2017-12-19 22:25:16 +01:00
Philipp Crocoll
4a738990ae explicitly use IME_ACTION_NEXT instead of relying on actionId which seems to be incorrect/not set on latest Chrome versions. Fixes #89. 2017-12-06 05:35:13 +01:00
Philipp Crocoll
f7e8f25b70 update build tools for keyboard 2017-12-06 05:33:53 +01:00
Philipp Crocoll
da828523f3 Improve error messages when initializing fingerprint unlock fails. This is especially important for users who have migrated to a new device and previously received a very technical error message, but they simply need to reenable fingerprint on the new device. Fixes #37. 2017-12-03 07:44:01 +01:00
Philipp Crocoll
d621ea15a3 adjust targetFrameworkVersion of .csproj files to that of the manifest file 2017-12-03 07:42:38 +01:00
Philipp Crocoll
db74e573d1 catch exception when decrypting key fails, fixes #50 2017-12-02 16:41:57 +01:00
Philipp Crocoll
d40656b69a update translation files, now with removed strings in all translations 2017-11-27 13:06:39 +01:00
Philipp Crocoll
4a5402db0f fix link to AutoFillService description, add missing translation files from crowdin 2017-11-27 12:35:36 +01:00
Philipp Crocoll
b7df1b0bb0 fix error in manifest, version 1.03 (_net) 2017-11-27 12:16:15 +01:00
Philipp Crocoll
d0b80492c7 update translations from crowdin 2017-11-27 11:45:59 +01:00
Philipp Crocoll
7174c3956c update privacy policy. Accessibility service and Xamarin insights were removed. 2017-11-27 11:41:29 +01:00
Philipp Crocoll
135f2617f6 * improvements to Plugin handling and AccessibilityService based AutoFill:
* don't forget plugin scopes (fixes #136), improves workflow to setup AutoFill plugin
 * fix display issues with scopes
 * make sure credentials are not filled several times but always show notification

* removed unnecessary permission
2017-11-27 11:32:14 +01:00
Philipp Crocoll
5f855209c9 fix issue with wrong GroupEdit theme (fixes #29) 2017-11-21 21:20:29 +01:00
Philipp Crocoll
0741bcbbaa keep caching setting enabled if user denies deletion of cache, as noted in https://github.com/PhilippC/keepass2android/issues/86#issuecomment-344752673 (see #86) 2017-11-20 13:45:28 +01:00
Philipp Crocoll
a4361a28b2 remove unused strings 2017-11-20 12:53:59 +01:00
Philipp Crocoll
417164cc58 remove currently unsupported password option 2017-11-20 12:50:59 +01:00
Philipp Crocoll
d9159ffc96 update changelog for 1.03-pre3 2017-11-20 12:28:28 +01:00
Philipp Crocoll
ec022e7acd fix broken links 2017-11-20 12:23:10 +01:00
Philipp Crocoll
7a0aa556ff Merge branch 'master' of https://github.com/PhilippC/keepass2android 2017-11-20 12:15:43 +01:00
Philipp Crocoll
9f7eaf22b0 move accservice based auto fill plugin into own apk to distribte outside Google Play, closes #111 2017-11-20 12:14:49 +01:00
PhilippC
6a3fee98fd Set theme jekyll-theme-slate 2017-11-20 11:34:57 +01:00
Philipp Crocoll
abf5bfdd69 upgrade okio to fix issue with WebDav connections (fixes #114) 2017-11-13 17:16:52 +01:00
Philipp Crocoll
994939b121 prepare 1.03-pre1 release 2017-11-13 11:42:25 +01:00
Philipp Crocoll
1b3334341d Merge branch '1.03' 2017-11-13 11:28:38 +01:00
Philipp Crocoll
286ac6dc05 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2017-11-13 11:28:16 +01:00
Philipp Crocoll
85ae4cae34 removed iml files from repo 2017-11-13 11:27:21 +01:00
Philipp Crocoll
ba840822bc revert removal of external file pickers to fix #77 2017-11-13 11:19:27 +01:00
PhilippC
d10515c003 Merge pull request #112 from DJCrashdummy/patch-1
added the lacking KeyboardSwap-plugin
2017-11-13 11:09:38 +01:00
DJCrashdummy
0db5d24673 added the lacking KeyboardSwap-plugin
- used the existing format (although imho the links will suit better in a separate line)
- since the order of the list seems random, i put it at second place, because it seems to me like an order of possible interest for end-users
- copied the text-line from https://play.google.com/store/apps/details?id=keepass2android.keepass2android_nonet resp. https://play.google.com/store/apps/details?id=keepass2android.keepass2android
2017-11-13 10:46:05 +01:00
PhilippC
e6135c69b4 Merge pull request #91 from hyronx/patch-1
Update How-to-create-a-plug-in_.md
2017-11-13 06:55:01 +01:00
Fabian Loewe
e2e4c97300 Update How-to-create-a-plug-in_.md
The code parts weren't correctly marked and indented.
2017-11-03 16:46:18 +01:00
Philipp Crocoll
635d06df87 fix suggestions link to point to github, closes #7 2017-10-30 09:48:32 +01:00
Philipp Crocoll
fcc7d126f9 make loading of databases through third party app possible again (Android < 7) or hide third party app (Android >= 7) 2017-10-29 06:33:34 +01:00
Philipp Crocoll
fa152a908b Merge branch 'master' of https://github.com/PhilippC/keepass2android 2017-10-25 22:04:17 +02:00
PhilippC
230887bea3 Merge pull request #72 from svenluijten/patch-1
fix link to plugin file
2017-10-25 22:03:23 +02:00
Sven Luijten
8677aa1bca fix link to plugin file 2017-10-25 20:11:25 +02:00
Philipp Crocoll
6eee282fa4 add missing files to complete integration of KeeTrayOTP, fixes https://github.com/PhilippC/keepass2android/issues/43 and https://github.com/PhilippC/keepass2android/issues/34 2017-10-24 06:57:47 +02:00
Philipp Crocoll
e491463862 Merge branch 'master' into 1.03
Conflicts:
	src/java/android-filechooser-AS/app/android-filechooser.iml
2017-10-24 06:37:59 +02:00
Philipp Crocoll
721bf97def update Totp-Code using changes from KeeTrayTotp to support Steam 2017-10-24 06:37:12 +02:00
Philipp Crocoll
f34bdd57b3 upgrade okhttp3 version to 3.9.0 to fix https://github.com/PhilippC/keepass2android/issues/44 2017-10-24 06:36:41 +02:00
Philipp Crocoll
9d4757a737 remove .iml file 2017-10-24 05:35:49 +02:00
Philipp Crocoll
82fa7eaf9f logging controllable through preferences, option to send logged data 2017-10-16 12:57:30 +02:00
Philipp Crocoll
c7bad6f9a0 Merge branch 'master' into 1.03 2017-10-16 11:54:39 +02:00
Philipp Crocoll
911c630b91 start implementing KeepassXC Challenge-Response support (see #4), currently waiting for https://github.com/keepassxreboot/keepassxc/issues/1060), also missing support for saving at the moment and mem-leaking PasswordActivity 2017-10-16 07:36:49 +02:00
Philipp Crocoll
dbca918f07 variable rename 2017-10-10 21:36:14 +02:00
Philipp Crocoll
9a05a47122 remove unused string, update string for better understandability 2017-10-10 06:18:28 +02:00
Philipp Crocoll
bceb6749af integrate custom image viewer, closes #36 2017-10-09 12:45:15 +02:00
Philipp Crocoll
50396f0c9b update tools version in AncientIconSet.csproj 2017-10-09 10:54:36 +02:00
1082 changed files with 71245 additions and 14175 deletions

20
.gitignore vendored
View File

@@ -149,3 +149,23 @@ intermediates
*.iml
/build
/src/Kp2aKeyboardBinding/Jars
/src/java/Kp2aAccServiceLib/app/build
/src/java/Kp2aAccServiceLib/app/app.iml
/src/java/Kp2aAccServiceLib/gradle
adbprompt.ps1
/src/java/KP2ASoftkeyboard_AS/build/android-profile/*.rawproto
src/java/KP2ASoftkeyboard_AS/build/generated/mockable-android-23.jar
*.rawproto
src/java/Keepass2AndroidPluginSDK2/build/generated/mockable-Google-Inc.-Google-APIs-23.jar
/src/.vs
/src/JavaFileStorageBindings/Jars/JavaFileStorage-release.aar
/src/PluginSdkBinding/Jars/app-debug.aar
/src/java/KP2AKdbLibrary/libs/arm64-v8a/libfinal-key.so
/src/java/KP2AKdbLibrary/libs/x86_64/libfinal-key.so
/src/java/KP2ASoftkeyboard_AS/app/src/main/libs/arm64-v8a/libkp2akeyboard_jni.so
/src/java/KP2ASoftkeyboard_AS/app/src/main/libs/armeabi-v7a/libkp2akeyboard_jni.so
/src/java/KP2ASoftkeyboard_AS/app/src/main/libs/x86/libkp2akeyboard_jni.so
/src/java/KP2ASoftkeyboard_AS/app/src/main/libs/x86_64/libkp2akeyboard_jni.so
/src/java/KP2AKdbLibrary/app/build
/src/java/KP2ASoftkeyboard_AS/app/.cxx
/src/java/KP2ASoftkeyboard_AS/app/src/main/libs

5
.gitmodules vendored
View File

@@ -3,4 +3,7 @@
url = https://github.com/PhilippC/Xamarin-Samsung-Pass.git
[submodule "src/netftpandroid"]
path = src/netftpandroid
url = https://git01.codeplex.com/forks/philippc/netftpandroid
url = https://github.com/PhilippC/netftpandroid.git
[submodule "src/java/argon2/phc-winner-argon2"]
path = src/java/argon2/phc-winner-argon2
url = https://github.com/P-H-C/phc-winner-argon2

10
crowdin.yml Normal file
View File

@@ -0,0 +1,10 @@
files:
- source: src/keepass2android/Resources/values/strings.xml
translation: >-
/src/keepass2android/Resources/values-%two_letters_code%/%original_file_name%
translate_attributes: '0'
content_segmentation: '0'
languages_mapping:
two_letters_code:
zh-CN: zh
zh-TW: zh-rTW

View File

@@ -0,0 +1,5 @@
As of December 2017, Google does not accept the use of Accessibility services for anything except helping people with disabilities. This means that Keepass2Android can no longer provide the accessibility service based AutoFill feature. Otherwise, Google would remove Keepass2Android from Play Store.
If you want to continue using this feature, please [install the Accessibility service based AutoFill plugin](https://github.com/PhilippC/kp2a_accservice_autofill/releases/).
After installation, please enable the accessibility service "KP2A AutoFillPlugin" in the Android system settings. When trying to use the plugin for the first time, KP2A will ask you if the plugin may access the Keepass database. Please accept this to use the plugin.

View File

@@ -2,6 +2,14 @@
Displays password entries as QR code; can be used to scan QR codes which can then be added to Keepass2Android.
[https://play.google.com/store/apps/details?id=keepass2android.plugin.qr](https://play.google.com/store/apps/details?id=keepass2android.plugin.qr)
# KeyboardSwap Plug-in
Allows to switch input method automatically on non-rooted devices.
[https://play.google.com/store/apps/details?id=keepass2android.plugin.keyboardswap2](https://play.google.com/store/apps/details?id=keepass2android.plugin.keyboardswap2)
# AutoFill Plug-in
Uses Android Accessibility Service to provide an option to AutoFill forms (e.g. on Chrome) or any Android app.
[https://philippc.github.io/keepass2android/AccServiceAutoFill.html](https://philippc.github.io/keepass2android/AccServiceAutoFill.html)
# InputStick Plug-in
Allows to send text from KP2A via InputStick to your PC.
[https://play.google.com/store/apps/details?id=com.inputstick.apps.kp2aplugin](https://play.google.com/store/apps/details?id=com.inputstick.apps.kp2aplugin)

View File

@@ -7,11 +7,12 @@ If you think something is missing in the documentation, please create an issue a
If you store important information using Keepass2Android, you should know a little bit about what's going on:
* Keepass2Android stores your password in an encrypted file. It is *your responsibility* to backup this file regularly and safely.
* There is no way for anyone, including the app's author, to access the information stored in your password database without
** having the database file
** knowing the master password (and additional second factor if you chose one)
This means that **if you forget the master password, your database is lost**! So make sure you remember the password. You might also want to think about:
** What happens if I have an accident? Should any trusted person be able to access my database?
** What happens if my phone gets lost or stolen? Do I know how to recover my database from a backup or the cloud?
* having the database file
* knowing the master password (and additional second factor if you chose one)
This means that **if you forget the master password, your database is lost**! So make sure you remember the password and retain any second factor method (if one is used).
* You might also want to think about:
* What happens if I have an accident? Should any trusted person be able to access my database?
* What happens if my phone gets lost or stolen? Do I know how to recover my database from a backup or the cloud?
# Getting started
@@ -27,14 +28,14 @@ Select "Create new database" from the start screen. Tap the integrated help icon
## Getting passwords into password fields
There are many ways how to enter the passwords from your database in the corresponding fields. By default, the clipboard as well as the KP2A keyboard are activated in the settings:
* The KP2A keyboard is the recommended way because it's safe against clipboard loggers: Whenever you select an entry, the KP2A keyboard notification will appear in the notification bar. Click it to activate the keyboard. (The first time you do this, you are required to enable the keyboard in the system settings. This must be done by the user for Android security reasons.) As soon as it's activated, you can tap a field where you want to enter data from the selected entry. The KP2A keyboard will come up. Click the KP2A key (on the bottom left) to select whether you want to enter Username/password etc. When you're done, click the Keyboard key (next to the KP2A key) to switch back to your favorite keyboard.
* You can enable the Keepass2Android Autofill service in the system's accessibility settings which allows to fill data using Android's accessibility system. This works with many apps including Chrome browser but is not supported for Firefox on Android.
* The clipboard based approach can be used as well: Pull the notification bar down and select "Copy username/password to clipboard". Then long-tap the field where you want to paste the data. A small "paste" button should come up. Note, however, that information in the clipboard can be monitored by all apps on your device.
* You can enable the Keepass2Android Autofill service in the system's Autofill settings (Android 8+) which allows to fill data using Android's accessibility system. This works with many apps including Firefox browser but is not supported for Chrome (when writing this).
* The clipboard based approach can be used as well: Pull the notification bar down and select "Copy username/password to clipboard". Then long-tap the field where you want to paste the data. A small "paste" button should come up. Note, however, that information in the clipboard can be monitored by all apps on your device and clearing the clipboard is not always possible.
These options can be used in different workflows:
### Browser-based workflow
If you are browsing the web and need to enter crendentials for a webpage, a simple and powerful workflow is to use the "Share URL" option from the browser's menu. Then select Keepass2Android (or KP2A Offline). Open your database (if it's not already opened) and select the entry you want to enter (if KP2A did not already select the appropriate entry). Use the built-in keyboard or the clipboard to enter the password.
### Autofill service based workflow
If you have enabled the autofill service and open a (supported) app with a password field, a notification appears in the notification bar. Select this notification to select the appropriate entry. When you return to the app, the password and user field should be filled already.
If you have enabled the autofill service and open a (supported) app with a password field, a dropdown appears. Select "Fill with Keepass2Android" to select the appropriate entry. When you return to the app, the password and user field should be filled already.
### KP2A based workflow for websites
Open KP2A, open your database, select your entry (in this step, the notification bar items should show up already). Now click the URL link of the entry to open a browser window with the website. Use one of the methods described above to enter the credentials.
### KP2A Keyboard based workflow
@@ -69,14 +70,32 @@ Please see the [Advanced usage of the Keepass2Android keyboard](Advanced-usage-o
# FAQ
* Should I use the KP2A keyboard for entering passwords?
## Should I use the KP2A keyboard for entering passwords?
The KP2A keyboard is meant to quickly "paste" or "type" values from your database to any text fields by using the KP2A icon. The QUERTY keyboard is just for convenience (if you just have the KP2A keyboard activated and need to enter a few letters). However, every other (trustworthy) keyboard is ok as well to enter sensitive information: Keyboard's aren't unsafe in Android. Only the clipboard is. Thus, the KP2A keyboard allows to get information out of the database without using the clipboard.
**You can use any keyboard when you enter the main database password**
* Is it safe to store my kdbx file in the cloud?
While it may happen that someone gets access to your kdbx file in the cloud, there is still no need to worry: the purpose of encryption is to protect the data even in case someone gets the kdbx file! As long as you are using a safe master key, you're safe!
## Is it safe to store my kdbx file in the cloud?
While it may happen that someone gets access to your kdbx file in the cloud, there is still no need to worry: the purpose of encryption is to protect the data even in case someone gets the kdbx file! As long as you are using a safe master key, you're safe! [Key files](https://keepass.info/help/base/keys.html#keyfiles) can help with securing the database even more.
* Why is Keepass2Android so big?
## Doesn't Keepass2Android create automatic backups?
Yes and no. Yes: Keepass2Android stores the last successfully opened file as a read-only backup locally on the phone (unless you disable this is in the settings). This should make sure that even if the file gets destroyed during a save operation or gets deleted by accident, you should always have a version that can be opened. (Don't mix this up with the internal file cache which is not meant as a backup and can easily be overwritten even with a corrupt file. This internal file cache is meant for providing writable access even when the original file is not reachable, e.g. when you're offline.)
No: The local backup has two shortcomings: It is only one backup and does not allow to revert to older versions. So if you deleted an entry from the database, it might be deleted in the local backup soon as well. The even more important shortcoming is that it is just a local backup. It won't help when your phone gets lost or broken. Please create additional backups on seperate storage!
## How do I backup the database?
If you have stored your database on the cloud, you might rely on your cloud storage providers backups. Make sure they allow you to revert to older revisions in case the file gets corrupted for some reason.
If you are working with a local database file, make sure you create regular backups. I suggest you have an aumotated mechanism, e.g. with FolderSync (Lite) which can copy local files from your device to other locations, e.g. your PC in a local network. You can also use USB or tools like MyPhoneExploror to transfer data to your PC. Or, you use a removable storage like an SD card which you keep in a safe place after making the backup.
In all cases, you need to verify that your backup is readable! It's even best to test this on another device (e.g. a PC), so you simulate the case that you may lose your phone.
## I can open my database with fingerprint, but don't remember my master password!
It's time for action! As soon as possible, select Settings - Database - Export and choose unencrypted XML (don't put this on the cloud but on a local file). Transfer this file to a PC and import it to a new kdbx file, e.g. with Keepass2. Choose a new master password and make sure you don't forget this password!
## How can I transfer data from one device to another?
* If you are about to get a new Android device, you should make sure you're not losing your passwords in the transition! The first thing you need to make sure is that you can access your .kdbx file (which stores the passwords) on the new device. If it is already stored in the cloud, you only need to make sure you know how to setup the cloud storage on the new device (it might require a password, so make sure you have access to that!).
* If the .kdbx-file is stored locally on the old device, make sure you have an up-to-date backup (see above). You can then transfer that backup copy to the new device. (Note: transferring via USB causes data corruption in some cases, use MyPhoneExplorer or similar tools to be sure this does not happen.)
* If you are securing your password database with a keyfile, also transfer this key file to the new device.
* If you are opening your database with a fingerprint, make sure you also know the master password because fingerprint will not be available immediately on the new device.
## Why is Keepass2Android's apk so big?
Please see [Keepass2Android Apk](Keepass2Android-Apk.md) for more information.
# For developers

View File

@@ -13,10 +13,9 @@ Keepass2Android stores very sensitive user data and therefore implements a plug-
To tell Kp2a that you're a plug-in, you need to add a simple BroadcastReceiver like this:
{{
```java
public class PluginAAccessReceiver
extends keepass2android.pluginsdk.PluginAccessBroadcastReceiver
public class PluginAAccessReceiver extends keepass2android.pluginsdk.PluginAccessBroadcastReceiver
{
@Override
@@ -29,13 +28,13 @@ public class PluginAAccessReceiver
}
}
}}
```
Here, you define the method getScopes where the list of scopes is created which must be granted by the user. The actual logic of the authorization process is implemented by the base class in the sdk.
In order to make this broadcast receiver visible to KP2A, add the following lines (probably with the name adapted to your class name) in the AndroidManifest.xml:
{{
```xml
<receiver android:name="PluginAAccessReceiver" android:exported="true">
<intent-filter>
<action android:name="keepass2android.ACTION_TRIGGER_REQUEST_ACCESS" />
@@ -43,19 +42,19 @@ In order to make this broadcast receiver visible to KP2A, add the following line
<action android:name="keepass2android.ACTION_REVOKE_ACCESS" />
</intent-filter>
</receiver>
}}
```
Please also add a few strings in your resource files (e.g. strings.xml) with the following keys:
{{
```xml
<string name="kp2aplugin_title">The Great PluginA</string>
<string name="kp2aplugin_shortdesc">Test plugin to demonstrate how plugins work</string>
<string name="kp2aplugin_author">[your name here](your-name-here)</string>
}}
```
These strings will be displayed to the user when KP2A asks if access should be granted.
## Modifying the entry view
You can add menu options for the full entry or for individual fields of the entry when displayed to the user. This is done, for example, by the QR plugin ([https://play.google.com/store/apps/details?id=keepass2android.plugin.qr](https___play.google.com_store_apps_details_id=keepass2android.plugin.qr)).
You can add menu options for the full entry or for individual fields of the entry when displayed to the user. This is done, for example, by the QR plugin ([https://play.google.com/store/apps/details?id=keepass2android.plugin.qr](https://play.google.com/store/apps/details?id=keepass2android.plugin.qr)).
In addition, it is even possible to add new fields or modify existing fields. Please see the sample plugin "PluginA" in the KP2A repository for a simple example on how to do this:
[https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/src/keepass2android/plugina/PluginAActionReceiver.java](https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/src/keepass2android/plugina/PluginAActionReceiver.java)
@@ -64,7 +63,7 @@ KP2A 0.9.4 adds a great opportunity for third party apps: Instead of prompting t
To implement this, simply follow the steps descrIbed above in the sections Preparation and Authorization. Then, wherever appropriate in your app, do something like this:
{{
```java
try
{
PlaceholderFragment.this.startActivityForResult(
@@ -73,22 +72,23 @@ To implement this, simply follow the steps descrIbed above in the sections Prepa
}
catch (ActivityNotFoundException e)
{
Toast.makeText(PlaceholderFragment.this.getActivity(), "no KP2A host app found", Toast.LENGTH_SHORT).show();
Toast.makeText(
PlaceholderFragment.this.getActivity(),
"no KP2A host app found",
Toast.LENGTH_SHORT).show();
}
}}
```
(of course you can use PacketManager to check if the intent can be started instead of catching the Exception).
(of course you can use `PacketManager` to check if the intent can be started instead of catching the `Exception`).
Instead of querying credentials associated with your own app, you might want to query other credentials as well. instead of Kp2aControl.getQueryEntryIntentForOwnPackage() use
{{
Kp2aControl.getQueryEntryIntent("google.com")
}}
This requires {"SCOPE_QUERY_CREDENTIALS (whereas getQueryEntryIntentForOwnPackage() requires SCOPE_QUERY_CREDENTIALS_FOR_OWN_PACKAGE)"}.
Instead of querying credentials associated with your own app, you might want to query other credentials as well. instead of `KpControl.getQueryEntryIntentForOwnPackage()` use
`Kp2aControl.getQueryEntryIntent("google.com")`
This requires \{"SCOPE_QUERY_CREDENTIALS (whereas getQueryEntryIntentForOwnPackage() requires SCOPE_QUERY_CREDENTIALS_FOR_OWN_PACKAGE)"\}.
The credential data can be retrieved in onActivityResult():
{{
```java
if ((requestCode == 1) //queryEntry for own package
&& (resultCode == RESULT_OK)) // ensure user granted access and selected something
{
@@ -96,17 +96,20 @@ if ((requestCode == 1) //queryEntry for own package
if (!credentials.isEmpty())
{
//here we go!
Toast.makeText(getActivity(), "retrieved credenitals! Username="+credentials.get(KeepassDefs.UserNameField), Toast.LENGTH_LONG).show();
Toast.makeText(
getActivity(),
"retrieved credenitals! Username="+credentials.get(KeepassDefs.UserNameField),
Toast.LENGTH_LONG).show();
}
}
}}
```
Note that you get access to all strings (Title, Username, Password, URL, Notes + any user defined strings) in the entry. This may be in intersting in combination with the following section:
## Storing data in KP2A
If you allow the user to set up an account in your app or create a password, e.g. for encryption, please add an option to store this data in the Keepass2Android database, as this will lead to great workflows for the user. It's as simple as
{{
```java
try {
HashMap<String, String> fields = new HashMap<String, String>();
//standard fields
@@ -124,8 +127,7 @@ try {
//add to KP2A
PlaceholderFragment.this.startActivityForResult(
Kp2aControl
.getAddEntryIntent(fields, protectedFields),
Kp2aControl.getAddEntryIntent(fields, protectedFields),
2);
} catch (ActivityNotFoundException e) {
Toast.makeText(
@@ -133,7 +135,7 @@ try {
"no KP2A host app found",
Toast.LENGTH_SHORT).show();
}
}}
```
Note that this does not even require access authorization because the user will actively save the entry anyways (after selecting the group where to create it.)
@@ -142,13 +144,13 @@ With {"SCOPE_DATABASE_ACTIONS"}, you will be informed when the user opens, close
PluginA uses this to simply display a toast message in its ActionReceiver:
{{
```java
@Override
protected void dbAction(DatabaseAction db) {
Log.d("PluginA", db.getAction() + " in file " + db.getFileDisplayName() + " ("+db.getFilePath()+")");
}
}}
```
## Sample plugin

View File

@@ -4,25 +4,25 @@
on how to set up a Keepass 2 database with Yubikey/OTP protection.<br>
<br>
After successful setup you should have the database file, e.g. yubi.kdbx, and the OTP auxiliary file, e.g. yubi.otp.xml, both in the same folder.<br>
<a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767825"><img title="OTPAuxFile" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767826" alt="OTPAuxFile" width="513" height="40" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
<a href="How to use Keepass2Android with YubiKey NEO_OTPAuxFile_2.png"><img title="OTPAuxFile" src="How to use Keepass2Android with YubiKey NEO_OTPAuxFile_thumb.png" alt="OTPAuxFile" width="513" height="40" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
<p>Make sure you make <strong>both files</strong> available to Keepass2Android, e.g. by placing them both in your Dropbox.</p>
<p>Now you should check your NDEF setup of the Yubikey NEO. Therefore, go to the Tools menu in the Yubico Personalization Utility. Select the same slot as used for OTPs with Keepass 2. The default setting for NDEF type and payload should work. If you experience
problems, you may use the configuration as shown in this screenshot or simply press the &ldquo;Reset&rdquo; button:</p>
<p><a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767911"><img title="image" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767912" alt="image" width="760" height="622" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
<p><a href="How to use Keepass2Android with YubiKey NEO_image_2.png"><img title="image" src="How to use Keepass2Android with YubiKey NEO_image_thumb.png" alt="image" width="760" height="622" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
<p><br>
<br>
In Keepass2Android, select &quot;Open file&quot; and locate your database file, e.g. yubi.kdbx.<br>
<br>
In the password screen under &quot;Select master key type&quot; select &quot;Password &#43; OTP&quot;.</p>
<p><a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767913"><img title="Screenshot_2013-12-13-06-38-50" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767914" alt="Screenshot_2013-12-13-06-38-50" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
<p><a href="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-50_2.png"><img title="Screenshot_2013-12-13-06-38-50" src="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-50_thumb.png" alt="Screenshot_2013-12-13-06-38-50" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
<p>Click &quot;Load auxiliary OTP file&quot;. This is required to load the information how many OTPs must be entered. As loading the file might require user action in some cases, this is not performed automatically.<br>
<a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767915"><img title="Screenshot_2013-12-13-06-38-12" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767916" alt="Screenshot_2013-12-13-06-38-12" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a><br>
<a href="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-12_2.png"><img title="Screenshot_2013-12-13-06-38-12" src="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-12_thumb.png" alt="Screenshot_2013-12-13-06-38-12" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a><br>
After loading the OTP auxiliary file, you should see a few text fields for entering the OTPs. Now swipe your YubiKey NEO at the back of your Android device. If you have multiple apps which can handle NFC actions, you might be prompted to select which app to
use. Select Keepass2Android in this case. Swipe your YubiKey again until all OTP fields are filled. Note: You don't need to select the next text field, this is done automatically!<br>
<a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767917"><img title="Screenshot_2013-12-13-06-38-36" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767918" alt="Screenshot_2013-12-13-06-38-36" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a><br>
<a href="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-36_2.png"><img title="Screenshot_2013-12-13-06-38-36" src="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-36_thumb.png" alt="Screenshot_2013-12-13-06-38-36" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a><br>
Don't forget to also enter your password and click OK. You will see the &ldquo;Saving auxiliary OTP file&hellip;&rdquo; dialog. Note that there is some encryption envolved which is probably fast on your PC but might take some time on your mobile device. You
can reduce the look-ahead window length to speed this up.<br>
<a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767919"><img title="Screenshot_2013-12-13-06-39-47" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767920" alt="Screenshot_2013-12-13-06-39-47" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
<a href="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-39-47_2.png"><img title="Screenshot_2013-12-13-06-39-47" src="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-39-47_thumb.png" alt="Screenshot_2013-12-13-06-39-47" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
<h2>&nbsp;</h2>
<h2>A note about offline access</h2>
<p>If your database is stored in the cloud or on the web, you can still access it if you have enabled file caching (which is on by default). With OTPs, this becomes a little bit more complicated: If you repeatedly open your datbase while being offline, the

View File

@@ -2,7 +2,7 @@ Keepass2Android's apk is pretty big, e.g. when comparing to Keepassdroid. The ma
Here's a list of what is contained in the Keepass2Android 0.9.1 application package:
{{
```
Mono for Android
.net dlls 5.0 MB
Runtime 2.5 MB
@@ -22,4 +22,4 @@ Java/Mono bindings 0.5 MB
rest 0.3 MB
TOTAL 13 MB
}}
```

20
docs/OreoAutoFill.md Normal file
View File

@@ -0,0 +1,20 @@
Google has introduced the Android Autofill interface in Android 8. Keepass2Android supports this interface. In most Android apps and all Autofill-enabled browsers, this is the most convenient way of entering passwords. As soon as you focus a field, you will see a popup "Fill with Keepass2Android".
<img src="autofill-facebook.png" />
After clicking this popup, you can unlock your KP2A database. If automatic look up succeeds, KP2A will close automatically, if not you are prompted to select the entry you want to auto-fill. When returning to the target app, the fields should be filled automatically already.
As of January 2018, the following browsers are known to have Android Autofill support:
* Firefox Focus / Firefox Klar
* Opera Mini
These browsers do not (yet) have autofill support:
* Google Chrome
* Firefox for Android ([bugzilla entry](https://bugzilla.mozilla.org/show_bug.cgi?id=1352011))
* Brave-Browser
* Opera
Please use the Share-URL-feature and the built-in KP2A keyboard for these browsers.

View File

@@ -11,9 +11,7 @@ is the author of Keepass2Android and Keepass2Android Offline.
The contents of your password database is yours and is never collected by us. Keepass2Android stores this data on a location chosen by the user and encrypted in the Keepass database format. The app author does not have any access, neither to the files nor the contents. Depending on the user's choice of the storage location, the files may be stored on third-party servers like Dropbox or Google Drive.
Keepass2Android does not collect personal identifiable information. After unexpected errors or crashes of the app, the user may be asked if he/she whants to send an error report (Keepass2Android regular only). Error reports do not contain database contents, except (depending on the error message) UUIDs of entries. They may contain file paths if the error was related to a failed file operation. Error reports sent from inside the app are sent using Xamarin Insights.
The app author does not pass any of this data to third parties.
Keepass2Android does not collect personal identifiable information. For debugging purposes, the user may activate creating a debug log. This collects data inside the app and is not accessible to any other app nor the author of the app, unless the user explicitly sends the debug log to the author. Debug logs usually do not contain personal identifiable information, except if such information is part of file or folder names. Debug logs will not be shared with third parties unless explicitly authorized by the sender.
# What Android permissions are required?
@@ -22,5 +20,4 @@ The app author does not pass any of this data to third parties.
* **Storage**: Required to allow the user to read/store password databases or key files on the device locally.
* **Fingerprint**: Required if you want to use fingerprint unlock.
* **Vibrate**: Required by the built-in keyboard (vibrate on key press)
* **Bind Accessibility service**: Required to provide the Auto-Fill accessibility service.

View File

@@ -1,16 +1,19 @@
<h1 align="center"><img src="/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_online.png" align="center" width="100" alt="Keepass2Android Logo">Keepass2Android</h1>
# What is Keepass2Android?
Keepass2Android is a password manager app. It allows to store and retrieve passwords and other sensitive information in a file called "database". This database is secured with a so-called master password. The master password typically is a strong password and can be complemented with a second factor for additional security.
The password database file can be synchronized across different devices. This works best using one of the built-in cloud storage options, but can also be performed with third-party apps. Keepass2Android is compatible with Keepass 1 and Keepass 2 on Windows and KepassX on Linux.
The password database file can be synchronized across different devices. This works best using one of the built-in cloud storage options, but can also be performed with third-party apps. Keepass2Android is compatible with Keepass 1 and Keepass 2 on Windows and KeepassX on Linux.
# Where to get it?
Regular stable releases of Keepass2Android are available on [Google Play](https://play.google.com/store/apps/details?id=keepass2android.keepass2android).
Beta-releases can be obtained by opting in to the [Beta testing channel](https://play.google.com/apps/testing/keepass2android.keepass2android). Please join the [Beta tester group](https://plus.google.com/communities/107293657110547776032) for news and discussions about the latest beta releases.
Beta-releases can be obtained by opting in to the [Beta testing channel](https://play.google.com/apps/testing/keepass2android.keepass2android) or [Beta testing channel for Keepass2Android Offline](https://play.google.com/apps/testing/keepass2android.keepass2android_nonet). Please join the [Beta tester group](https://plus.google.com/communities/107293657110547776032) for news and discussions about the latest beta releases.
# How can I contribute?
* Help to translate Keepass2Android into your language or improve translations at [our Crowdin page](http://crowdin.net/project/keepass2android)
* Add features by [creating a plugin](How-to-create-a-plug-in_) or creating a pull request. You might want to contact me before you start working so I can coordinate efforts.
* Add features by [creating a plugin](How-to-create-a-plug-in_.md) or creating a pull request. You might want to contact me before you start working so I can coordinate efforts.
* [Become a GitHub sponsor to boost 🚀 development](https://github.com/sponsors/PhilippC)
* [Make a donation](http://philipp.crocoll.net/donate.php)
# How do I learn more?

1
docs/_config.yml Normal file
View File

@@ -0,0 +1 @@
theme: jekyll-theme-slate

BIN
docs/autofill-facebook.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 800 800"
enable-background="new 0 0 800 800"
xml:space="preserve"
sodipodi:docname="Logo-green-foreground.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata
id="metadata4969"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs4967" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview4965"
showgrid="false"
inkscape:zoom="0.75130096"
inkscape:cx="413.59403"
inkscape:cy="332.90312"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><path
d="m 318.7,232 c 13.6,0 24.6,10.9 24.6,24.4 0,13.5 -11,24.4 -24.6,24.4 -13.6,0 -24.6,-10.9 -24.6,-24.4 0,-13.5 11,-24.4 24.6,-24.4 z m 134.8,24.4 c 0,13.5 11,24.4 24.6,24.4 13.6,0 24.6,-10.9 24.6,-24.4 0,-13.5 -11,-24.4 -24.6,-24.4 -13.6,0 -24.6,10.9 -24.6,24.4 z M 399.8,177.7 M 140.2,600.6 v 47 h 517.3 v -47 z m 0,-249.7 v 47 h 517.3 v -47 z m -0.1,130.3 h 191.8 c -0.8,-4.1 -1.2,-8.3 -1.2,-12.4 0,-12.4 3.4,-24.2 9.9,-34.6 H 140.1 Z m 517.4,0 v -47 H 454.9 c 6.5,10.4 9.8,22.2 9.8,34.6 0,4.1 -0.4,8.3 -1.2,12.4 z m -517.4,36.2 v 47 h 186.6 l 14.3,-47 z m 314.2,0 14.4,47 h 188.8 v -47 z m -21.6,48.4 -21,-68.9 2.7,-1.6 c 10.3,-5.9 16.7,-16.9 16.7,-28.6 0,-18.2 -15,-33 -33.3,-33 -18.3,0 -33.3,14.8 -33.3,33 0,11.8 6.4,22.7 16.7,28.6 l 2.7,1.6 -21.1,68.9 z m 74.8,-407.3 0.2,-0.3 35.6,-51.3 c 2.4,-3.5 1.8,-8.1 -1.4,-10.3 -3.2,-2.2 -7.7,-1.1 -10.2,2.4 l -37.2,53.5 -0.1,0.3 c -29.3,-11.8 -62.1,-18.5 -96.8,-18.5 -35.2,0 -68.5,6.9 -98.1,19 L 261.8,99 c -2.4,-3.5 -7,-4.6 -10.2,-2.4 -3.2,2.2 -3.8,6.8 -1.4,10.3 l 36.2,52.2 c -66.8,32.2 -111.9,92.4 -111.9,161.3 h 42.9 c 0,-79.1 80.8,-143.5 180.1,-143.5 99.3,0 180.1,64.3 180.1,143.5 h 42.9 c 0.2,-69.3 -45.4,-129.8 -113,-161.9 z"
id="path4962"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 353 KiB

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{0B109C0E-0514-4340-8779-5BD6A0DDE84E}</ProjectGuid>
<ProjectTypeGuids>{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AdalBindings</RootNamespace>
<AssemblyName>AdalBindings</AssemblyName>
<FileAlignment>512</FileAlignment>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v8.1</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Android" />
<Reference Include="System" />
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Jars\AboutJars.txt" />
<None Include="Additions\AboutAdditions.txt" />
<LibraryProjectZip Include="Jars\adal-1.14.0.aar" />
</ItemGroup>
<ItemGroup>
<TransformFile Include="Transforms\Metadata.xml" />
<TransformFile Include="Transforms\EnumFields.xml" />
<TransformFile Include="Transforms\EnumMethods.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\gson-2.3.1.jar" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -0,0 +1,48 @@
Additions allow you to add arbitrary C# to the generated classes
before they are compiled. This can be helpful for providing convenience
methods or adding pure C# classes.
== Adding Methods to Generated Classes ==
Let's say the library being bound has a Rectangle class with a constructor
that takes an x and y position, and a width and length size. It will look like
this:
public partial class Rectangle
{
public Rectangle (int x, int y, int width, int height)
{
// JNI bindings
}
}
Imagine we want to add a constructor to this class that takes a Point and
Size structure instead of 4 ints. We can add a new file called Rectangle.cs
with a partial class containing our new method:
public partial class Rectangle
{
public Rectangle (Point location, Size size) :
this (location.X, location.Y, size.Width, size.Height)
{
}
}
At compile time, the additions class will be added to the generated class
and the final assembly will a Rectangle class with both constructors.
== Adding C# Classes ==
Another thing that can be done is adding fully C# managed classes to the
generated library. In the above example, let's assume that there isn't a
Point class available in Java or our library. The one we create doesn't need
to interact with Java, so we'll create it like a normal class in C#.
By adding a Point.cs file with this class, it will end up in the binding library:
public class Point
{
public int X { get; set; }
public int Y { get; set; }
}

View File

@@ -0,0 +1,24 @@
This directory is for Android .jars.
There are 2 types of jars that are supported:
== Input Jar ==
This is the jar that bindings should be generated for.
For example, if you were binding the Google Maps library, this would
be Google's "maps.jar".
Set the build action for these jars in the properties page to "InputJar".
== Reference Jars ==
These are jars that are referenced by the input jar. C# bindings will
not be created for these jars. These jars will be used to resolve
types used by the input jar.
NOTE: Do not add "android.jar" as a reference jar. It will be added automatically
based on the Target Framework selected.
Set the build action for these jars in the properties page to "ReferenceJar".

Binary file not shown.

View File

@@ -0,0 +1,30 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Android.App;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("AdalBindings")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AdalBindings")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,14 @@
<enum-field-mappings>
<!--
This example converts the constants Fragment_id, Fragment_name,
and Fragment_tag from android.support.v4.app.FragmentActivity.FragmentTag
to an enum called Android.Support.V4.App.FragmentTagType with values
Id, Name, and Tag.
<mapping jni-class="android/support/v4/app/FragmentActivity$FragmentTag" clr-enum-type="Android.Support.V4.App.FragmentTagType">
<field jni-name="Fragment_name" clr-name="Name" value="0" />
<field jni-name="Fragment_id" clr-name="Id" value="1" />
<field jni-name="Fragment_tag" clr-name="Tag" value="2" />
</mapping>
-->
</enum-field-mappings>

View File

@@ -0,0 +1,13 @@
<enum-method-mappings>
<!--
This example changes the Java method:
android.support.v4.app.Fragment.SavedState.writeToParcel (int flags)
to be:
android.support.v4.app.Fragment.SavedState.writeToParcel (Android.OS.ParcelableWriteFlags flags)
when bound in C#.
<mapping jni-class="android/support/v4/app/Fragment.SavedState">
<method jni-name="writeToParcel" parameter="flags" clr-enum-type="Android.OS.ParcelableWriteFlags" />
</mapping>
-->
</enum-method-mappings>

View File

@@ -0,0 +1,13 @@
<metadata>
<!--
This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
-->
<remove-node path="/api/package[@name='com.microsoft.aad.adal']/class[@name='AuthenticationActivity']" />
<remove-node path="/api/package[@name='com.microsoft.aad.adal']/class[@name='DateTimeAdapter']" />
<remove-node path="/api/package[@name='com.microsoft.aad.adal']" />
</metadata>

View File

@@ -10,8 +10,9 @@
<RootNamespace>AndroidFileChooserBinding</RootNamespace>
<AssemblyName>AndroidFileChooserBinding</AssemblyName>
<FileAlignment>512</FileAlignment>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -47,9 +48,6 @@
<Reference Include="Mono.Android" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.Android.Support.v4">
<HintPath>..\packages\Xamarin.Android.Support.v4.20.0.0.4\lib\MonoAndroid10\Xamarin.Android.Support.v4.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Xamarin.Android.Support.v4" version="20.0.0.4" targetFramework="MonoAndroid22" requireReinstallation="True" />
</packages>

View File

@@ -0,0 +1,48 @@
Additions allow you to add arbitrary C# to the generated classes
before they are compiled. This can be helpful for providing convenience
methods or adding pure C# classes.
== Adding Methods to Generated Classes ==
Let's say the library being bound has a Rectangle class with a constructor
that takes an x and y position, and a width and length size. It will look like
this:
public partial class Rectangle
{
public Rectangle (int x, int y, int width, int height)
{
// JNI bindings
}
}
Imagine we want to add a constructor to this class that takes a Point and
Size structure instead of 4 ints. We can add a new file called Rectangle.cs
with a partial class containing our new method:
public partial class Rectangle
{
public Rectangle (Point location, Size size) :
this (location.X, location.Y, size.Width, size.Height)
{
}
}
At compile time, the additions class will be added to the generated class
and the final assembly will a Rectangle class with both constructors.
== Adding C# Classes ==
Another thing that can be done is adding fully C# managed classes to the
generated library. In the above example, let's assume that there isn't a
Point class available in Java or our library. The one we create doesn't need
to interact with Java, so we'll create it like a normal class in C#.
By adding a Point.cs file with this class, it will end up in the binding library:
public class Point
{
public int X { get; set; }
public int Y { get; set; }
}

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}</ProjectGuid>
<ProjectTypeGuids>{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TemplateGuid>{77efb91c-a7e9-4b0e-a7c5-31eeec3c6d46}</TemplateGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BiometricBinding</RootNamespace>
<AssemblyName>BiometricBinding</AssemblyName>
<FileAlignment>512</FileAlignment>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
<AndroidClassParser>class-parse</AndroidClassParser>
<AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>portable</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>portable</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Android" />
<Reference Include="System" />
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Jars\AboutJars.txt" />
<None Include="Additions\AboutAdditions.txt" />
<LibraryProjectZip Include="Jars\biometric-1.0.0-rc02.aar" />
</ItemGroup>
<ItemGroup>
<TransformFile Include="Transforms\Metadata.xml" />
<TransformFile Include="Transforms\EnumFields.xml" />
<TransformFile Include="Transforms\EnumMethods.xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.AndroidX.Fragment">
<Version>1.0.0-preview02</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -0,0 +1,24 @@
This directory is for Android .jars.
There are 2 types of jars that are supported:
== Input Jar ==
This is the jar that bindings should be generated for.
For example, if you were binding the Google Maps library, this would
be Google's "maps.jar".
Set the build action for these jars in the properties page to "InputJar".
== Reference Jars ==
These are jars that are referenced by the input jar. C# bindings will
not be created for these jars. These jars will be used to resolve
types used by the input jar.
NOTE: Do not add "android.jar" as a reference jar. It will be added automatically
based on the Target Framework selected.
Set the build action for these jars in the properties page to "ReferenceJar".

Binary file not shown.

View File

@@ -0,0 +1,30 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Android.App;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("BiometricBinding")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BiometricBinding")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,14 @@
<enum-field-mappings>
<!--
This example converts the constants Fragment_id, Fragment_name,
and Fragment_tag from android.support.v4.app.FragmentActivity.FragmentTag
to an enum called Android.Support.V4.App.FragmentTagType with values
Id, Name, and Tag.
<mapping jni-class="android/support/v4/app/FragmentActivity$FragmentTag" clr-enum-type="Android.Support.V4.App.FragmentTagType">
<field jni-name="Fragment_name" clr-name="Name" value="0" />
<field jni-name="Fragment_id" clr-name="Id" value="1" />
<field jni-name="Fragment_tag" clr-name="Tag" value="2" />
</mapping>
-->
</enum-field-mappings>

View File

@@ -0,0 +1,13 @@
<enum-method-mappings>
<!--
This example changes the Java method:
android.support.v4.app.Fragment.SavedState.writeToParcel (int flags)
to be:
android.support.v4.app.Fragment.SavedState.writeToParcel (Android.OS.ParcelableWriteFlags flags)
when bound in C#.
<mapping jni-class="android/support/v4/app/Fragment.SavedState">
<method jni-name="writeToParcel" parameter="flags" clr-enum-type="Android.OS.ParcelableWriteFlags" />
</mapping>
-->
</enum-method-mappings>

View File

@@ -0,0 +1,9 @@
<metadata>
<!--
This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
-->
</metadata>

View File

@@ -26,6 +26,7 @@
android:hint="@string/http_auth_dialog_password"
android:inputType="textPassword"
android:paddingTop="10dp"
android:paddingBottom="20dp" />
android:paddingBottom="20dp"
android:importantForAccessibility="no" />
</LinearLayout>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -10,8 +10,10 @@
<RootNamespace>JavaFileStorageBindings</RootNamespace>
<AssemblyName>JavaFileStorageBindings</AssemblyName>
<FileAlignment>512</FileAlignment>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<AndroidClassParser>class-parse</AndroidClassParser>
<AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -50,15 +52,6 @@
<Reference Include="GooglePlayServicesLib">
<HintPath>..\Components\googleplayservices-19.0.0\lib\android\GooglePlayServicesLib.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v4">
<HintPath>..\Components\googleplayservices-19.0.0\lib\android\Xamarin.Android.Support.v4.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.AppCompat">
<HintPath>..\Components\googleplayservices-19.0.0\lib\android\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.MediaRouter">
<HintPath>..\Components\googleplayservices-19.0.0\lib\android\Xamarin.Android.Support.v7.MediaRouter.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -90,13 +83,7 @@
</XamarinComponentReference>
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\okhttp-3.4.1.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\okhttp-digest-1.7.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\gson-2.3.1.jar" />
<ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\msa-auth-0.8.6\classes-msa-auth.jar" />
@@ -104,9 +91,6 @@
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\onedrive-sdk-android-1.2.2\classes-onedrive-sdk.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\adal-1.1.19\classes-adal.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\gdrive\commons-logging-1.1.1.jar" />
</ItemGroup>
@@ -156,9 +140,18 @@
<EmbeddedReferenceJar Include="Jars\jackson-core-2.7.4.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\okio-1.9.0.jar" />
<EmbeddedJar Include="Jars\dropbox-core-sdk-3.1.1.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedJar Include="Jars\dropbox-core-sdk-3.0.3.jar" />
<EmbeddedReferenceJar Include="Jars\gson-2.8.1.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\okhttp-4.2.2.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\okhttp-digest-1.15.jar" />
</ItemGroup>
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\okio-2.2.2.jar" />
</ItemGroup>
</Project>

View File

@@ -11,6 +11,8 @@
<remove-node path="/api/package[@name='com.jcraft.jsch.jcraft']" />
<remove-node path="/api/package[@name='com.jcraft.jzlib']" />
<remove-node path="/api/package[@name='com.pcloud.sdk']" />
<remove-node path="/api/package[@name='com.dropbox.core']" />
<remove-node path="/api/package[@name='com.dropbox.core.util']" />
<remove-node path="/api/package[@name='com.dropbox.core.http']" />

View File

@@ -10,8 +10,9 @@
<RootNamespace>KP2AKdbLibraryBinding</RootNamespace>
<AssemblyName>KP2AKdbLibraryBinding</AssemblyName>
<FileAlignment>512</FileAlignment>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -52,10 +53,11 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<LibraryProjectZip Include="..\java\KP2AKdbLibrary\app\build\outputs\aar\app-debug.aar">
<Link>Jars\app-debug.aar</Link>
</LibraryProjectZip>
<None Include="Jars\AboutJars.txt" />
<None Include="Additions\AboutAdditions.txt" />
<EmbeddedNativeLibrary Include="libs\armeabi-v7a\libfinal-key.so" />
<EmbeddedNativeLibrary Include="libs\armeabi\libfinal-key.so" />
</ItemGroup>
<ItemGroup>
<TransformFile Include="Transforms\Metadata.xml">
@@ -65,9 +67,7 @@
<TransformFile Include="Transforms\EnumMethods.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedJar Include="..\java\KP2AKdbLibrary\bin\kp2akdblibrary.jar">
<Link>Jars\kp2akdblibrary.jar</Link>
</EmbeddedJar>
<Folder Include="libs\" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
# Visual Studio Version 16
VisualStudioVersion = 16.0.29418.71
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KeePassLib2Android", "KeePassLib2Android\KeePassLib2Android.csproj", "{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}"
EndProject
@@ -27,6 +27,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.FtpClient.Androi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SamsungPass", "SamsungPass\Xamarin.SamsungPass\SamsungPass\SamsungPass.csproj", "{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PCloudBindings", "PCloudBindings\PCloudBindings.csproj", "{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BiometricBinding", "BiometricBinding\BiometricBinding.csproj", "{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -156,19 +160,25 @@ Global
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Win32.Build.0 = Debug|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|x64.ActiveCfg = Debug|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|x64.Build.0 = Debug|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Any CPU.Build.0 = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Win32.ActiveCfg = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Win32.Build.0 = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|x64.ActiveCfg = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|x64.Build.0 = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Win32.Build.0 = ReleaseNoNet|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|x64.Build.0 = ReleaseNoNet|Any CPU
{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -283,10 +293,61 @@ Global
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Debug|Win32.Build.0 = Debug|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Debug|x64.ActiveCfg = Debug|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Debug|x64.Build.0 = Debug|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Release|Any CPU.Build.0 = Release|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Release|Win32.ActiveCfg = Release|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Release|Win32.Build.0 = Release|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Release|x64.ActiveCfg = Release|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.Release|x64.Build.0 = Release|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.ReleaseNoNet|Win32.Build.0 = ReleaseNoNet|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}.ReleaseNoNet|x64.Build.0 = ReleaseNoNet|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Debug|Win32.Build.0 = Debug|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Debug|x64.ActiveCfg = Debug|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Debug|x64.Build.0 = Debug|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Release|Any CPU.Build.0 = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Release|Win32.ActiveCfg = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Release|Win32.Build.0 = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Release|x64.ActiveCfg = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.Release|x64.Build.0 = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.ReleaseNoNet|Win32.Build.0 = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
{2B1DE455-BF8E-4F8A-87BE-AE7EA354F3E4}.ReleaseNoNet|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2B48EDA2-ABCE-4DB5-A609-DFDF5FAAE767}
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
Policies = $0
$0.DotNetNamingPolicy = $1

View File

@@ -21,7 +21,7 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using keepass2android;
#if KeePassUAP
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Engines;
@@ -55,6 +55,9 @@ namespace KeePassLib.Cryptography.KeyDerivation
get { return "AES-KDF"; }
}
public override byte[] GetSeed(KdfParameters p)
{ return p.GetByteArray(ParamSeed); }
public AesKdf()
{
}
@@ -141,6 +144,7 @@ namespace KeePassLib.Cryptography.KeyDerivation
public static bool TransformKeyManaged(byte[] pbNewKey32, byte[] pbKeySeed32,
ulong uNumRounds)
{
Kp2aLog.Log("Warning: transforming key managed. Expect this to be slow!");
#if KeePassUAP
KeyParameter kp = new KeyParameter(pbKeySeed32);
AesEngine aes = new AesEngine();

View File

@@ -20,6 +20,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
namespace KeePassLib.Cryptography.KeyDerivation
@@ -68,6 +69,9 @@ namespace KeePassLib.Cryptography.KeyDerivation
get { return "Argon2"; }
}
public override byte[] GetSeed(KdfParameters p)
{ return p.GetByteArray(ParamSalt); }
public Argon2Kdf()
{
}
@@ -124,8 +128,44 @@ namespace KeePassLib.Cryptography.KeyDerivation
byte[] pbSecretKey = p.GetByteArray(ParamSecretKey);
byte[] pbAssocData = p.GetByteArray(ParamAssocData);
if (pbSecretKey != null) {
throw new ArgumentOutOfRangeException("Unsupported configuration: non-null pbSecretKey");
}
if (pbAssocData != null) {
throw new ArgumentOutOfRangeException("Unsupported configuration: non-null pbAssocData");
}
/*
byte[] pbRet = Argon2d(pbMsg, pbSalt, uPar, uMem, uIt,
32, v, pbSecretKey, pbAssocData);
*/
IntPtr msgPtr = Marshal.AllocHGlobal(pbMsg.Length);
IntPtr saltPtr = Marshal.AllocHGlobal(pbSalt.Length);
IntPtr retPtr = Marshal.AllocHGlobal(32);
Marshal.Copy(pbMsg, 0, msgPtr, pbMsg.Length);
Marshal.Copy(pbSalt, 0, saltPtr, pbSalt.Length);
const UInt32 Argon2_d = 0;
int ret = argon2_hash(
(UInt32)uIt, (UInt32)(uMem / 1024), uPar,
msgPtr, (IntPtr)pbMsg.Length,
saltPtr, (IntPtr)pbSalt.Length,
retPtr, (IntPtr)32,
(IntPtr)0, (IntPtr)0, Argon2_d, v);
if (ret != 0) {
throw new Exception("argon2_hash failed with " + ret);
}
byte[] pbRet = new byte[32];
Marshal.Copy(retPtr, pbRet, 0, 32);
Marshal.FreeHGlobal(msgPtr);
Marshal.FreeHGlobal(saltPtr);
Marshal.FreeHGlobal(retPtr);
if(uMem > (100UL * 1024UL * 1024UL)) GC.Collect();
return pbRet;
@@ -140,5 +180,14 @@ namespace KeePassLib.Cryptography.KeyDerivation
MaxIterations, uMilliseconds, true);
return p;
}
[DllImport("argon2")]
static extern int argon2_hash(
UInt32 t_cost, UInt32 m_cost, UInt32 parallelism,
IntPtr pwd, IntPtr pwdlen,
IntPtr salt, IntPtr saltlen,
IntPtr hash, IntPtr hashlen,
IntPtr encoded, IntPtr encodedlen,
UInt32 type, UInt32 version);
}
}

View File

@@ -36,6 +36,8 @@ namespace KeePassLib.Cryptography.KeyDerivation
get;
}
public abstract byte[] GetSeed(KdfParameters p);
public virtual KdfParameters GetDefaultParameters()
{
return new KdfParameters(this.Uuid);

View File

@@ -12,8 +12,8 @@
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AssemblyName>KeePassLib2Android</AssemblyName>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<NuGetPackageImportStamp>8482b288</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

View File

@@ -20,11 +20,8 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using KeePassLib.Cryptography;
using KeePassLib.Cryptography.KeyDerivation;
using KeePassLib.Native;
using KeePassLib.Resources;
using KeePassLib.Security;
using KeePassLib.Utility;
@@ -163,11 +160,12 @@ namespace KeePassLib.Keys
{
return (T) GetUserKey(typeof (T));
}
/// <summary>
/// Creates the composite key from the supplied user key sources (password,
/// key file, user account, computer ID, etc.).
/// </summary>
private byte[] CreateRawCompositeKey32()
private byte[] CreateRawCompositeKey32(byte[] mPbMasterSeed, byte[] mPbKdfSeed)
{
ValidateUserKeys();
@@ -176,6 +174,8 @@ namespace KeePassLib.Keys
int cbData = 0;
foreach(IUserKey pKey in m_vUserKeys)
{
if (pKey is ISeedBasedUserKey)
((ISeedBasedUserKey)pKey).SetParams(mPbMasterSeed, mPbKdfSeed);
ProtectedBinary b = pKey.KeyData;
if(b != null)
{
@@ -200,45 +200,14 @@ namespace KeePassLib.Keys
return pbHash;
}
public bool EqualsValue(CompositeKey ckOther)
{
if(ckOther == null) throw new ArgumentNullException("ckOther");
byte[] pbThis = CreateRawCompositeKey32();
byte[] pbOther = ckOther.CreateRawCompositeKey32();
bool bResult = MemUtil.ArraysEqual(pbThis, pbOther);
MemUtil.ZeroByteArray(pbOther);
MemUtil.ZeroByteArray(pbThis);
return bResult;
}
[Obsolete]
public ProtectedBinary GenerateKey32(byte[] pbKeySeed32, ulong uNumRounds)
{
Debug.Assert(pbKeySeed32 != null);
if(pbKeySeed32 == null) throw new ArgumentNullException("pbKeySeed32");
Debug.Assert(pbKeySeed32.Length == 32);
if(pbKeySeed32.Length != 32) throw new ArgumentException("pbKeySeed32");
AesKdf kdf = new AesKdf();
KdfParameters p = kdf.GetDefaultParameters();
p.SetUInt64(AesKdf.ParamRounds, uNumRounds);
p.SetByteArray(AesKdf.ParamSeed, pbKeySeed32);
return GenerateKey32(p);
}
/// <summary>
/// Generate a 32-byte (256-bit) key from the composite key.
/// </summary>
public ProtectedBinary GenerateKey32(KdfParameters p)
public ProtectedBinary GenerateKey32(KdfParameters p, byte[] mPbMasterSeed)
{
if(p == null) { Debug.Assert(false); throw new ArgumentNullException("p"); }
byte[] pbRaw32 = CreateRawCompositeKey32();
if((pbRaw32 == null) || (pbRaw32.Length != 32))
{ Debug.Assert(false); return null; }
KdfEngine kdf = KdfPool.Get(p.KdfUuid);
if (kdf == null) // CryptographicExceptions are translated to "file corrupted"
@@ -246,6 +215,11 @@ namespace KeePassLib.Keys
KLRes.FileNewVerOrPlgReq + MessageService.NewParagraph +
"UUID: " + p.KdfUuid.ToHexString() + ".");
byte[] pbRaw32 = CreateRawCompositeKey32(mPbMasterSeed, kdf.GetSeed(p));
if((pbRaw32 == null) || (pbRaw32.Length != 32))
{ Debug.Assert(false); return null; }
byte[] pbTrf32 = kdf.Transform(pbRaw32, p);
if(pbTrf32 == null) { Debug.Assert(false); return null; }
@@ -279,6 +253,11 @@ namespace KeePassLib.Keys
}
}
public interface ISeedBasedUserKey
{
void SetParams(byte[] masterSeed, byte[] mPbKdfSeed);
}
public sealed class InvalidCompositeKeyException : Exception
{
public override string Message

View File

@@ -42,5 +42,7 @@ namespace KeePassLib.Keys
// /// Clear the key and securely erase all security-critical information.
// /// </summary>
// void Clear();
uint GetMinKdbxVersion();
}
}

View File

@@ -45,6 +45,11 @@ namespace KeePassLib.Keys
get { return m_pbKey; }
}
public uint GetMinKdbxVersion()
{
return 0;
}
public KcpCustomKey(string strName, byte[] pbKeyData, bool bPerformHash)
{
Debug.Assert(strName != null); if(strName == null) throw new ArgumentNullException("strName");

View File

@@ -64,6 +64,11 @@ namespace KeePassLib.Keys
get { return m_pbKeyData; }
}
public uint GetMinKdbxVersion()
{
return 0;
}
public IOConnectionInfo Ioc
{
get { return m_ioc; }

View File

@@ -53,6 +53,11 @@ namespace KeePassLib.Keys
get { return m_pbKeyData; }
}
public uint GetMinKdbxVersion()
{
return 0;
}
public KcpPassword(byte[] pbPasswordUtf8)
{
SetKey(pbPasswordUtf8);

View File

@@ -21,7 +21,6 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Security;
#if !KeePassUAP
@@ -60,6 +59,11 @@ namespace KeePassLib.Keys
get { return m_pbKeyData; }
}
public uint GetMinKdbxVersion()
{
return 0;
}
/// <summary>
/// Construct a user account key.
/// </summary>
@@ -73,25 +77,6 @@ namespace KeePassLib.Keys
// m_pbKeyData = null;
// }
private static string GetUserKeyFilePath(bool bCreate)
{
#if KeePassRT
string strUserDir = Windows.Storage.ApplicationData.Current.RoamingFolder.Path;
#else
string strUserDir = Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData);
#endif
strUserDir = UrlUtil.EnsureTerminatingSeparator(strUserDir, false);
strUserDir += PwDefs.ShortProductName;
if (bCreate && !Directory.Exists(strUserDir))
Directory.CreateDirectory(strUserDir);
strUserDir = UrlUtil.EnsureTerminatingSeparator(strUserDir, false);
return strUserDir + UserKeyFileName;
}
private static byte[] LoadUserKey(bool bShowWarning)
{
byte[] pbKey = null;

View File

@@ -18,6 +18,9 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll.
using System;
using System.Collections.Generic;
using System.IO;
using Android;
using Android.App;
using Android.Content;
using Android.Preferences;
using KeePassLib.Serialization;
@@ -57,7 +60,7 @@ namespace keepass2android
private static string LogFilename
{
get { return "/mnt/sdcard/keepass2android.log"; }
get { return Application.Context.FilesDir.CanonicalPath +"/keepass2android.log"; }
}
private static bool LogToFile
@@ -77,5 +80,43 @@ namespace keepass2android
if (OnUnexpectedError != null)
OnUnexpectedError(null, exception);
}
public static void CreateLogFile()
{
if (!File.Exists(LogFilename))
{
File.Create(LogFilename).Dispose();
_logToFile = true;
}
}
public static void FinishLogFile()
{
if (File.Exists(LogFilename))
{
_logToFile = false;
int count = 0;
while (File.Exists(LogFilename + "." + count))
count++;
File.Move(LogFilename, LogFilename + "." + count);
}
}
public static void SendLog(Context ctx)
{
if (!File.Exists(LogFilename))
return;
Intent sendIntent = new Intent();
sendIntent.SetAction(Intent.ActionSend);
sendIntent.PutExtra(Intent.ExtraText, File.ReadAllText(LogFilename));
sendIntent.PutExtra(Intent.ExtraEmail, "crocoapps@gmail.com");
sendIntent.PutExtra(Intent.ExtraSubject, "Keepass2Android log");
sendIntent.SetType("text/plain");
ctx.StartActivity(Intent.CreateChooser(sendIntent, "Send log to..."));
}
}
}

View File

@@ -302,7 +302,7 @@ namespace KeePassLib.Native
}
catch (Exception e)
{
Kp2aLog.Log(e.Message);
Kp2aLog.Log(e.ToString());
return false;
}

View File

@@ -485,12 +485,6 @@ namespace KeePassLib
set { m_pbHashOfLastIO = value; }
}
public bool UseFileTransactions
{
get { return m_bUseFileTransactions; }
set { m_bUseFileTransactions = value; }
}
public bool UseFileLocks
{
get { return m_bUseFileLocks; }
@@ -593,7 +587,7 @@ namespace KeePassLib
/// </summary>
/// <param name="ioConnection">IO connection of the new database.</param>
/// <param name="pwKey">Key to open the database.</param>
public void New(IOConnectionInfo ioConnection, CompositeKey pwKey)
public void New(IOConnectionInfo ioConnection, CompositeKey pwKey, string filenameWithoutPathAndExt)
{
Debug.Assert(ioConnection != null);
if(ioConnection == null) throw new ArgumentNullException("ioConnection");
@@ -608,26 +602,11 @@ namespace KeePassLib
m_bDatabaseOpened = true;
m_bModified = true;
m_pgRootGroup = new PwGroup(true, true,
UrlUtil.StripExtension(UrlUtil.GetFileName(ioConnection.Path)),
m_pgRootGroup = new PwGroup(true, true, filenameWithoutPathAndExt,
PwIcon.FolderOpen);
m_pgRootGroup.IsExpanded = true;
}
/// <summary>
/// Open a database. The URL may point to any supported data source.
/// </summary>
/// <param name="ioSource">IO connection to load the database from.</param>
/// <param name="pwKey">Key used to open the specified database.</param>
/// <param name="slLogger">Logger, which gets all status messages.</param>
public void Open(IOConnectionInfo ioSource, CompositeKey pwKey,
IStatusLogger slLogger, IDatabaseFormat format)
{
Open(IOConnection.OpenRead(ioSource), UrlUtil.StripExtension(
UrlUtil.GetFileName(ioSource.Path)), ioSource, pwKey, slLogger, format);
}
/// <summary>
/// Open a database. The URL may point to any supported data source.
@@ -676,36 +655,6 @@ namespace KeePassLib
}
}
/// <summary>
/// Save the currently opened database. The file is written to the location
/// it has been opened from.
/// </summary>
/// <param name="slLogger">Logger that recieves status information.</param>
public void Save(IStatusLogger slLogger)
{
Debug.Assert(!HasDuplicateUuids());
FileLock fl = null;
if(m_bUseFileLocks) fl = new FileLock(m_ioSource);
try
{
FileTransactionEx ft = new FileTransactionEx(m_ioSource,
m_bUseFileTransactions);
Stream s = ft.OpenWrite();
KdbxFile kdb = new KdbxFile(this);
kdb.Save(s, null, KdbpFile.GetFormatToUse(m_ioSource), slLogger);
ft.CommitWrite();
m_pbHashOfLastIO = kdb.HashOfFileOnDisk;
m_pbHashOfFileOnDisk = kdb.HashOfFileOnDisk;
Debug.Assert(m_pbHashOfFileOnDisk != null);
}
finally { if(fl != null) fl.Dispose(); }
m_bModified = false;
}
/// <summary>
/// Save the currently opened database. The file is written to the given stream which is expected to be the original location.
@@ -723,46 +672,6 @@ namespace KeePassLib
m_bModified = false;
}
/// <summary>
/// Save the currently opened database to a different location. If
/// <paramref name="bIsPrimaryNow" /> is <c>true</c>, the specified
/// location is made the default location for future saves
/// using <c>SaveDatabase</c>.
/// </summary>
/// <param name="ioConnection">New location to serialize the database to.</param>
/// <param name="bIsPrimaryNow">If <c>true</c>, the new location is made the
/// standard location for the database. If <c>false</c>, a copy of the currently
/// opened database is saved to the specified location, but it isn't
/// made the default location (i.e. no lock files will be moved for
/// example).</param>
/// <param name="slLogger">Logger that recieves status information.</param>
public void SaveAs(IOConnectionInfo ioConnection, bool bIsPrimaryNow,
IStatusLogger slLogger)
{
Debug.Assert(ioConnection != null);
if(ioConnection == null) throw new ArgumentNullException("ioConnection");
IOConnectionInfo ioCurrent = m_ioSource; // Remember current
m_ioSource = ioConnection;
byte[] pbHashCopy = m_pbHashOfFileOnDisk;
try { this.Save(slLogger); }
catch(Exception)
{
m_ioSource = ioCurrent; // Restore
m_pbHashOfFileOnDisk = pbHashCopy;
m_pbHashOfLastIO = null;
throw;
}
if(!bIsPrimaryNow)
{
m_ioSource = ioCurrent; // Restore
m_pbHashOfFileOnDisk = pbHashCopy;
}
}
/// <summary>
/// Closes the currently opened database. No confirmation message is shown

View File

@@ -360,5 +360,12 @@ namespace KeePassLib.Serialization
m_ioCredProtMode = IOCredProtMode.None;
}
}
public bool IsSameFileAs(IOConnectionInfo other)
{
if (other == null)
return false;
return Path == other.Path && UserName == other.UserName;
}
}
}

View File

@@ -581,7 +581,7 @@ namespace KeePassLib.Serialization
return vEntries; */
PwDatabase pd = new PwDatabase();
pd.New(new IOConnectionInfo(), new CompositeKey());
pd.New(new IOConnectionInfo(), new CompositeKey(), "");
KdbxFile f = new KdbxFile(pd);
f.Load(msData, KdbxFormat.PlainXml, null);

View File

@@ -1048,7 +1048,7 @@ namespace KeePassLib.Serialization
return true; */
PwDatabase pd = new PwDatabase();
pd.New(new IOConnectionInfo(), new CompositeKey());
pd.New(new IOConnectionInfo(), new CompositeKey(), "");
PwGroup pg = pd.RootGroup;
if (pg == null) { Debug.Assert(false); return false; }

View File

@@ -23,6 +23,7 @@ using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Security;
using System.Text;
using System.Xml;
@@ -126,8 +127,8 @@ namespace KeePassLib.Serialization
/// </summary>
private const uint FileVersion32 = 0x00040000;
internal const uint FileVersion32_4 = 0x00040000; // First of 4.x series
internal const uint FileVersion32_3 = 0x00030001; // Old format 3.1
public const uint FileVersion32_4 = 0x00040000; // First of 4.x series
public const uint FileVersion32_3 = 0x00030001; // Old format 3.1
private const uint FileVersionCriticalMask = 0xFFFF0000;
@@ -373,13 +374,19 @@ namespace KeePassLib.Serialization
if(m_uForceVersion != 0) return m_uForceVersion;
// See also KeePassKdb2x3.Export (KDBX 3.1 export module)
uint minVersionForKeys = m_pwDatabase.MasterKey.UserKeys.Select(key => key.GetMinKdbxVersion()).Max();
uint minRequiredVersion = Math.Max(minVersionForKeys, m_uFileVersion); //don't save a version lower than what we read
AesKdf kdfAes = new AesKdf();
if(!kdfAes.Uuid.Equals(m_pwDatabase.KdfParameters.KdfUuid))
return FileVersion32;
return Math.Max(FileVersion32, minRequiredVersion);
if(m_pwDatabase.PublicCustomData.Count > 0)
return FileVersion32;
return Math.Max(FileVersion32, minRequiredVersion);
bool bCustomData = false;
GroupHandler gh = delegate(PwGroup pg)
@@ -396,9 +403,10 @@ namespace KeePassLib.Serialization
};
gh(m_pwDatabase.RootGroup);
m_pwDatabase.RootGroup.TraverseTree(TraversalMethod.PreOrder, gh, eh);
if(bCustomData) return FileVersion32;
if(bCustomData)
return Math.Max(FileVersion32, minRequiredVersion);
return FileVersion32_3; // KDBX 3.1 is sufficient
return Math.Max(FileVersion32_3, minRequiredVersion); ; // KDBX 3.1 is sufficient
}
private void ComputeKeys(out byte[] pbCipherKey, int cbCipherKey,
@@ -413,12 +421,15 @@ namespace KeePassLib.Serialization
Debug.Assert(m_pbMasterSeed.Length == 32);
if(m_pbMasterSeed.Length != 32)
throw new FormatException(KLRes.MasterSeedLengthInvalid);
Array.Copy(m_pbMasterSeed, 0, pbCmp, 0, 32);
Debug.Assert(m_pwDatabase != null);
Debug.Assert(m_pwDatabase.MasterKey != null);
ProtectedBinary pbinUser = m_pwDatabase.MasterKey.GenerateKey32(
m_pwDatabase.KdfParameters);
ProtectedBinary pbinUser = m_pwDatabase.MasterKey.GenerateKey32(m_pwDatabase.KdfParameters,
m_pbMasterSeed);
Array.Copy(m_pbMasterSeed, 0, pbCmp, 0, 32);
Debug.Assert(pbinUser != null);
if(pbinUser == null)
throw new SecurityException(KLRes.InvalidCompositeKey);

View File

@@ -26,10 +26,10 @@ namespace KeePassLib.Serialization
/// <summary>
/// Determines whether the database pointed to by the specified ioc should be (de)serialised in default (xml) or protocol buffers format.
/// </summary>
public static KdbxFormat GetFormatToUse(IOConnectionInfo ioc)
public static KdbxFormat GetFormatToUse(string fileExt)
{
// If the filename ends in .kdbp, use ProtocolBuffers format.
return UrlUtil.GetExtension(UrlUtil.GetFileName(ioc.Path)).Equals(KdbpFile.FileNameExtension, StringComparison.OrdinalIgnoreCase) ? KdbxFormat.ProtocolBuffers : KdbxFormat.Default;
return fileExt.Equals(KdbpFile.FileNameExtension, StringComparison.OrdinalIgnoreCase) ? KdbxFormat.ProtocolBuffers : KdbxFormat.Default;
}
public static void WriteDocument(PwDatabase database, Stream stream, byte[] protectedStreamKey, byte[] hashOfHeader)

View File

@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using keepass2android.Io;
using KeePassLib;
using KeePassLib.Interfaces;
using KeePassLib.Utility;
namespace keepass2android
{
public class ElementAndDatabaseId
{
private const char Separator = '+';
public ElementAndDatabaseId(Database db, IStructureItem element)
{
DatabaseId = db.IocAsHexString();
ElementIdString = element.Uuid.ToHexString();
}
public ElementAndDatabaseId(string fullId)
{
string[] parts = fullId.Split(Separator);
if (parts.Length != 2)
throw new Exception("Invalid full id " + fullId);
DatabaseId = parts[0];
ElementIdString = parts[1];
}
public string DatabaseId { get; set; }
public string ElementIdString { get; set; }
public PwUuid ElementId { get { return new PwUuid(MemUtil.HexStringToByteArray(ElementIdString));} }
public string FullId
{
get { return DatabaseId + Separator + ElementIdString; }
}
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using Android.App;
@@ -9,6 +10,7 @@ using KeePassLib;
using KeePassLib.Keys;
using KeePassLib.Serialization;
using keepass2android.Io;
using KeePassLib.Interfaces;
#if !NoNet
using Keepass2android.Javafilestorage;
#endif
@@ -34,30 +36,40 @@ namespace keepass2android
public interface IKp2aApp : ICertificateValidationHandler
{
/// <summary>
/// Locks the currently open database, quicklocking if available (unless false is passed for allowQuickUnlock)
/// Locks all currently open databases, quicklocking if available (unless false is passed for allowQuickUnlock)
/// </summary>
void LockDatabase(bool allowQuickUnlock = true);
void Lock(bool allowQuickUnlock);
/// <summary>
/// Loads the specified data as the currently open database, as unlocked.
/// </summary>
void LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, CompositeKey compKey,
ProgressDialogStatusLogger statusLogger, IDatabaseFormat databaseFormat);
Database LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, CompositeKey compKey, ProgressDialogStatusLogger statusLogger, IDatabaseFormat databaseFormat, bool makeCurrent);
HashSet<PwGroup> DirtyGroups { get; }
void MarkAllGroupsAsDirty();
/// <summary>
/// Returns the current database
/// </summary>
Database GetDb();
Database CurrentDb { get; }
IEnumerable<Database> OpenDatabases { get; }
void CloseDatabase(Database db);
Database FindDatabaseForElement(IStructureItem element);
/// <summary>
/// Tell the app that the file from ioc was opened with keyfile.
/// </summary>
void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile);
void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile, bool updateTimestamp, string displayName = "");
/// <summary>
/// Creates a new database and returns it
/// </summary>
Database CreateNewDatabase();
Database CreateNewDatabase(bool makeCurrent);
/// <summary>
/// Returns the user-displayable string identified by stringKey
@@ -76,7 +88,8 @@ namespace keepass2android
EventHandler<DialogClickEventArgs> yesHandler,
EventHandler<DialogClickEventArgs> noHandler,
EventHandler<DialogClickEventArgs> cancelHandler,
Context ctx);
Context ctx,
string messageSuffix = "");
/// <summary>
/// Asks the user the question "messageKey" with the options Yes/No/Cancel, but the yes/no strings can be selected freely, calls the handler corresponding to the answer.
@@ -86,7 +99,8 @@ namespace keepass2android
EventHandler<DialogClickEventArgs> yesHandler,
EventHandler<DialogClickEventArgs> noHandler,
EventHandler<DialogClickEventArgs> cancelHandler,
Context ctx);
Context ctx,
string messageSuffix = "");
/// <summary>
/// Returns a Handler object which can run tasks on the UI thread
@@ -111,6 +125,10 @@ namespace keepass2android
bool CheckForDuplicateUuids { get; }
#if !NoNet
ICertificateErrorHandler CertificateErrorHandler { get; }
#endif
}
}

View File

@@ -2,11 +2,16 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using Android;
using Android.Content;
using Android.Database;
using Android.OS;
using Android.Provider;
using Java.IO;
using KeePassLib.Serialization;
using KeePassLib.Utility;
using Console = System.Console;
namespace keepass2android.Io
{
@@ -28,6 +33,11 @@ namespace keepass2android.Io
get { yield return "content"; }
}
public bool UserShouldBackup
{
get { return true; }
}
public void Delete(IOConnectionInfo ioc)
{
throw new NotImplementedException();
@@ -44,9 +54,22 @@ namespace keepass2android.Io
}
public Stream OpenFileForRead(IOConnectionInfo ioc)
{
try
{
return _ctx.ContentResolver.OpenInputStream(Android.Net.Uri.Parse(ioc.Path));
}
catch (Exception e)
{
if (e.Message.Contains("requires that you obtain access using ACTION_OPEN_DOCUMENT"))
{
//looks like permission was revoked.
throw new DocumentAccessRevokedException();
}
throw;
}
}
public IWriteTransaction OpenWriteTransaction(IOConnectionInfo ioc, bool useFileTransaction)
{
@@ -55,7 +78,13 @@ namespace keepass2android.Io
public string GetFilenameWithoutPathAndExt(IOConnectionInfo ioc)
{
return "";
return UrlUtil.StripExtension(
UrlUtil.GetFileName(ioc.Path));
}
public string GetFileExtension(IOConnectionInfo ioc)
{
return UrlUtil.GetExtension(ioc.Path);
}
public bool RequiresCredentials(IOConnectionInfo ioc)
@@ -183,8 +212,7 @@ namespace keepass2android.Io
public IOConnectionInfo GetParentPath(IOConnectionInfo ioc)
{
//TODO: required for OTP Aux file retrieval
throw new NotImplementedException();
return IoUtil.GetParentPath(ioc);
}
public IOConnectionInfo GetFilePath(IOConnectionInfo folderPath, string filename)
@@ -261,6 +289,25 @@ namespace keepass2android.Io
}
public class DocumentAccessRevokedException : Exception
{
public DocumentAccessRevokedException()
{
}
public DocumentAccessRevokedException(string message) : base(message)
{
}
public DocumentAccessRevokedException(string message, Exception innerException) : base(message, innerException)
{
}
protected DocumentAccessRevokedException(SerializationInfo info, StreamingContext context) : base(info, context)
{
}
}
class AndroidContentWriteTransaction : IWriteTransaction
{
private readonly string _path;
@@ -286,11 +333,15 @@ namespace keepass2android.Io
public void CommitWrite()
{
using (Stream outputStream = _ctx.ContentResolver.OpenOutputStream(Android.Net.Uri.Parse(_path)))
ParcelFileDescriptor fileDescriptor = _ctx.ContentResolver.OpenFileDescriptor(Android.Net.Uri.Parse(_path), "w");
using (var outputStream = new FileOutputStream(fileDescriptor.FileDescriptor))
{
byte[] data = _memoryStream.ToArray();
outputStream.Write(data, 0, data.Length);
outputStream.Close();
}
fileDescriptor.Close();
}

View File

@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Security;
@@ -10,10 +11,11 @@ using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.OS;
using Android.Preferences;
using Java.IO;
using Android.Support.V4;
using KeePassLib.Serialization;
using KeePassLib.Utility;
using File = System.IO.File;
using FileNotFoundException = System.IO.FileNotFoundException;
using IOException = System.IO.IOException;
@@ -59,6 +61,11 @@ namespace keepass2android.Io
public abstract IEnumerable<string> SupportedProtocols { get; }
public bool UserShouldBackup
{
get { return true; }
}
public void Delete(IOConnectionInfo ioc)
{
//todo check if directory
@@ -194,6 +201,11 @@ namespace keepass2android.Io
}
public string GetFileExtension(IOConnectionInfo ioc)
{
return UrlUtil.GetExtension(ioc.Path);
}
public bool RequiresCredentials(IOConnectionInfo ioc)
{
return (!ioc.IsLocalFile()) && (ioc.CredSaveMode != IOCredSaveMode.SaveCred);
@@ -245,6 +257,7 @@ namespace keepass2android.Io
if (ioc.IsLocalFile())
{
bool requiresPermission = !(ioc.Path.StartsWith(activity.Activity.FilesDir.CanonicalPath)
|| ioc.Path.StartsWith(IoUtil.GetInternalDirectory(activity.Activity).CanonicalPath)
|| ioc.Path.StartsWith(IoUtil.GetInternalDirectory(activity.Activity).CanonicalPath));
var extDirectory = activity.Activity.GetExternalFilesDir(null);
@@ -253,8 +266,12 @@ namespace keepass2android.Io
if (requiresPermission && (Build.VERSION.SdkInt >= BuildVersionCodes.M))
{
if (activity.Activity.CheckSelfPermission(Manifest.Permission.WriteExternalStorage) ==
if ((activity.Activity.CheckSelfPermission(Manifest.Permission.WriteExternalStorage) ==
Permission.Denied)
||
(activity.Activity.CheckSelfPermission(Manifest.Permission.ReadExternalStorage) ==
Permission.Denied))
{
activity.StartFileUsageProcess(ioc, requestCode, alwaysReturnSuccess);
return;
@@ -274,7 +291,7 @@ namespace keepass2android.Io
public void OnCreate(IFileStorageSetupActivity fileStorageSetupActivity, Bundle savedInstanceState)
{
((Activity)fileStorageSetupActivity).RequestPermissions(new[] { Manifest.Permission.WriteExternalStorage }, 0);
Android.Support.V4.App.ActivityCompat.RequestPermissions(((Activity)fileStorageSetupActivity), new[] { Manifest.Permission.WriteExternalStorage, Manifest.Permission.ReadExternalStorage }, 0);
}
public void OnResume(IFileStorageSetupActivity activity)
@@ -367,6 +384,13 @@ namespace keepass2android.Io
{
if (ioc.IsLocalFile())
{
if (IsLocalBackup(ioc))
{
if (reason != null)
reason.Result = UiStringKey.ReadOnlyReason_LocalBackup;
return true;
}
if (IsLocalFileFlaggedReadOnly(ioc))
{
if (reason != null)
@@ -388,6 +412,21 @@ namespace keepass2android.Io
return false;
}
private readonly Dictionary<string, bool> _isLocalBackupCache = new Dictionary<string, bool>();
public bool IsLocalBackup(IOConnectionInfo ioc)
{
if (!ioc.IsLocalFile())
return false;
bool result;
if (_isLocalBackupCache.TryGetValue(ioc.Path, out result))
return result;
result = (PreferenceManager.GetDefaultSharedPreferences(Application.Context)
.GetBoolean(IoUtil.GetIocPrefKey(ioc, "is_local_backup"), false));
_isLocalBackupCache[ioc.Path] = result;
return result;
}
private bool IsLocalFileFlaggedReadOnly(IOConnectionInfo ioc)
{
//see http://stackoverflow.com/a/33292700/292233
@@ -412,7 +451,7 @@ namespace keepass2android.Io
public void OnRequestPermissionsResult(IFileStorageSetupActivity fileStorageSetupActivity, int requestCode,
string[] permissions, Permission[] grantResults)
{
fileStorageSetupActivity.State.PutBoolean(PermissionGrantedKey, grantResults[0] == Permission.Granted);
fileStorageSetupActivity.State.PutBoolean(PermissionGrantedKey, grantResults.All(res => res == Permission.Granted));
}
}

View File

@@ -65,25 +65,36 @@ namespace keepass2android.Io
protected readonly OfflineSwitchableFileStorage _cachedStorage;
private readonly ICacheSupervisor _cacheSupervisor;
private readonly string _streamCacheDir;
private readonly string _legacyCacheDir;
private readonly string _cacheDir;
public CachingFileStorage(IFileStorage cachedStorage, string cacheDir, ICacheSupervisor cacheSupervisor)
public CachingFileStorage(IFileStorage cachedStorage, Context cacheDirContext, ICacheSupervisor cacheSupervisor)
{
_cachedStorage = new OfflineSwitchableFileStorage(cachedStorage);
_cacheSupervisor = cacheSupervisor;
_streamCacheDir = cacheDir + Java.IO.File.Separator + "OfflineCache" + Java.IO.File.Separator;
if (!Directory.Exists(_streamCacheDir))
Directory.CreateDirectory(_streamCacheDir);
_legacyCacheDir = cacheDirContext.CacheDir.Path + Java.IO.File.Separator + "OfflineCache" + Java.IO.File.Separator;
if (!Directory.Exists(_legacyCacheDir))
Directory.CreateDirectory(_legacyCacheDir);
_cacheDir = IoUtil.GetInternalDirectory(cacheDirContext).Path + Java.IO.File.Separator + "OfflineCache" + Java.IO.File.Separator;
if (!Directory.Exists(_cacheDir))
Directory.CreateDirectory(_cacheDir);
}
public void ClearCache()
{
IoUtil.DeleteDir(new Java.IO.File(_streamCacheDir), true);
IoUtil.DeleteDir(new Java.IO.File(_legacyCacheDir), true);
IoUtil.DeleteDir(new Java.IO.File(_cacheDir), true);
}
public IEnumerable<string> SupportedProtocols { get { return _cachedStorage.SupportedProtocols; } }
public bool UserShouldBackup
{
get { return _cachedStorage.UserShouldBackup; }
}
public void DeleteFile(IOConnectionInfo ioc)
{
if (IsCached(ioc))
@@ -100,7 +111,11 @@ namespace keepass2android.Io
{
SHA256Managed sha256 = new SHA256Managed();
string iocAsHexString = MemUtil.ByteArrayToHexString(sha256.ComputeHash(Encoding.Unicode.GetBytes(ioc.Path.ToCharArray())))+".cache";
return _streamCacheDir + iocAsHexString;
if (File.Exists(_legacyCacheDir + iocAsHexString))
return _legacyCacheDir + iocAsHexString;
return _cacheDir + iocAsHexString;
}
public bool IsCached(IOConnectionInfo ioc)
@@ -163,7 +178,9 @@ namespace keepass2android.Io
if (!IsCached(ioc))
throw;
#if DEBUG
Kp2aLog.Log("couldn't open from remote " + ioc.Path);
#endif
Kp2aLog.Log(ex.ToString());
_cacheSupervisor.CouldntOpenFromRemote(ioc, ex);
@@ -340,57 +357,7 @@ namespace keepass2android.Io
private class CachedWriteTransaction: IWriteTransaction
{
private class CachedWriteMemoryStream : MemoryStream
{
private readonly IOConnectionInfo ioc;
private readonly CachingFileStorage _cachingFileStorage;
private readonly bool _useFileTransaction;
private bool _closed;
public CachedWriteMemoryStream(IOConnectionInfo ioc, CachingFileStorage cachingFileStorage, bool useFileTransaction)
{
this.ioc = ioc;
_cachingFileStorage = cachingFileStorage;
_useFileTransaction = useFileTransaction;
}
public override void Close()
{
if (_closed) return;
//write file to cache:
//(note: this might overwrite local changes. It's assumed that a sync operation or check was performed before
string hash;
using (var hashingStream = new HashingStreamEx(File.Create(_cachingFileStorage.CachedFilePath(ioc)), true, new SHA256Managed()))
{
Position = 0;
CopyTo(hashingStream);
hashingStream.Close();
hash = MemUtil.ByteArrayToHexString(hashingStream.Hash);
}
File.WriteAllText(_cachingFileStorage.VersionFilePath(ioc), hash);
//update file on remote. This might overwrite changes there as well, see above.
Position = 0;
if (_cachingFileStorage.IsCached(ioc))
{
//if the file already is in the cache, it's ok if writing to remote fails.
_cachingFileStorage.TryUpdateRemoteFile(this, ioc, _useFileTransaction, hash);
}
else
{
//if not, we don't accept a failure (e.g. invalid credentials would always remain a problem)
_cachingFileStorage.UpdateRemoteFile(this, ioc, _useFileTransaction, hash);
}
base.Close();
_closed = true;
}
}
private readonly IOConnectionInfo _ioc;
private readonly bool _useFileTransaction;
@@ -424,14 +391,45 @@ namespace keepass2android.Io
public Stream OpenFile()
{
_memoryStream = new CachedWriteMemoryStream(_ioc, _cachingFileStorage, _useFileTransaction);
_memoryStream = new MemoryStream();
return _memoryStream;
}
public void CommitWrite()
{
//the transaction is committed in the stream's Close
_committed = true;
_memoryStream.Close();
//write file to cache:
//(note: this might overwrite local changes. It's assumed that a sync operation or check was performed before
byte[] output = _memoryStream.ToArray();
string hash;
using (var hashingStream = new HashingStreamEx(File.Create(_cachingFileStorage.CachedFilePath(_ioc)), true, new SHA256Managed()))
{
hashingStream.Write(output, 0, output.Length);
hashingStream.Close();
hash = MemUtil.ByteArrayToHexString(hashingStream.Hash);
}
File.WriteAllText(_cachingFileStorage.VersionFilePath(_ioc), hash);
//create another memory stream which is open for reading again
MemoryStream openMemStream = new MemoryStream(output);
//update file on remote. This might overwrite changes there as well, see above.
if (_cachingFileStorage.IsCached(_ioc))
{
//if the file already is in the cache, it's ok if writing to remote fails.
_cachingFileStorage.TryUpdateRemoteFile(openMemStream, _ioc, _useFileTransaction, hash);
}
else
{
//if not, we don't accept a failure (e.g. invalid credentials would always remain a problem)
_cachingFileStorage.UpdateRemoteFile(openMemStream, _ioc, _useFileTransaction, hash);
}
openMemStream.Dispose();
}
}
@@ -450,6 +448,11 @@ namespace keepass2android.Io
return _cachedStorage.GetFilenameWithoutPathAndExt(ioc);
}
public string GetFileExtension(IOConnectionInfo ioc)
{
return _cachedStorage.GetFileExtension(ioc);
}
public bool RequiresCredentials(IOConnectionInfo ioc)
{
return _cachedStorage.RequiresCredentials(ioc);

View File

@@ -11,6 +11,10 @@ namespace keepass2android.Io
}
public override bool UserShouldBackup
{
get { return false; }
}
}
public partial class DropboxAppFolderFileStorage: JavaFileStorage
@@ -20,6 +24,10 @@ namespace keepass2android.Io
{
}
public override bool UserShouldBackup
{
get { return false; }
}
}

View File

@@ -2,12 +2,12 @@ namespace keepass2android.Io
{
public partial class DropboxFileStorage
{
private const string AppKey = "";
private const string AppSecret = "";
private const string AppKey = "dummy";
private const string AppSecret = "dummy";
}
public partial class DropboxAppFolderFileStorage
{
private const string AppKey = "";
private const string AppSecret = "";
private const string AppKey = "dummy";
private const string AppSecret = "dummy";
}
}

View File

@@ -22,6 +22,10 @@ namespace keepass2android.Io
}
public override bool UserShouldBackup
{
get { return false; }
}
}
}
#endif

View File

@@ -48,6 +48,11 @@ namespace keepass2android.Io
/// </summary>
IEnumerable<string> SupportedProtocols { get; }
/// <summary>
/// returns true if users should backup files on this file storage (if the file is important). Can be false for cloud providers with built-in versioning or backups.
/// </summary>
bool UserShouldBackup { get; }
/// <summary>
/// Deletes the given file or directory.
/// </summary>
@@ -84,6 +89,8 @@ namespace keepass2android.Io
string GetFilenameWithoutPathAndExt(IOConnectionInfo ioc);
string GetFileExtension(IOConnectionInfo ioc);
/// <summary>
/// Returns true if the the given ioc must be filled with username/password
/// </summary>

View File

@@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using Android.Content;
using Android.OS;
using Java.IO;
using KeePassLib.Serialization;
using KeePassLib.Utility;
namespace keepass2android.Io
{
@@ -125,5 +127,55 @@ namespace keepass2android.Io
return ctx.FilesDir;
}
//creates a local ioc where the sourceIoc can be stored to
public static IOConnectionInfo GetInternalIoc(IOConnectionInfo sourceIoc, Context ctx, IKp2aApp app)
{
Java.IO.File internalDirectory = IoUtil.GetInternalDirectory(ctx);
var filestorage = app.GetFileStorage(sourceIoc);
string targetPath = filestorage.GetFilenameWithoutPathAndExt(sourceIoc);
targetPath = targetPath.Trim("|\\?*<\":>+[]/'".ToCharArray());
if (targetPath == "")
targetPath = "internal";
if (new File(internalDirectory, targetPath).Exists())
{
int c = 1;
var ext = UrlUtil.GetExtension(targetPath);
var filenameWithoutExt = UrlUtil.StripExtension(targetPath);
do
{
c++;
targetPath = filenameWithoutExt + c;
if (!String.IsNullOrEmpty(ext))
targetPath += "." + ext;
} while (new File(internalDirectory, targetPath).Exists());
}
return IOConnectionInfo.FromPath(new File(internalDirectory, targetPath).CanonicalPath);
}
public static IOConnectionInfo ImportFileToInternalDirectory(IOConnectionInfo sourceIoc, Context ctx, IKp2aApp app)
{
var targetIoc = GetInternalIoc(sourceIoc, ctx, app);
IoUtil.Copy(targetIoc, sourceIoc, app);
return targetIoc;
}
public static string GetIocPrefKey(IOConnectionInfo ioc, string suffix)
{
var iocAsHexString = IocAsHexString(ioc);
return "kp2a_ioc_key_" + iocAsHexString + suffix;
}
public static string IocAsHexString(IOConnectionInfo ioc)
{
SHA256Managed sha256 = new SHA256Managed();
string iocAsHexString =
MemUtil.ByteArrayToHexString(sha256.ComputeHash(Encoding.Unicode.GetBytes(ioc.Path.ToCharArray())));
return iocAsHexString;
}
}
}

View File

@@ -22,6 +22,7 @@ namespace keepass2android.Io
protected string Protocol { get { return _jfs.ProtocolId; } }
public virtual IEnumerable<string> SupportedProtocols { get { yield return Protocol; } }
public abstract bool UserShouldBackup { get; }
private readonly IJavaFileStorage _jfs;
@@ -176,6 +177,11 @@ namespace keepass2android.Io
_jfs.GetFilename(IocToPath(ioc)));
}
public string GetFileExtension(IOConnectionInfo ioc)
{
return UrlUtil.GetExtension(ioc.Path);
}
public bool RequiresCredentials(IOConnectionInfo ioc)
{
return false;
@@ -232,7 +238,6 @@ namespace keepass2android.Io
public FileDescription GetFileDescription(IOConnectionInfo ioc)
{
Kp2aLog.Log("GetFileDescription "+ioc.Path);
try
{
return ConvertToFileDescription(Jfs.GetFileEntry(IocToPath(ioc)));
@@ -301,7 +306,9 @@ namespace keepass2android.Io
public void OnResume(IFileStorageSetupActivity activity)
{
#if DEBUG
Kp2aLog.Log("JFS/OnResume Ioc.Path=" +activity.Ioc.Path+". Path="+((IJavaFileStorageFileStorageSetupActivity)activity).Path);
#endif
_jfs.OnResume(((IJavaFileStorageFileStorageSetupActivity) activity));
}

View File

@@ -3,12 +3,12 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.FtpClient;
using System.Reflection;
using System.Threading;
using Android.Content;
using Android.OS;
using Android.Preferences;
using FluentFTP;
using KeePassLib;
using KeePassLib.Serialization;
using KeePassLib.Utility;
@@ -17,73 +17,6 @@ namespace keepass2android.Io
{
public class NetFtpFileStorage: IFileStorage
{
class RetryConnectFtpClient : FtpClient
{
protected override FtpClient CloneConnection()
{
RetryConnectFtpClient conn = new RetryConnectFtpClient();
conn.m_isClone = true;
foreach (PropertyInfo prop in GetType().GetProperties())
{
object[] attributes = prop.GetCustomAttributes(typeof(FtpControlConnectionClone), true);
if (attributes != null && attributes.Length > 0)
{
prop.SetValue(conn, prop.GetValue(this, null), null);
}
}
// always accept certficate no matter what because if code execution ever
// gets here it means the certificate on the control connection object being
// cloned was already accepted.
conn.ValidateCertificate += new FtpSslValidation(
delegate(FtpClient obj, FtpSslValidationEventArgs e)
{
e.Accept = true;
});
return conn;
}
private static T DoInRetryLoop<T>(Func<T> func)
{
double timeout = 30.0;
double timePerRequest = 1.0;
var startTime = DateTime.Now;
while (true)
{
var attemptStartTime = DateTime.Now;
try
{
return func();
}
catch (System.Net.Sockets.SocketException e)
{
if ((e.ErrorCode != 10061) || (DateTime.Now > startTime.AddSeconds(timeout)))
{
throw;
}
double secondsSinceAttemptStart = (DateTime.Now - attemptStartTime).TotalSeconds;
if (secondsSinceAttemptStart < timePerRequest)
{
Thread.Sleep(TimeSpan.FromSeconds(timePerRequest - secondsSinceAttemptStart));
}
}
}
}
public override void Connect()
{
DoInRetryLoop(() =>
{
base.Connect();
return true;
}
);
}
}
public struct ConnectionSettings
{
public FtpEncryptionMode EncryptionMode {get; set; }
@@ -149,7 +82,6 @@ namespace keepass2android.Io
{
_app = app;
traceStream = new MemoryStream();
FtpTrace.AddListener(new System.Diagnostics.TextWriterTraceListener(traceStream));
}
@@ -161,6 +93,11 @@ namespace keepass2android.Io
}
}
public bool UserShouldBackup
{
get { return true; }
}
public void Delete(IOConnectionInfo ioc)
{
try
@@ -169,7 +106,7 @@ namespace keepass2android.Io
{
string localPath = IocToUri(ioc).PathAndQuery;
if (client.DirectoryExists(localPath))
client.DeleteDirectory(localPath, true);
client.DeleteDirectory(localPath);
else
client.DeleteFile(localPath);
}
@@ -200,7 +137,8 @@ namespace keepass2android.Io
{
var settings = ConnectionSettings.FromIoc(ioc);
FtpClient client = new RetryConnectFtpClient();
FtpClient client = new FtpClient();
client.RetryAttempts = 3;
if ((settings.Username.Length > 0) || (settings.Password.Length > 0))
client.Credentials = new NetworkCredential(settings.Username, settings.Password);
else
@@ -226,7 +164,7 @@ namespace keepass2android.Io
internal Uri IocToUri(IOConnectionInfo ioc)
public static Uri IocToUri(IOConnectionInfo ioc)
{
if (!string.IsNullOrEmpty(ioc.UserName))
{
@@ -309,6 +247,11 @@ namespace keepass2android.Io
UrlUtil.GetFileName(ioc.Path));
}
public string GetFileExtension(IOConnectionInfo ioc)
{
return UrlUtil.GetExtension(ioc.Path);
}
public bool RequiresCredentials(IOConnectionInfo ioc)
{
return false;
@@ -570,7 +513,7 @@ namespace keepass2android.Io
{
_client = _fileStorage.GetClient(_ioc, false);
_stream = _client.OpenWrite(_fileStorage.IocToUri(_iocTemp).PathAndQuery);
_stream = _client.OpenWrite(NetFtpFileStorage.IocToUri(_iocTemp).PathAndQuery);
return _stream;
}
catch (FtpCommandException ex)
@@ -590,8 +533,8 @@ namespace keepass2android.Io
//make sure target file does not exist:
//try
{
if (_client.FileExists(_fileStorage.IocToUri(_ioc).PathAndQuery))
_client.DeleteFile(_fileStorage.IocToUri(_ioc).PathAndQuery);
if (_client.FileExists(NetFtpFileStorage.IocToUri(_ioc).PathAndQuery))
_client.DeleteFile(NetFtpFileStorage.IocToUri(_ioc).PathAndQuery);
}
//catch (FtpCommandException)
@@ -599,8 +542,8 @@ namespace keepass2android.Io
//TODO get a new clien? might be stale
}
_client.Rename(_fileStorage.IocToUri(_iocTemp).PathAndQuery,
_fileStorage.IocToUri(_ioc).PathAndQuery);
_client.Rename(NetFtpFileStorage.IocToUri(_iocTemp).PathAndQuery,
NetFtpFileStorage.IocToUri(_ioc).PathAndQuery);
}
catch (FtpCommandException ex)

View File

@@ -32,6 +32,11 @@ namespace keepass2android.Io
get { return _baseStorage.SupportedProtocols; }
}
public bool UserShouldBackup
{
get { return _baseStorage.UserShouldBackup; }
}
public void Delete(IOConnectionInfo ioc)
{
_baseStorage.Delete(ioc);
@@ -73,6 +78,11 @@ namespace keepass2android.Io
return _baseStorage.GetFilenameWithoutPathAndExt(ioc);
}
public string GetFileExtension(IOConnectionInfo ioc)
{
return _baseStorage.GetFileExtension(ioc);
}
public bool RequiresCredentials(IOConnectionInfo ioc)
{
return _baseStorage.RequiresCredentials(ioc);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
namespace keepass2android.Io.ItemLocation
{
public abstract class OneDrive2PrefixContainer
{
public abstract string Onedrive2ProtocolId { get; }
public string Onedrive2Prefix { get { return Onedrive2ProtocolId + "://"; } }
}
//for permissions including all my files and all shared files
public class OneDrive2FullPrefixContainer : OneDrive2PrefixContainer
{
public override string Onedrive2ProtocolId { get { return "onedrive2_full"; }}
}
//for permissions including all my files
public class OneDrive2MyFilesPrefixContainer : OneDrive2PrefixContainer
{
public override string Onedrive2ProtocolId { get { return "onedrive2_myfiles"; } }
}
//for permissions to app folder only
public class OneDrive2AppFolderPrefixContainer : OneDrive2PrefixContainer
{
public override string Onedrive2ProtocolId { get { return "onedrive2_appfolder"; } }
}
}

View File

@@ -33,6 +33,11 @@ namespace keepass2android.Io
yield return "onedrive";
}
}
public override bool UserShouldBackup
{
get { return false; }
}
}
}
#endif

View File

@@ -0,0 +1,23 @@
using Android.Content;
#if !EXCLUDE_JAVAFILESTORAGE
namespace keepass2android.Io
{
public partial class PCloudFileStorage: JavaFileStorage
{
private const string ClientId = "CkRWTQXY6Lm";
public PCloudFileStorage(Context ctx, IKp2aApp app) :
base(new Keepass2android.Javafilestorage.PCloudFileStorage(ctx, ClientId), app)
{
}
public override bool UserShouldBackup
{
get { return false; }
}
}
}
#endif

View File

@@ -5,12 +5,16 @@ namespace keepass2android.Io
{
public class SftpFileStorage: JavaFileStorage
{
public SftpFileStorage(IKp2aApp app) :
base(new Keepass2android.Javafilestorage.SftpStorage(), app)
public SftpFileStorage(Context ctx, IKp2aApp app) :
base(new Keepass2android.Javafilestorage.SftpStorage(ctx.ApplicationContext), app)
{
}
public override bool UserShouldBackup
{
get { return true; }
}
}

View File

@@ -30,15 +30,24 @@ namespace keepass2android.Io
yield return "http";
yield return "https";
yield return "owncloud";
yield return "nextcloud";
}
}
public static string Owncloud2Webdav(string owncloudUrl)
public override bool UserShouldBackup
{
string owncloudPrefix = "owncloud://";
if (owncloudUrl.StartsWith(owncloudPrefix))
get { return true; }
}
public static string owncloudPrefix = "owncloud://";
public static string nextcloudPrefix = "nextcloud://";
public static string Owncloud2Webdav(string owncloudUrl, string prefix)
{
owncloudUrl = owncloudUrl.Substring(owncloudPrefix.Length);
if (owncloudUrl.StartsWith(prefix))
{
owncloudUrl = owncloudUrl.Substring(prefix.Length);
}
if (!owncloudUrl.Contains("://"))
owncloudUrl = "https://" + owncloudUrl;

View File

@@ -12,9 +12,10 @@
<FileAlignment>512</FileAlignment>
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
<NuGetPackageImportStamp>06ffb71c</NuGetPackageImportStamp>
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -60,7 +61,7 @@
<Compile Include="database\CheckDatabaseForChanges.cs" />
<Compile Include="database\edit\AddTemplateEntries.cs" />
<Compile Include="database\edit\CopyEntry.cs" />
<Compile Include="database\edit\DeleteMultipleItems.cs" />
<Compile Include="database\edit\DeleteMultipleItemsFromOneDatabase.cs" />
<Compile Include="database\edit\EditGroup.cs" />
<Compile Include="database\edit\MoveElements.cs" />
<Compile Include="database\KdbDatabaseFormat.cs" />
@@ -72,6 +73,7 @@
<Compile Include="DataExchange\Formats\KeePassKdb2x.cs" />
<Compile Include="DataExchange\Formats\KeePassXml2x.cs" />
<Compile Include="DataExchange\PwExportInfo.cs" />
<Compile Include="ElementAndDatabaseId.cs" />
<Compile Include="Io\AndroidContentStorage.cs" />
<Compile Include="Io\BuiltInFileStorage.cs" />
<Compile Include="Io\CachingFileStorage.cs" />
@@ -86,6 +88,9 @@
<Compile Include="Io\JavaFileStorage.cs" />
<Compile Include="Io\NetFtpFileStorage.cs" />
<Compile Include="Io\OfflineSwitchableFileStorage.cs" />
<Compile Include="Io\OneDrive2FileStorage.cs" />
<Compile Include="Io\OneDrive2PrefixContainer.cs" />
<Compile Include="Io\PCloudFileStorage.cs" />
<Compile Include="Io\SftpFileStorage.cs" />
<Compile Include="Io\OneDriveFileStorage.cs" />
<Compile Include="Io\WebDavFileStorage.cs" />
@@ -97,15 +102,15 @@
<Compile Include="database\edit\ActionOnFinish.cs" />
<Compile Include="database\edit\AddEntry.cs" />
<Compile Include="database\edit\AddGroup.cs" />
<Compile Include="database\edit\CreateDb.cs" />
<Compile Include="database\edit\CreateDB.cs" />
<Compile Include="database\edit\DeleteEntry.cs" />
<Compile Include="database\edit\DeleteGroup.cs" />
<Compile Include="database\edit\DeleteRunnable.cs" />
<Compile Include="database\edit\FileOnFinish.cs" />
<Compile Include="database\edit\LoadDb.cs" />
<Compile Include="database\edit\LoadDB.cs" />
<Compile Include="database\edit\OnFinish.cs" />
<Compile Include="database\edit\RunnableOnFinish.cs" />
<Compile Include="database\edit\SaveDb.cs" />
<Compile Include="database\edit\SaveDB.cs" />
<Compile Include="database\edit\SetPassword.cs" />
<Compile Include="database\edit\UpdateEntry.cs" />
<Compile Include="IKp2aApp.cs" />
@@ -136,10 +141,6 @@
<Project>{70D3844A-D9FA-4A64-B205-A84C6A822196}</Project>
<Name>KP2AKdbLibraryBinding</Name>
</ProjectReference>
<ProjectReference Include="..\netftpandroid\System.Net.FtpClient\System.Net.FtpClient.Android.csproj">
<Project>{146FD497-BA03-4740-B6C5-5C84EA8FCDE2}</Project>
<Name>System.Net.FtpClient.Android</Name>
</ProjectReference>
<ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj">
<Project>{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}</Project>
<Name>TwofishCipher</Name>
@@ -148,6 +149,125 @@
<ItemGroup>
<Folder Include="Resources\" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="FluentFTP">
<Version>27.1.3</Version>
</PackageReference>
<PackageReference Include="Microsoft.Graph">
<Version>1.17.0</Version>
</PackageReference>
<PackageReference Include="Microsoft.Graph.Auth">
<Version>1.0.0-preview.1</Version>
</PackageReference>
<PackageReference Include="Microsoft.Identity.Client">
<Version>4.4.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Arch.Core.Common">
<Version>1.1.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Arch.Core.Runtime">
<Version>1.1.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.Common">
<Version>1.1.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.LiveData">
<Version>1.1.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.LiveData.Core">
<Version>1.1.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.Runtime">
<Version>1.1.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.ViewModel">
<Version>1.1.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Annotations">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.AsyncLayoutInflater">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Collections">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Compat">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.CoordinaterLayout">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Core.UI">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Core.Utils">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.CursorAdapter">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.CustomTabs">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.CustomView">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.DocumentFile">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.DrawerLayout">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Fragment">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Interpolator">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Loader">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.LocalBroadcastManager">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Media.Compat">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Print">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.SlidingPaneLayout">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.SwipeRefreshLayout">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.v13">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.v4">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.VersionedParcelable">
<Version>28.0.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.ViewPager">
<Version>28.0.0.1</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View File

@@ -30,6 +30,10 @@ namespace keepass2android
readonly IKp2aApp _app;
private readonly Handler _handler;
private string _message = "";
private string _submessage;
public String SubMessage => _submessage;
public String Message => _message;
public ProgressDialogStatusLogger() {
@@ -48,6 +52,7 @@ namespace keepass2android
public void UpdateMessage (String message)
{
Kp2aLog.Log("status message: " + message);
_message = message;
if ( _app!= null && _progressDialog != null && _handler != null ) {
_handler.Post(() => {_progressDialog.SetMessage(message); } );
@@ -56,6 +61,8 @@ namespace keepass2android
public void UpdateSubMessage(String submessage)
{
Kp2aLog.Log("status submessage: " + submessage);
_submessage = submessage;
if (_app != null && _progressDialog != null && _handler != null)
{
_handler.Post(() =>

View File

@@ -25,31 +25,100 @@ namespace keepass2android
/// <summary>
/// Class to run a task while a progress dialog is shown
/// </summary>
public class ProgressTask {
public class ProgressTask
{
//for handling Activity recreation situations, we need access to the currently active task. It must hold that there is no more than one active task.
private static ProgressTask _currentTask = null;
public static void SetNewActiveActivity(Activity activeActivity)
{
if (_currentTask != null)
{
_currentTask.ActiveActivity = activeActivity;
}
}
public static void RemoveActiveActivity(Activity activity)
{
if ((_currentTask != null) && (_currentTask._activeActivity == activity))
_currentTask.ActiveActivity = null;
}
public Activity ActiveActivity
{
get { return _activeActivity; }
private set
{
_activeActivity = value;
if (_task != null)
_task.ActiveActivity = _activeActivity;
if (_activeActivity != null)
{
SetupProgressDialog(_app);
_progressDialog.Show();
}
}
}
private readonly Handler _handler;
private readonly RunnableOnFinish _task;
private readonly IProgressDialog _progressDialog;
private IProgressDialog _progressDialog;
private readonly IKp2aApp _app;
private Thread _thread;
private Activity _activeActivity;
private ProgressDialogStatusLogger _progressDialogStatusLogger;
public ProgressTask(IKp2aApp app, Context ctx, RunnableOnFinish task) {
public ProgressTask(IKp2aApp app, Activity activity, RunnableOnFinish task)
{
_activeActivity = activity;
_task = task;
_handler = app.UiThreadHandler;
_app = app;
// Show process dialog
_progressDialog = app.CreateProgressDialog(ctx);
_progressDialog.SetTitle(_app.GetResourceString(UiStringKey.progress_title));
_progressDialog.SetMessage("Initializing...");
SetupProgressDialog(app);
// Set code to run when this is finished
_task.OnFinishToRun = new AfterTask(task.OnFinishToRun, _handler, _progressDialog);
_task.SetStatusLogger(new ProgressDialogStatusLogger(_app, _handler, _progressDialog));
_task.OnFinishToRun = new AfterTask(activity, task.OnFinishToRun, _handler, this);
_task.SetStatusLogger(_progressDialogStatusLogger);
}
public void Run() {
private void SetupProgressDialog(IKp2aApp app)
{
string currentMessage = "Initializing...";
string currentSubmessage = "";
if (_progressDialogStatusLogger != null)
{
currentMessage = _progressDialogStatusLogger.Message;
currentSubmessage = _progressDialogStatusLogger.SubMessage;
}
if (_progressDialog != null)
{
var pd = _progressDialog;
app.UiThreadHandler.Post(() =>
{
pd.Dismiss();
});
}
// Show process dialog
_progressDialog = app.CreateProgressDialog(_activeActivity);
_progressDialog.SetTitle(_app.GetResourceString(UiStringKey.progress_title));
_progressDialogStatusLogger = new ProgressDialogStatusLogger(_app, _handler, _progressDialog);
_progressDialogStatusLogger.UpdateMessage(currentMessage);
_progressDialogStatusLogger.UpdateSubMessage(currentSubmessage);
}
public void Run(bool allowOverwriteCurrentTask = false)
{
if ((!allowOverwriteCurrentTask) && (_currentTask != null))
throw new Exception("Cannot start another ProgressTask while ProgressTask is already running! " + _task.GetType().Name + "/" + _currentTask._task.GetType().Name);
_currentTask = this;
// Show process dialog
_progressDialog.Show();
@@ -57,7 +126,6 @@ namespace keepass2android
// Start Thread to Run task
_thread = new Thread(_task.Run);
_thread.Start();
}
public void JoinWorkerThread()
@@ -66,11 +134,11 @@ namespace keepass2android
}
private class AfterTask : OnFinish {
readonly IProgressDialog _progressDialog;
readonly ProgressTask _progressTask;
public AfterTask (OnFinish finish, Handler handler, IProgressDialog pd): base(finish, handler)
public AfterTask (Activity activity, OnFinish finish, Handler handler, ProgressTask pt): base(activity, finish, handler)
{
_progressDialog = pd;
_progressTask = pt;
}
public override void Run() {
@@ -79,17 +147,22 @@ namespace keepass2android
if (Handler != null) //can be null in tests
{
// Remove the progress dialog
Handler.Post(delegate { _progressDialog.Dismiss(); });
Handler.Post(delegate
{
_progressTask._progressDialog.Dismiss();
});
}
else
{
_progressDialog.Dismiss();
_progressTask._progressDialog.Dismiss();
}
_currentTask = null;
}
}
}
}

View File

@@ -23,7 +23,7 @@ namespace keepass2android
/// <summary>
/// EqualityComparer implementation to compare PwGroups based on their Id
/// </summary>
class PwGroupEqualityFromIdComparer: IEqualityComparer<PwGroup>
public class PwGroupEqualityFromIdComparer: IEqualityComparer<PwGroup>
{
#region IEqualityComparer implementation
public bool Equals (PwGroup x, PwGroup y)

File diff suppressed because it is too large Load Diff

View File

@@ -103,7 +103,7 @@ namespace keepass2android
PwGroup pgResults = new PwGroup(true, true, strGroupName, PwIcon.EMailSearch) {IsVirtual = true};
if (String.IsNullOrWhiteSpace(host))
return pgResults;
foreach (PwEntry entry in database.Entries.Values)
foreach (PwEntry entry in database.EntriesById.Values)
{
string otherUrl = entry.Strings.ReadSafe(PwDefs.UrlField);
otherUrl = SprEngine.Compile(otherUrl, new SprContext(entry, database.KpDatabase, SprCompileFlags.References));

View File

@@ -63,6 +63,7 @@ namespace keepass2android
AskDeletePermanentlyItems,
AskDeletePermanentlyItemsNoRecycle,
InOfflineMode,
DocumentAccessRevoked,
DuplicateTitle,
TemplateTitle_IdCard,
TemplateField_IdCard_Name,
@@ -85,9 +86,8 @@ namespace keepass2android
ReadOnlyReason_PreKitKat,
ReadOnlyReason_ReadOnlyFlag,
ReadOnlyReason_ReadOnlyKitKat,
ActivateAutoFillService_title,
ActivateAutoFillService_message,
ActivateAutoFillService_btnKeyboard,
ActivateAutoFillService_btnAutoFill
ReadOnlyReason_LocalBackup,
Ok,
cancel
}
}

View File

@@ -25,9 +25,7 @@ using KeePass.Util.Spr;
using KeePassLib;
using KeePassLib.Collections;
using KeePassLib.Cryptography;
using KeePassLib.Delegates;
using KeePassLib.Security;
using KeePassLib.Utility;
namespace KeePass.Util
@@ -89,39 +87,6 @@ namespace KeePass.Util
return str;
}
*/
private static string ReplaceHmacOtpPlaceholder(string strText,
SprContext ctx)
{
PwEntry pe = ctx.Entry;
PwDatabase pd = ctx.Database;
if((pe == null) || (pd == null)) return strText;
string str = strText;
const string strHmacOtpPlh = @"{HMACOTP}";
if(str.IndexOf(strHmacOtpPlh, StrUtil.CaseIgnoreCmp) >= 0)
{
const string strKeyField = "HmacOtp-Secret";
const string strCounterField = "HmacOtp-Counter";
byte[] pbSecret = StrUtil.Utf8.GetBytes(pe.Strings.ReadSafe(
strKeyField));
string strCounter = pe.Strings.ReadSafe(strCounterField);
ulong uCounter;
ulong.TryParse(strCounter, out uCounter);
string strValue = HmacOtp.Generate(pbSecret, uCounter, 6, false, -1);
pe.Strings.Set(strCounterField, new ProtectedString(false,
(uCounter + 1).ToString()));
pd.Modified = true;
str = StrUtil.ReplaceCaseInsensitive(str, strHmacOtpPlh, strValue);
}
return str;
}
public static bool EntriesHaveSameParent(PwObjectList<PwEntry> v)
{

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Identity.Client" publicKeyToken="0a613f4dd989e8ae" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -18,8 +18,8 @@ namespace keepass2android
private readonly IKp2aApp _app;
public CheckDatabaseForChanges(Context context, IKp2aApp app, OnFinish finish)
: base(finish)
public CheckDatabaseForChanges(Activity context, IKp2aApp app, OnFinish finish)
: base(context, finish)
{
_context = context;
_app = app;
@@ -29,7 +29,7 @@ namespace keepass2android
{
try
{
IOConnectionInfo ioc = _app.GetDb().Ioc;
IOConnectionInfo ioc = _app.CurrentDb.Ioc;
IFileStorage fileStorage = _app.GetFileStorage(ioc);
if (fileStorage is CachingFileStorage)
{
@@ -49,7 +49,7 @@ namespace keepass2android
hashingRemoteStream.CopyTo(remoteData);
hashingRemoteStream.Close();
if (!MemUtil.ArraysEqual(_app.GetDb().KpDatabase.HashOfFileOnDisk, hashingRemoteStream.Hash))
if (!MemUtil.ArraysEqual(_app.CurrentDb.KpDatabase.HashOfFileOnDisk, hashingRemoteStream.Hash))
{
_app.TriggerReload(_context);
Finish(true);

Some files were not shown because too many files have changed in this diff Show More