Compare commits
132 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e77c3ce1d3 | ||
![]() |
b0e6de8a47 | ||
![]() |
2a3138ca76 | ||
![]() |
5a408ccd4a | ||
![]() |
07d3a4ef84 | ||
![]() |
eb50ed1bc3 | ||
![]() |
580fd60fd9 | ||
![]() |
c884f93ac3 | ||
![]() |
a57ff299b5 | ||
![]() |
159a90d7e3 | ||
![]() |
b8fe4639ba | ||
![]() |
6a80021bd1 | ||
![]() |
d2dc75d556 | ||
![]() |
2aa93b56cb | ||
![]() |
11037daca9 | ||
![]() |
93932e78f9 | ||
![]() |
7ad476d543 | ||
![]() |
9b487f94de | ||
![]() |
68e34eb3bd | ||
![]() |
88f95b96b0 | ||
![]() |
e22a69caf5 | ||
![]() |
bb339504d4 | ||
![]() |
2666c5248b | ||
![]() |
c0df8e9a04 | ||
![]() |
bead854cf1 | ||
![]() |
48da600598 | ||
![]() |
3b0b349f4c | ||
![]() |
294e6f5edf | ||
![]() |
02fb27f48e | ||
![]() |
e57a02408e | ||
![]() |
5325381f2f | ||
![]() |
4176b06578 | ||
![]() |
7014f5d9f1 | ||
![]() |
afbef4272c | ||
![]() |
45df2d6605 | ||
![]() |
1c2369c419 | ||
![]() |
81211ecb74 | ||
![]() |
17a06adfd9 | ||
![]() |
da565e43bb | ||
![]() |
641497a8d3 | ||
![]() |
7cecadcf82 | ||
![]() |
cd776754b5 | ||
![]() |
9d2d920fda | ||
![]() |
cb30d3a79e | ||
![]() |
3842cbffc4 | ||
![]() |
1cf7cbc144 | ||
![]() |
73e8291cb0 | ||
![]() |
1e89c8dac1 | ||
![]() |
81c4477453 | ||
![]() |
adb0865aa7 | ||
![]() |
d65ae7767a | ||
![]() |
d83474d6f6 | ||
![]() |
5cffec4724 | ||
![]() |
8af2f51eae | ||
![]() |
39579b0183 | ||
![]() |
caff2e25e2 | ||
![]() |
0fee6e2298 | ||
![]() |
feaad1300a | ||
![]() |
1a59129d88 | ||
![]() |
1c7fa8d41d | ||
![]() |
1480657857 | ||
![]() |
c8ab5836eb | ||
![]() |
2bb7a2065a | ||
![]() |
0564a103e1 | ||
![]() |
cd0954badb | ||
![]() |
2e5a1a9820 | ||
![]() |
8acc6dec1b | ||
![]() |
3f0bbbb19e | ||
![]() |
16e9077cd4 | ||
![]() |
53bb822013 | ||
![]() |
37c1da8962 | ||
![]() |
75535c8edd | ||
![]() |
36c7e9eecc | ||
![]() |
fee5103bdd | ||
![]() |
4a5a77de21 | ||
![]() |
1b5f25f10b | ||
![]() |
4cf67734a1 | ||
![]() |
b6778fb331 | ||
![]() |
2ae50c2fbd | ||
![]() |
f33ad9e403 | ||
![]() |
4f7d58d8b4 | ||
![]() |
6582faa8d7 | ||
![]() |
387f584b2c | ||
![]() |
b320c0fd5a | ||
![]() |
30294a0195 | ||
![]() |
252778bf7c | ||
![]() |
80bd3c2043 | ||
![]() |
eb968ba676 | ||
![]() |
1abe428559 | ||
![]() |
9854a2ad33 | ||
![]() |
54ebe89d44 | ||
![]() |
2565a04c83 | ||
![]() |
bb11bdf423 | ||
![]() |
d6983265ce | ||
![]() |
0034999256 | ||
![]() |
10004bd67e | ||
![]() |
a5c35b8fa9 | ||
![]() |
c0d7626ec3 | ||
![]() |
1fbd310371 | ||
![]() |
5f0b5919a4 | ||
![]() |
ae41b34f13 | ||
![]() |
4ecb7ef8a6 | ||
![]() |
bfef18bfe7 | ||
![]() |
0448aca24e | ||
![]() |
af67e29ea3 | ||
![]() |
f12ee10b9d | ||
![]() |
aea585a93d | ||
![]() |
a5b30b557a | ||
![]() |
a52ebcf576 | ||
![]() |
62fcfdfc95 | ||
![]() |
a69e5d9c5f | ||
![]() |
72ffaf39f4 | ||
![]() |
08734d733f | ||
![]() |
e3ddad2c64 | ||
![]() |
693cf3608a | ||
![]() |
ad9f49f66e | ||
![]() |
6910414ba3 | ||
![]() |
f8bb39384b | ||
![]() |
8e6146dd46 | ||
![]() |
50254c497a | ||
![]() |
66a7469cd5 | ||
![]() |
70cf30b8a3 | ||
![]() |
1549d71af0 | ||
![]() |
69c95a4073 | ||
![]() |
6c79c1539a | ||
![]() |
0b7d45d3b9 | ||
![]() |
edd1b683dd | ||
![]() |
eccd8e3810 | ||
![]() |
8855541ee1 | ||
![]() |
fd300add4f | ||
![]() |
3161e04752 | ||
![]() |
ca1a51749a |
@@ -99,7 +99,7 @@ It's time for action! As soon as possible, select Settings - Database - Export a
|
||||
Please see [Keepass2Android Apk](Keepass2Android-Apk.md) for more information.
|
||||
|
||||
## I get a message "File is trashed" when reading or writing a file on Google Drive
|
||||
This happens because ocaml-fuse (I guess you are on Linux and use that) moves files to trash and then creates a new one instead of correctly updating the file on Google Drive (each file has a unique ID which Keepass2Android uses). Fortunately, this was fixed: https://github.com/astrada/google-drive-ocamlfuse/issues/494After activating this option, please select "Change database" in KP2A, tap ,"Open file" and browse to the file on Google Drive again. After that, the message should no longer pop up.
|
||||
This happens because ocaml-fuse (I guess you are on Linux and use that) moves files to trash and then creates a new one instead of correctly updating the file on Google Drive (each file has a unique ID which Keepass2Android uses). Fortunately, this was fixed: https://github.com/astrada/google-drive-ocamlfuse/issues/494. After activating this option, please select "Change database" in KP2A, tap ,"Open file" and browse to the file on Google Drive again. After that, the message should no longer pop up.
|
||||
|
||||
## I get a message "The name must not be empty: null" when opening from Google Drive
|
||||
Please follow these steps:
|
||||
|
@@ -83,7 +83,10 @@
|
||||
</XamarinComponentReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj" />
|
||||
<ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj">
|
||||
<Project>{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}</Project>
|
||||
<Name>PCloudBindings</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\msa-auth-0.8.6\classes-msa-auth.jar" />
|
||||
|
114
src/KeePass.sln
114
src/KeePass.sln
@@ -5,8 +5,6 @@ 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
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "keepass2android", "keepass2android\keepass2android.csproj", "{A6CF8A86-37C1-4197-80FE-519DE2C842F5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kp2aKeyboardBinding", "Kp2aKeyboardBinding\Kp2aKeyboardBinding.csproj", "{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kp2aBusinessLogic", "Kp2aBusinessLogic\Kp2aBusinessLogic.csproj", "{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}"
|
||||
@@ -23,10 +21,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginSdkBinding", "PluginS
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZlibAndroid", "ZlibAndroid\ZlibAndroid.csproj", "{6C29A7E7-E016-4FC1-B1A0-DEE26AC711BB}"
|
||||
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}") = "keepass2android-app", "keepass2android\keepass2android-app.csproj", "{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SamsungPass", "SamsungPass\Xamarin.SamsungPass\SamsungPass\SamsungPass.csproj", "{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -65,34 +65,6 @@ Global
|
||||
{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
|
||||
{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Win32.Build.0 = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Win32.Build.0 = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|x64.Build.0 = Release|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Any CPU.Deploy.0 = ReleaseNoNet|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Mixed Platforms.Deploy.0 = ReleaseNoNet|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
@@ -253,24 +225,6 @@ Global
|
||||
{6C29A7E7-E016-4FC1-B1A0-DEE26AC711BB}.ReleaseNoNet|Win32.Build.0 = Release|Any CPU
|
||||
{6C29A7E7-E016-4FC1-B1A0-DEE26AC711BB}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
|
||||
{6C29A7E7-E016-4FC1-B1A0-DEE26AC711BB}.ReleaseNoNet|x64.Build.0 = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{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
|
||||
@@ -295,6 +249,66 @@ Global
|
||||
{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
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Win32.Build.0 = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|Win32.Deploy.0 = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Debug|x64.Deploy.0 = Debug|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Win32.Build.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|Win32.Deploy.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|x64.Build.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.Release|x64.Deploy.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Mixed Platforms.Deploy.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Win32.Build.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|Win32.Deploy.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|x64.Build.0 = Release|Any CPU
|
||||
{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}.ReleaseNoNet|x64.Deploy.0 = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|Win32.Build.0 = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|Win32.Build.0 = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{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|Win32.Build.0 = ReleaseNoNet|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
|
||||
{3A4B8E88-FA9B-4663-BCDA-21C12E3AF98A}.ReleaseNoNet|x64.Build.0 = ReleaseNoNet|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@@ -119,7 +119,7 @@ namespace keepass2android
|
||||
/// </summary>
|
||||
IFileStorage GetFileStorage(IOConnectionInfo iocInfo, bool allowCache);
|
||||
|
||||
void TriggerReload(Context context);
|
||||
void TriggerReload(Context context, Action<bool> actionOnResult /*if not null, called when the user selected yes (true) or no (false)*/);
|
||||
|
||||
|
||||
bool CheckForDuplicateUuids { get; }
|
||||
|
@@ -12,7 +12,7 @@
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v11.0</TargetFrameworkVersion>
|
||||
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
@@ -34,7 +34,7 @@
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<JavaMaximumHeapSize>4G</JavaMaximumHeapSize>
|
||||
<JavaMaximumHeapSize>4G</JavaMaximumHeapSize>
|
||||
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseNoNet|AnyCPU'">
|
||||
|
@@ -51,7 +51,7 @@ namespace keepass2android
|
||||
|
||||
if (!MemUtil.ArraysEqual(_app.CurrentDb.KpDatabase.HashOfFileOnDisk, hashingRemoteStream.Hash))
|
||||
{
|
||||
_app.TriggerReload(_context);
|
||||
_app.TriggerReload(_context, null);
|
||||
Finish(true);
|
||||
}
|
||||
else
|
||||
|
@@ -85,8 +85,7 @@ namespace keepass2android
|
||||
{
|
||||
//only the remote file was modified -> reload database.
|
||||
//note: it's best to lock the database and do a complete reload here (also better for UI consistency in case something goes wrong etc.)
|
||||
_app.TriggerReload(_context);
|
||||
Finish(true);
|
||||
_app.TriggerReload(_context, (bool result) => Finish(result));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@@ -192,7 +192,30 @@ public class DropboxV2Storage extends JavaFileStorageBase
|
||||
{
|
||||
ByteArrayInputStream bis = new ByteArrayInputStream(data);
|
||||
try {
|
||||
path = removeProtocol(path);
|
||||
|
||||
//try to get the file id from the path and use that to create the uploadBuilder. This should preserve the case of the path.
|
||||
String id = null;
|
||||
|
||||
try {
|
||||
id = getFileEntry(path).userData;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
//ignore. file might not exist yet.
|
||||
}
|
||||
|
||||
if (id != null && id.length() > 0)
|
||||
{
|
||||
path = id;
|
||||
}
|
||||
else
|
||||
{
|
||||
path = removeProtocol(path);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
dbxClient.files().uploadBuilder(path).withMode(WriteMode.OVERWRITE).uploadAndFinish(bis);
|
||||
|
||||
@@ -416,6 +439,7 @@ public class DropboxV2Storage extends JavaFileStorageBase
|
||||
fileEntry.sizeInBytes = fm.getSize();
|
||||
fileEntry.isDirectory = false;
|
||||
fileEntry.lastModifiedTime = fm.getServerModified().getTime();
|
||||
fileEntry.userData = fm.getId();
|
||||
}
|
||||
else if (e instanceof DeletedMetadata)
|
||||
{
|
||||
@@ -428,6 +452,7 @@ public class DropboxV2Storage extends JavaFileStorageBase
|
||||
|
||||
fileEntry.path = getProtocolId()+"://"+ e.getPathLower();
|
||||
fileEntry.displayName = e.getName();
|
||||
|
||||
//Log.d("JFS","fileEntry="+fileEntry);
|
||||
//Log.d("JFS","Ok. Dir="+fileEntry.isDirectory);
|
||||
return fileEntry;
|
||||
|
@@ -275,19 +275,14 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
|
||||
@Override
|
||||
public String getCurrentFileVersionFast(String path) {
|
||||
|
||||
try {
|
||||
GDrivePath gdrivePath = new GDrivePath(path);
|
||||
return getFileForPath(gdrivePath, getDriveService(gdrivePath.getAccount())).getMd5Checksum();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream openFileForRead(String path) throws Exception {
|
||||
|
||||
throwAppBlocked();
|
||||
|
||||
logDebug("openFileForRead...");
|
||||
GDrivePath gdrivePath = new GDrivePath(path);
|
||||
Drive driveService = getDriveService(gdrivePath.getAccount());
|
||||
@@ -305,9 +300,14 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void throwAppBlocked() throws Exception {
|
||||
throw new Exception("Built-in Google Drive access is currently blocked by Google. Please use Open file > System file picker > Google Drive.");
|
||||
}
|
||||
|
||||
|
||||
private File getFileForPath(GDrivePath path, Drive driveService)
|
||||
throws IOException, InvalidPathException {
|
||||
throws Exception {
|
||||
throwAppBlocked();
|
||||
logDebug("getFileForPath... ");
|
||||
try
|
||||
{
|
||||
@@ -334,7 +334,8 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
|
||||
}
|
||||
|
||||
private InputStream getFileContent(File driveFile, Drive driveService) throws IOException {
|
||||
private InputStream getFileContent(File driveFile, Drive driveService) throws Exception {
|
||||
throwAppBlocked();
|
||||
if (driveFile.getDownloadUrl() != null && driveFile.getDownloadUrl().length() > 0) {
|
||||
|
||||
GenericUrl downloadUrl = new GenericUrl(driveFile.getDownloadUrl());
|
||||
@@ -352,6 +353,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
@Override
|
||||
public void uploadFile(String path, byte[] data, boolean writeTransactional)
|
||||
throws Exception {
|
||||
throwAppBlocked();
|
||||
logDebug("upload file...");
|
||||
try
|
||||
{
|
||||
@@ -373,6 +375,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
|
||||
@Override
|
||||
public String createFolder(String parentPath, String newDirName) throws Exception {
|
||||
throwAppBlocked();
|
||||
File body = new File();
|
||||
body.setTitle(newDirName);
|
||||
body.setMimeType(FOLDER_MIME_TYPE);
|
||||
@@ -398,6 +401,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
|
||||
@Override
|
||||
public String createFilePath(String parentPath, String newFileName) throws Exception {
|
||||
throwAppBlocked();
|
||||
File body = new File();
|
||||
body.setTitle(newFileName);
|
||||
GDrivePath parentGdrivePath = new GDrivePath(parentPath);
|
||||
@@ -420,6 +424,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
|
||||
@Override
|
||||
public List<FileEntry> listFiles(String parentPath) throws Exception {
|
||||
throwAppBlocked();
|
||||
GDrivePath gdrivePath = new GDrivePath(parentPath);
|
||||
String parentId = gdrivePath.getGDriveId();
|
||||
|
||||
@@ -507,7 +512,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
|
||||
@Override
|
||||
public FileEntry getFileEntry(String filename) throws Exception {
|
||||
|
||||
throwAppBlocked();
|
||||
try
|
||||
{
|
||||
logDebug("getFileEntry "+filename);
|
||||
@@ -527,7 +532,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
|
||||
@Override
|
||||
public void delete(String path) throws Exception {
|
||||
|
||||
throwAppBlocked();
|
||||
GDrivePath gdrivePath = new GDrivePath(path);
|
||||
Drive driveService = getDriveService(gdrivePath.getAccount());
|
||||
try
|
||||
@@ -698,7 +703,8 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
}
|
||||
|
||||
private void initializeAccount(final Context appContext,
|
||||
final String accountName) throws IOException {
|
||||
final String accountName) throws Exception {
|
||||
throwAppBlocked();
|
||||
logDebug("Init account for " + accountName);
|
||||
if (!mAccountData.containsKey(accountName))
|
||||
{
|
||||
@@ -749,6 +755,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
|
||||
|
||||
public void prepareFileUsage(Context appContext, String path) throws UserInteractionRequiredException, Throwable
|
||||
{
|
||||
throwAppBlocked();
|
||||
try
|
||||
{
|
||||
logDebug("prepareFileUsage " + path + "...");
|
||||
|
@@ -48,6 +48,8 @@ public class FileEntry {
|
||||
public boolean canWrite;
|
||||
public long sizeInBytes;
|
||||
public String displayName;
|
||||
|
||||
public String userData; //can be set by the storage implementation
|
||||
|
||||
public FileEntry()
|
||||
{
|
||||
|
@@ -376,7 +376,7 @@ public class SftpStorage extends JavaFileStorageBase {
|
||||
if (file.exists())
|
||||
return public_key_filename;
|
||||
int type = KeyPair.RSA;
|
||||
KeyPair kpair = KeyPair.genKeyPair(jsch, type, 2048);
|
||||
KeyPair kpair = KeyPair.genKeyPair(jsch, type, 4096);
|
||||
kpair.writePrivateKey(key_filename);
|
||||
|
||||
kpair.writePublicKey(public_key_filename, "generated by Keepass2Android");
|
||||
|
@@ -557,7 +557,7 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
|
||||
}
|
||||
});*/
|
||||
|
||||
storageToTest = new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "3s86datjhkihwyc", !simulateRestart);
|
||||
storageToTest = new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
||||
//storageToTest = new DropboxFileStorage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
||||
//storageToTest = new DropboxAppFolderFileStorage(ctx,"ax0268uydp1ya57", "3s86datjhkihwyc", true);
|
||||
|
||||
|
@@ -55,7 +55,7 @@
|
||||
<!-- Description for text prediction -->
|
||||
<string name="prediction_landscape_summary">横表示では入力候補を表示しない</string>
|
||||
<!-- Option to enable auto capitalization of sentences -->
|
||||
<string name="auto_cap">自動大文字変換</string>
|
||||
<string name="auto_cap">文頭の自動大文字化</string>
|
||||
<!-- Description for auto cap -->
|
||||
<string name="auto_cap_summary">英字入力で文頭文字を大文字にする</string>
|
||||
<!-- Option to enable auto punctuate -->
|
||||
|
@@ -57,7 +57,7 @@
|
||||
<!-- Option to enable auto capitalization of sentences -->
|
||||
<string name="auto_cap">Wstawiaj wielkie litery</string>
|
||||
<!-- Description for auto cap -->
|
||||
<string name="auto_cap_summary">Zamieniaj na wielką pierwszą literę zdania</string>
|
||||
<string name="auto_cap_summary">Zaczynaj zdanie wielką literą</string>
|
||||
<!-- Option to enable auto punctuate -->
|
||||
<string name="auto_punctuate">Automatyczna interpunkcja</string>
|
||||
<!-- Description for auto punctuate -->
|
||||
@@ -106,7 +106,7 @@
|
||||
<!-- Tip to long press on keys -->
|
||||
<string name="tip_long_press">Przytrzymaj klawisz, aby wyświetlić znaki akcentowane (ą, ó itp.)</string>
|
||||
<!-- Tip to dismiss keyboard -->
|
||||
<string name="tip_dismiss">Naciśnij klawisz cofania ↶, aby zamknąć klawiaturę w dowolnym momencie</string>
|
||||
<string name="tip_dismiss">Naciśnij klawisz cofania \u21B6, aby zamknąć klawiaturę w dowolnym momencie</string>
|
||||
<!-- Tip to press ?123 to access numbers and symbols -->
|
||||
<string name="tip_access_symbols">Przejdź do cyfr i symboli</string>
|
||||
<!-- Tip to long press on typed word to add to dictionary -->
|
||||
@@ -116,17 +116,17 @@
|
||||
<!-- Instruction to touch the bubble to start typing -->
|
||||
<string name="touch_to_finish">Dotknij tutaj, aby zamknąć tę podpowiedź i zacząć pisać!</string>
|
||||
<!-- Tutorial tip 1 - The keyboard opens any time you touch a text field -->
|
||||
<string name="tip_to_open_keyboard"><b>\"Klawiatura jest otwierana po każdym dotknięciu pola tekstowego.\"</b></string>
|
||||
<string name="tip_to_open_keyboard"><b>Klawiatura otwiera się po każdym dotknięciu pola tekstowego</b></string>
|
||||
<!-- Tutorial tip 2 - Touch and hold a key to view accents (examples) -->
|
||||
<string name="tip_to_view_accents"><b>\"Dotknij i przytrzymaj klawisz, aby wyświetlić znaki akcentowane\"\n\"(ą, ę, ł, ó itd.).\"</b></string>
|
||||
<string name="tip_to_view_accents"><b>Dotknij i przytrzymaj klawisz, aby wyświetlić znaki akcentowane\n(ą, ę, ł, ó itd.)</b></string>
|
||||
<!-- Tutorial tip 3 - How to switch to number/symbol keyboard -->
|
||||
<string name="tip_to_open_symbols"><b>\"Przełącz na cyfry i symbole, dotykając tego klawisza.\"</b></string>
|
||||
<string name="tip_to_open_symbols"><b>Przełącz na cyfry i symbole dotykając tego klawisza</b></string>
|
||||
<!-- Tutorial tip 4 - How to switch back to alphabet keyboard -->
|
||||
<string name="tip_to_close_symbols"><b>\"Wróć do trybu liter, dotykając ponownie tego klawisza.\"</b></string>
|
||||
<string name="tip_to_close_symbols"><b>Wróć do trybu liter dotykając ponownie tego klawisza</b></string>
|
||||
<!-- Tutorial tip 5 - How to launch keyboard settings -->
|
||||
<string name="tip_to_launch_settings"><b>\"Dotknij i przytrzymaj ten klawisz, aby zmienić ustawienia klawiatury, takie jak autouzupełnianie.\"</b></string>
|
||||
<string name="tip_to_launch_settings"><b>Dotknij i przytrzymaj ten klawisz, aby zmienić ustawienia klawiatury takie jak autouzupełnianie</b></string>
|
||||
<!-- Tutorial tip 6 - Done with the tutorial -->
|
||||
<string name="tip_to_start_typing"><b>\"Wypróbuj!\"</b></string>
|
||||
<string name="tip_to_start_typing"><b>Wypróbuj!</b></string>
|
||||
<!-- Label for soft enter key when it performs GO action. Must be short to fit on key! -->
|
||||
<string name="label_go_key">OK</string>
|
||||
<!-- Label for soft enter key when it performs NEXT action. Must be short to fit on key! -->
|
||||
|
@@ -8,10 +8,11 @@
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
|
@@ -8,10 +8,5 @@
|
||||
android:minSdkVersion="8"
|
||||
android:targetSdkVersion="19" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme" >
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
@@ -57,12 +57,12 @@
|
||||
<string name="afc_yesterday">Wczoraj</string>
|
||||
<plurals name="afc_title_choose_directories">
|
||||
<item quantity="one">Wybierz katalog...</item>
|
||||
<item quantity="few">Wybierz katalog...</item>
|
||||
<item quantity="few">Wybierz katalogi...</item>
|
||||
<item quantity="many">Wybierz katalogi...</item>
|
||||
<item quantity="other">Wybierz katalog...</item>
|
||||
<item quantity="other">Wybierz katalogi...</item>
|
||||
</plurals>
|
||||
<plurals name="afc_title_choose_files">
|
||||
<item quantity="one">Wybierz pliki…</item>
|
||||
<item quantity="one">Wybierz plik…</item>
|
||||
<item quantity="few">Wybierz pliki…</item>
|
||||
<item quantity="many">Wybierz pliki…</item>
|
||||
<item quantity="other">Wybierz pliki…</item>
|
||||
@@ -71,6 +71,6 @@
|
||||
<item quantity="one">Wybierz plik/folder…</item>
|
||||
<item quantity="few">Wybierz pliki/foldery...</item>
|
||||
<item quantity="many">Wybierz pliki/foldery…</item>
|
||||
<item quantity="other">Wybierz plik/folder…</item>
|
||||
<item quantity="other">Wybierz pliki/foldery…</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
@@ -66,16 +66,16 @@ namespace keepass2android
|
||||
public override string GetTitle(string key)
|
||||
{
|
||||
if (key == strVisible)
|
||||
return Application.Context.GetString(Resource.String.Visible_title);
|
||||
return LocaleManager.LocalizedAppContext.GetString(Resource.String.Visible_title);
|
||||
if (key == strEnabled)
|
||||
return Application.Context.GetString(Resource.String.child_db_Enabled_title);
|
||||
return LocaleManager.LocalizedAppContext.GetString(Resource.String.child_db_Enabled_title);
|
||||
if (key == strUiKeyFile)
|
||||
return Application.Context.GetString(Resource.String.keyfile_heading);
|
||||
return LocaleManager.LocalizedAppContext.GetString(Resource.String.keyfile_heading);
|
||||
if (key == strUiDatabaseFile)
|
||||
return Application.Context.GetString(Resource.String.database_file_heading);
|
||||
return LocaleManager.LocalizedAppContext.GetString(Resource.String.database_file_heading);
|
||||
if (key.StartsWith(strUiIfDevice))
|
||||
{
|
||||
return Application.Context.GetString(Resource.String.if_device_text,new Object[]{key.Substring(strUiIfDevice.Length)});
|
||||
return LocaleManager.LocalizedAppContext.GetString(Resource.String.if_device_text,new Object[]{key.Substring(strUiIfDevice.Length)});
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
@@ -27,8 +27,8 @@ namespace keepass2android
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(ctx, Android.Resource.Style.ThemeHoloLightDialog));
|
||||
builder.SetTitle(ctx.GetString(Resource.String.ChangeLog_title));
|
||||
List<string> changeLog = new List<string>{
|
||||
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_09a, "1.09a"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_09b, "1.09b"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_09a, "1.09a"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_08d, "1.08d"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_08c, "1.08c"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_08b, "1.08b"),
|
||||
|
@@ -459,7 +459,7 @@ namespace keepass2android
|
||||
_activity.StartActivityForResult(i, _requestCode);
|
||||
|
||||
#else
|
||||
Toast.MakeText(Application.Context, "File chooser is excluded!", ToastLength.Long).Show();
|
||||
Toast.MakeText(LocaleManager.LocalizedAppContext, "File chooser is excluded!", ToastLength.Long).Show();
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
@@ -77,9 +77,12 @@ namespace keepass2android
|
||||
{
|
||||
_displayedProtocolIds.Remove("file");
|
||||
}
|
||||
|
||||
|
||||
if (context.Intent.GetBooleanExtra(AllowThirdPartyAppGet, false))
|
||||
|
||||
//starting with Android 11, we don't show the Third party app option. Due to restricted permissions,
|
||||
//this no longer works.
|
||||
if ((int)Build.VERSION.SdkInt < 30)
|
||||
if (context.Intent.GetBooleanExtra(AllowThirdPartyAppGet, false))
|
||||
_displayedProtocolIds.Add("androidget");
|
||||
if (context.Intent.GetBooleanExtra(AllowThirdPartyAppSend, false))
|
||||
_displayedProtocolIds.Add("androidsend");
|
||||
|
@@ -28,7 +28,6 @@ using Android.Widget;
|
||||
using KeePassLib;
|
||||
using Android.Preferences;
|
||||
using KeePassLib.Interfaces;
|
||||
using KeePassLib.Serialization;
|
||||
using KeePassLib.Utility;
|
||||
using keepass2android.Io;
|
||||
using keepass2android.database.edit;
|
||||
@@ -42,7 +41,6 @@ using Object = Java.Lang.Object;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
||||
public abstract class GroupBaseActivity : LockCloseActivity
|
||||
{
|
||||
public const String KeyEntry = "entry";
|
||||
@@ -1062,7 +1060,7 @@ namespace keepass2android
|
||||
return true;
|
||||
|
||||
case Resource.Id.menu_sync:
|
||||
Synchronize();
|
||||
new SyncUtil(this).SynchronizeDatabase(() => { });
|
||||
return true;
|
||||
|
||||
case Resource.Id.menu_work_offline:
|
||||
@@ -1073,7 +1071,7 @@ namespace keepass2android
|
||||
case Resource.Id.menu_work_online:
|
||||
App.Kp2a.OfflineMode = App.Kp2a.OfflineModePreference = false;
|
||||
UpdateOfflineModeMenu();
|
||||
Synchronize();
|
||||
new SyncUtil(this).SynchronizeDatabase(() => { });
|
||||
return true;
|
||||
case Resource.Id.menu_open_other_db:
|
||||
AppTask.SetActivityResult(this, KeePass.ExitLoadAnotherDb);
|
||||
@@ -1096,77 +1094,7 @@ namespace keepass2android
|
||||
return base.OnOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
public class SyncOtpAuxFile : RunnableOnFinish
|
||||
{
|
||||
private readonly IOConnectionInfo _ioc;
|
||||
|
||||
public SyncOtpAuxFile(Activity activity, IOConnectionInfo ioc)
|
||||
: base(activity,null)
|
||||
{
|
||||
_ioc = ioc;
|
||||
}
|
||||
|
||||
public override void Run()
|
||||
{
|
||||
StatusLogger.UpdateMessage(UiStringKey.SynchronizingOtpAuxFile);
|
||||
try
|
||||
{
|
||||
//simply open the file. The file storage does a complete sync.
|
||||
using (App.Kp2a.GetOtpAuxFileStorage(_ioc).OpenFileForRead(_ioc))
|
||||
{
|
||||
}
|
||||
|
||||
Finish(true);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
Finish(false, e.Message);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void Synchronize()
|
||||
{
|
||||
var filestorage = App.Kp2a.GetFileStorage(App.Kp2a.CurrentDb.Ioc);
|
||||
RunnableOnFinish task;
|
||||
OnFinish onFinish = new ActionOnFinish(this, (success, message, activity) =>
|
||||
{
|
||||
if (!String.IsNullOrEmpty(message))
|
||||
Toast.MakeText(activity, message, ToastLength.Long).Show();
|
||||
|
||||
// Tell the adapter to refresh it's list
|
||||
BaseAdapter adapter = (BaseAdapter)((GroupBaseActivity)activity)?.ListAdapter;
|
||||
adapter?.NotifyDataSetChanged();
|
||||
|
||||
if (App.Kp2a.CurrentDb.OtpAuxFileIoc != null)
|
||||
{
|
||||
var task2 = new SyncOtpAuxFile(this, App.Kp2a.CurrentDb.OtpAuxFileIoc);
|
||||
new ProgressTask(App.Kp2a, activity, task2).Run(true);
|
||||
}
|
||||
});
|
||||
|
||||
if (filestorage is CachingFileStorage)
|
||||
{
|
||||
|
||||
task = new SynchronizeCachedDatabase(this, App.Kp2a, onFinish);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
task = new CheckDatabaseForChanges(this, App.Kp2a, onFinish);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var progressTask = new ProgressTask(App.Kp2a, this, task);
|
||||
progressTask.Run();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override void OnBackPressed()
|
||||
{
|
||||
@@ -1250,7 +1178,7 @@ namespace keepass2android
|
||||
{
|
||||
Handler.Post(() =>
|
||||
{
|
||||
Toast.MakeText(ActiveActivity ?? Application.Context, "Unrecoverable error: " + Message, ToastLength.Long).Show();
|
||||
Toast.MakeText(ActiveActivity ?? LocaleManager.LocalizedAppContext, "Unrecoverable error: " + Message, ToastLength.Long).Show();
|
||||
});
|
||||
|
||||
App.Kp2a.Lock(false);
|
||||
|
@@ -61,7 +61,7 @@ namespace keepass2android
|
||||
{
|
||||
if (_thisDevice != null)
|
||||
return _thisDevice;
|
||||
String android_id = Settings.Secure.GetString(Application.Context.ContentResolver, Settings.Secure.AndroidId);
|
||||
String android_id = Settings.Secure.GetString(LocaleManager.LocalizedAppContext.ContentResolver, Settings.Secure.AndroidId);
|
||||
|
||||
string deviceName = Build.Manufacturer+" "+Build.Model;
|
||||
_thisDevice = deviceName + " (" + android_id + ")";
|
||||
@@ -315,7 +315,7 @@ namespace keepass2android
|
||||
try { ck.AddUserKey(new KcpKeyFile(strAbs)); }
|
||||
catch (InvalidOperationException)
|
||||
{
|
||||
Toast.MakeText(Application.Context,Resource.String.error_adding_keyfile,ToastLength.Long).Show();
|
||||
Toast.MakeText(LocaleManager.LocalizedAppContext,Resource.String.error_adding_keyfile,ToastLength.Long).Show();
|
||||
return false;
|
||||
}
|
||||
catch (Exception) { throw; }
|
||||
|
@@ -28,6 +28,10 @@ namespace keepass2android
|
||||
|
||||
public abstract class LifecycleAwareActivity : AndroidX.AppCompat.App.AppCompatActivity
|
||||
{
|
||||
protected override void AttachBaseContext(Context baseContext)
|
||||
{
|
||||
base.AttachBaseContext(LocaleManager.setLocale(baseContext));
|
||||
}
|
||||
protected LifecycleAwareActivity (IntPtr javaReference, JniHandleOwnership transfer)
|
||||
: base(javaReference, transfer)
|
||||
{
|
||||
@@ -86,7 +90,9 @@ namespace keepass2android
|
||||
|
||||
protected override void OnCreate(Bundle bundle)
|
||||
{
|
||||
|
||||
base.OnCreate(bundle);
|
||||
|
||||
Kp2aLog.Log(ClassName+".OnCreate" + " " + ID);
|
||||
Kp2aLog.Log(ClassName+":apptask="+Intent.GetStringExtra("KP2A_APP_TASK_TYPE") + " " + ID);
|
||||
}
|
||||
|
@@ -37,7 +37,7 @@ namespace keepass2android
|
||||
};
|
||||
FindViewById<Button>(Resource.Id.disable_secure_screen_check).Click += (sender, args) =>
|
||||
{
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext);
|
||||
prefs.Edit()
|
||||
.PutBoolean("no_secure_display_check", true)
|
||||
.Commit();
|
||||
|
@@ -1,9 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="46" android:versionName="0.9.3-release-3" package="keepass2android.keepass2android_debug" android:installLocation="auto">
|
||||
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="29" />
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionCode="178"
|
||||
android:versionName="1.09b-pre0dbg"
|
||||
package="keepass2android.keepass2android_debug"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="auto">
|
||||
|
||||
<queries>
|
||||
<!-- Specific intents and packages we query for (required since Android 11) -->
|
||||
<package android:name="keepass2android.plugin.keyboardswap2" />
|
||||
<package android:name="keepass2android.AncientIconSet" />
|
||||
<package android:name="keepass2android.plugin.qr" />
|
||||
<package android:name="it.andreacioni.kp2a.plugin.keelink" />
|
||||
<package android:name="com.inputstick.apps.kp2aplugin" />
|
||||
<package android:name="com.dropbox.android" />
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.GET_DOCUMENT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="com.dropbox.android.AUTHENTICATE_V2" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="com.yubichallenge.NFCActivity.CHALLENGE" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="net.pp3345.ykdroid.intent.action.CHALLENGE_RESPONSE" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
|
||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30" />
|
||||
<permission android:description="@string/permission_desc2" android:icon="@drawable/ic_notify_locked" android:label="KP2A entry search" android:name="keepass2android.keepass2android_debug.permission.KP2aInternalSearch" android:protectionLevel="signature" />
|
||||
<permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android_debug.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
||||
<application android:label="keepass2android"
|
||||
<application
|
||||
android:icon="@mipmap/ic_launcher_online"
|
||||
android:roundIcon="@mipmap/ic_launcher_online_round"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
@@ -216,5 +259,6 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
||||
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
||||
<!-- Samsung Pass permission -->
|
||||
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
|
||||
|
||||
<!-- READ_PHONE_STATE seems to come from some library or so, not clear where. We don't want to have it, remove it: -->
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
|
||||
</manifest>
|
||||
|
@@ -1,10 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionCode="173"
|
||||
android:versionName="1.09a-r3"
|
||||
android:versionCode="184"
|
||||
android:versionName="1.09b-r2"
|
||||
package="keepass2android.keepass2android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="auto">
|
||||
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="29" />
|
||||
|
||||
|
||||
<queries>
|
||||
<!-- Specific intents and packages we query for (required since Android 11) -->
|
||||
<package android:name="keepass2android.plugin.keyboardswap2" />
|
||||
<package android:name="keepass2android.AncientIconSet" />
|
||||
<package android:name="keepass2android.plugin.qr" />
|
||||
<package android:name="it.andreacioni.kp2a.plugin.keelink" />
|
||||
<package android:name="com.inputstick.apps.kp2aplugin" />
|
||||
<package android:name="com.dropbox.android" />
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.GET_DOCUMENT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="com.dropbox.android.AUTHENTICATE_V2" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="com.yubichallenge.NFCActivity.CHALLENGE" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="net.pp3345.ykdroid.intent.action.CHALLENGE_RESPONSE" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30" />
|
||||
<permission android:description="@string/permission_desc2" android:icon="@drawable/ic_launcher" android:label="KP2A entry search" android:name="keepass2android.keepass2android.permission.KP2aInternalSearch" android:protectionLevel="signature" />
|
||||
<permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
||||
|
||||
@@ -230,7 +269,9 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
||||
<uses-permission android:name="keepass2android.keepass2android.permission.KP2aInternalSearch" />
|
||||
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
|
||||
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
||||
|
||||
<!-- Samsung Pass permission -->
|
||||
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
|
||||
|
||||
<!-- READ_PHONE_STATE seems to come from some library or so, not clear where. We don't want to have it, remove it: -->
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
|
||||
</manifest>
|
||||
|
@@ -3,8 +3,44 @@
|
||||
android:versionCode="93"
|
||||
android:versionName="1.01-g"
|
||||
package="keepass2android.keepass2android_nonet"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="auto">
|
||||
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="29" />
|
||||
|
||||
|
||||
<queries>
|
||||
<!-- Specific intents and packages we query for (required since Android 11) -->
|
||||
<package android:name="keepass2android.plugin.keyboardswap2" />
|
||||
<package android:name="keepass2android.AncientIconSet" />
|
||||
<package android:name="com.dropbox.android" />
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.GET_DOCUMENT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="com.dropbox.android.AUTHENTICATE_V2" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="com.yubichallenge.NFCActivity.CHALLENGE" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="net.pp3345.ykdroid.intent.action.CHALLENGE_RESPONSE" />
|
||||
</intent>
|
||||
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="30" />
|
||||
<permission android:description="@string/permission_desc2" android:icon="@drawable/ic_launcher" android:label="KP2A entry search" android:name="keepass2android.keepass2android_nonet.permission.KP2aInternalSearch" android:protectionLevel="signature" />
|
||||
<permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android_nonet.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
||||
<application
|
||||
@@ -211,4 +247,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
||||
<uses-permission android:name="keepass2android.keepass2android.permission.KP2aInternalSearch" />
|
||||
<!-- Samsung Pass permission -->
|
||||
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
|
||||
|
||||
<!-- READ_PHONE_STATE seems to come from some library or so, not clear where. We don't want to have it, remove it: -->
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
|
||||
</manifest>
|
||||
|
@@ -78,7 +78,7 @@ namespace keepass2android
|
||||
|
||||
SetSupportActionBar(toolbar);
|
||||
|
||||
var collapsingToolbar = FindViewById<CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar);
|
||||
var collapsingToolbar = FindViewById<Android.Support.Design.Widget.CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar);
|
||||
collapsingToolbar.SetTitle(GetString(Resource.String.QuickUnlock_prefs));
|
||||
|
||||
if (App.Kp2a.GetDbForQuickUnlock().KpDatabase.Name != "")
|
||||
@@ -212,10 +212,8 @@ namespace keepass2android
|
||||
pwd.Text = ExpectedPasswordPart;
|
||||
|
||||
btn.PostDelayed(() =>
|
||||
{
|
||||
|
||||
App.Kp2a.UnlockDatabase();
|
||||
Finish();
|
||||
{
|
||||
UnlockAndSyncAndClose();
|
||||
}, 500);
|
||||
|
||||
|
||||
@@ -327,20 +325,36 @@ namespace keepass2android
|
||||
{
|
||||
var expectedPasswordPart = ExpectedPasswordPart;
|
||||
if (pwd.Text == expectedPasswordPart)
|
||||
{
|
||||
Kp2aLog.Log("QuickUnlock successful!");
|
||||
App.Kp2a.UnlockDatabase();
|
||||
}
|
||||
{
|
||||
UnlockAndSyncAndClose();
|
||||
}
|
||||
else
|
||||
{
|
||||
Kp2aLog.Log("QuickUnlock not successful!");
|
||||
App.Kp2a.Lock(false);
|
||||
Toast.MakeText(this, GetString(Resource.String.QuickUnlock_fail), ToastLength.Long).Show();
|
||||
Finish();
|
||||
}
|
||||
Finish();
|
||||
|
||||
}
|
||||
|
||||
private string ExpectedPasswordPart
|
||||
private void UnlockAndSyncAndClose()
|
||||
{
|
||||
App.Kp2a.UnlockDatabase();
|
||||
|
||||
if (PreferenceManager.GetDefaultSharedPreferences(this)
|
||||
.GetBoolean(GetString(Resource.String.SyncAfterQuickUnlock_key), false))
|
||||
{
|
||||
new SyncUtil(this).SynchronizeDatabase(Finish);
|
||||
}
|
||||
else
|
||||
Finish();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private string ExpectedPasswordPart
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@@ -479,7 +479,6 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">إذا كنت لا تريد منح KP2A حق الوصول إلى Dropbox بالكامل، قم بتحديد هذا الخيار. سوف يتطلب حق الوصول فقط إلى المجلد Apps/Keepass2Android. هذا مناسب بشكل خاص عند إنشاء قاعدة بيانات جديدة. إذا كان بالفعل لديك قاعدة بيانات، انقر فوق هذا الخيار لإنشاء المجلد، ثم ضع الملف داخل المجلد (من جهاز الكمبيوتر الخاص بك) وقم بتحديد هذا الخيار مرة أخرى لفتح الملف.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">هذا النوع من التخزين سيطلب فقط الوصول إلى مجلد \"Applications/Keepass2Android\". إذا كنت ترغب في استخدام قاعدة بيانات موجودة من حساب PCloud الخاص بك، يرجى التأكد من وضع الملف في هذا المجلد.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">جميع الملفات والملفات المشتركة</string>
|
||||
|
@@ -500,7 +500,6 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Калі вы хочаце даць KP2A доступ да ўсяго сховішча Dropbox, абярыце гэты параметр. Праграма будзе запытваць доступ толькі да каталога Apps/Keepass2Android. Гэта асабліва пасуе пры стварэнні новай базы даных. Калі ў вас ужо ёсць база даных, абярыце гэты параметр, каб стварыць каталог, перамясціце ў яго файл базы даных, а пасля зноў абярыце гэты параметр, каб адкрыць файл.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Для гэтага тыпу захоўвання патрэбны доступ толькі да каталога \"Applications/Keepass2Android\". Калі вы хочаце выкарыстоўваць базу даных з акаўнта PCloud, пераканайцеся, што файл размешчаны ў гэтым каталозе.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Усе файлы і агульныя файлы</string>
|
||||
@@ -661,6 +660,7 @@
|
||||
<string name="EntryChannel_name">Апавяшчэнне пра запіс</string>
|
||||
<string name="EntryChannel_desc">Апавяшчэнне для зручнага доступу да абранага запісу.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Закрыць базу даных пасля трох няўдалых спробаў разблакавання з дапамогай біяметрычных даных.</string>
|
||||
<string name="WarnFingerprintInvalidated">Увага! Android можа ануляваць аўтэнтыфікацыю з дапамогай біяметрычных даных. Напрыклад, калі вы дададзіце новы адбітак пальца ў сістэмных наладах. Пераканайцеся, што ведаеце, як разблакаваць свой галоўны пароль.</string>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Дададзена падтрымка фармату KDBX 4.1 з KeePass 2.48</item>
|
||||
<item>Дададзены дыялог наладаў TOTP для запісаў</item>
|
||||
@@ -668,10 +668,10 @@
|
||||
<item>Палепшана аўтазапаўненне (выпраўлена выплыўное акно ў Chrome, палепшана падтрымка паддаменаў)</item>
|
||||
<item>Палепшана рэалізацыя OneDrive: больш няма абмежаванняў па памеры і лішніх запытаў аўтэнтыфікацыі</item>
|
||||
<item>З сістэмных наладаў дададзены параметр выбару цёмнай / светлай тэмы, уключаючы начныя планы, Android 10+</item>
|
||||
<item>Update Dropbox implementation to support new authentication method.</item>
|
||||
<item>Newly setup fingerprint unlock will be invalidated after adding a fingerprint in system settings for increased security.</item>
|
||||
<item>Allow to open files through system file picker, ignoring the read-only flag</item>
|
||||
<item>Allow to start moving entries from the entry view menu</item>
|
||||
<item>Абноўлена ўзаемадзеянне з Dropbox для падтрымкі новага спосабу аўтэнтыфікацыі.</item>
|
||||
<item>Пасля дадання адбітка пальца ў сістэмныя налады нядаўна наладжанае разблакаванне з дапамогай адбітка пальца стане непрыдатным.</item>
|
||||
<item>Дазволена адкрыццё файлаў праз сістэмны сродак выбару файлаў, не зважаючы на адзнаку \"толькі для чытання\"</item>
|
||||
<item>Дазволена перамяшчэнне запісаў з меню прагляду запісаў</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Дададзена падтрымка новага фармату файлаў ключоў з Keepass 2.47</item>
|
||||
|
@@ -474,7 +474,6 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Si no voleu donar accés KP2A al seu Dropbox complet, heu de seleccionar aquesta opció. Es sol·licitarà només l\'accés a la carpeta Apps/Keepass2Android. Això és especialment adequat quan es crea una nova base de dades. Si ja teniu una base de dades, feu clic a aquesta opció per crear la carpeta, a continuació, posar el seu arxiu dins la carpeta (des del seu PC) i llavors seleccioni aquesta opció de nou per obrir l\'arxiu.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Aquest tipus d’emmagatzematge només sol·licitarà accés a la carpeta \"Applications/Keepass2Android\". Si voleu utilitzar una base de dades existent del vostre compte de PCloud, assegureu-vos que el fitxer es col·loca en aquesta carpeta.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Tots els fitxers i fitxers compartits</string>
|
||||
|
@@ -500,7 +500,7 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Pokud nechcete, aby měl KP2A plný přístup k vašemu Dropbox účtu, může vybrat tuto možnost. Bude vyžadován pouze přístup ke složce Apps/Keepass2Android. Toto je vhodné zejména při vytváření nové databáze. Pokud již máte databázi, zvolte na tuto možnost pro vytvoření složky, poté umístěte soubor (z PC) do této složky a zvolte tuto možnost znovu pro otevření souboru.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Tento druh úložiště si vyžádá pouze přístup do složky \"Applications/Keepass2Android\". Chcete-li použít existující databázi vašeho PCloud účtu, ujistěte se, že soubor je uložen v této složce.</string>
|
||||
<string name="filestoragehelp_pcloud">Tento typ úložiště si vyžaduje přístup pouze do pCloudové složky \"Applications/Keepass2Android\". Chcete-li použít existující databázi ze svého pCloud účtu, ujistěte se, že je soubor umístěn v této složce.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Všechny soubory a sdílené soubory</string>
|
||||
@@ -660,6 +660,7 @@
|
||||
<string name="EntryChannel_name">Upozornění položky</string>
|
||||
<string name="EntryChannel_desc">Upozornění pro usnadnění přístupu k momentálně zvolené položce.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Zavřít databázi po třech neúspěšných pokusech o odemknutí.</string>
|
||||
<string name="WarnFingerprintInvalidated">Varování! Biometrické ověření může být zneplatněno Androidem, např. po přidání nového otisku prstu do nastavení zařízení. Ujistěte se, že vždy víte, jak odemknout pomocí hlavního hesla!</string>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Přidána podpora pro soubory KDBX 4.1 zavedené v KeePass 2.48</item>
|
||||
<item>Přidána možnost konfigurovat TOTP nastavení pro položky</item>
|
||||
@@ -667,8 +668,8 @@
|
||||
<item>Vylepšení automatického doplňování (opraveny vyskakovací okna v Chrome, vylepšena podpora subdomén)</item>
|
||||
<item>Vylepšení implementace OneDrive: odstranění limitu velikosti, žádné zbytečné požadavky na ověření</item>
|
||||
<item>Přidána možnost výběru světlého/tmavého vzhledu z nastavení systému, včetně nočního režimu, vyžaduje Android 10+</item>
|
||||
<item>Update Dropbox implementation to support new authentication method.</item>
|
||||
<item>Newly setup fingerprint unlock will be invalidated after adding a fingerprint in system settings for increased security.</item>
|
||||
<item>Aktualizována implementace Dropboxu pro podporu nové ověřovací metody.</item>
|
||||
<item>Nově je kvůli zvýšení zabezpečení zneplatněno nastavení odemykání otiskem prstu po přidání otisku prstu do nastavení systému.</item>
|
||||
<item>Allow to open files through system file picker, ignoring the read-only flag</item>
|
||||
<item>Allow to start moving entries from the entry view menu</item>
|
||||
</string-array>
|
||||
|
@@ -71,6 +71,7 @@
|
||||
<string name="copy_password">Vælg for at kopiere adgangskode til udklipsholderen</string>
|
||||
<string name="copy_totp">Vælg for at kopiere TOTP til udklipsholder</string>
|
||||
<string name="available_through_keyboard">Post er tilgængelig via KP2A-tastaturet</string>
|
||||
<string name="app_language_pref_title">App-sprog</string>
|
||||
<string name="entry_is_available">er tilgængelig</string>
|
||||
<string name="not_possible_im_picker">Kunne ikke åbne dialogboksen til valg af inputmetode. Aktivér tastaturet manuelt.</string>
|
||||
<string name="please_activate_keyboard">Aktivér Keepass2Android-tastaturet i systemindstillingerne.</string>
|
||||
@@ -82,6 +83,7 @@
|
||||
<string name="disclaimer_formal">Keepass2Android leveres ABSOLUT UDEN GARANTI. Det er gratis software, og du er velkommen til at videredistribuere det jf. betingelserne i GPL version 2 eller senere.</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">Kopiér til Upklipsholder</string>
|
||||
<string name="SystemLanguage">Systemsprog</string>
|
||||
<string name="fingerprint_description">Verificér for at fortsætte</string>
|
||||
<string name="fingerprint_fatal">Kan ikke opsætte biometrisk oplåsning:</string>
|
||||
<string name="fingerprint_not_recognized">Biometrisk verifikation fejlede. Prøv igen</string>
|
||||
@@ -290,6 +292,9 @@
|
||||
<string name="RememberRecentFiles_summary">Husk senest åbnede databaser og vis dem på skærmen Åbn database.</string>
|
||||
<string name="NoDalVerification_title">Ingen DAL verifikation</string>
|
||||
<string name="NoDalVerification_summary">Deaktiverer tjek af om domæne- og app-pakke matcher</string>
|
||||
<string name="InlineSuggestions_title">Integrer med tastatur</string>
|
||||
<string name="InlineSuggestions_summary">Viser forslag til autofyld som indlejrede muligheder i tastaturet (hvis understøttet af inputmetoden)</string>
|
||||
<string name="requires_android11">Kræver Android 11 eller senere.</string>
|
||||
<string name="kp2a_findUrl">Find adgangskode</string>
|
||||
<string name="excludeExpiredEntries">Udelad udløbne poster</string>
|
||||
<string name="search_options">Indstillinger</string>
|
||||
@@ -499,8 +504,9 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (KP2A-mappe)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">Vil du ikke give KP2A adgang til din fulde Dropbox, kan du vælge denne indstilling. Den vil kun anmode om at tilgå mappen Apps/Keepass2Android. Dette er især egnet til oprettelse af en ny database. Har du allerede en database, så tryk på denne valgmulighed for at oprette mappen, dernæst placere din fil inde i mappen (fra din PC) og så vælge denne muilghed igen for at åbne filen.</string>
|
||||
<string name="filestoragename_gdrive">Google Drev</string>
|
||||
<string name="filestoragehelp_gdrive">Bemærk: Jeg har anmodet om Googles bekræftelse af appen, men der er ikke sket noget i månedsvis. Hvis du ser en meddelelse om, at appen er blokeret, fordi den ikke er bekræftet, så brug venligst Android-filbrowser - Google Drev i stedet for denne mulighed.</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Denne lagringstype vil kun anmode om adgang til mappen \"Applications / Keepass2Android\". Hvis du vil benytte en eksisterende database fra din PCloud-konto, så sørg for, at filen er placeret i denne mappe.</string>
|
||||
<string name="filestoragehelp_pcloud">Denne lagringstype vil kun anmode om adgang til pCloud-mappen \"Applications/Keepass2Android\". Hvis du vil benytte en eksisterende database fra din pCloud-konto, skal du sørge for, at filen er placeret i denne pCloud-mappe.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Alle filer og delte filer</string>
|
||||
@@ -660,6 +666,14 @@
|
||||
<string name="EntryChannel_name">Indtastningsnotifikationer</string>
|
||||
<string name="EntryChannel_desc">Notificering til forenkelse af adgang til den aktuelt valgte indtastning.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Luk database efter tre mislykkede forsøg med biometrisk oplåsning.</string>
|
||||
<string name="WarnFingerprintInvalidated">Advarsel! Biometrisk godkendelse kan ugyldiggøres af Android, f.eks. efter tilføjelse af et nyt fingeraftryk i dine enhedsindstillinger. Sørg for, at du altid ved, hvordan du låser op med din hovedadgangskode!</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Fiks forsvindende autofyld prompt i Firefox</item>
|
||||
<item>Integrer forslag til autofyld med tastatur (kræver Android 11+)</item>
|
||||
<item>Tillad ændring af app-sprog i indstillinger</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Tilføjet understøttelse af KDBX 4.1 filformat indført i KeePass 2.48</item>
|
||||
<item>Tilføjet dialog til at konfigurere TOTP indstillinger for poster</item>
|
||||
@@ -667,10 +681,10 @@
|
||||
<item>Forbedringer til Autofyldning (fast popup vises ikke i Chrome, bedre underdomæne understøttelse)</item>
|
||||
<item>Forbedringer til OneDrive-implementering: ikke længere nogen størrelsesgrænse, ikke flere overflødige anmodninger om autentificering</item>
|
||||
<item>Tilføjet mulighed for at vælge lyst / mørkt design fra systemindstillinger, herunder nat-planer, kræver Android 10+</item>
|
||||
<item>Update Dropbox implementation to support new authentication method.</item>
|
||||
<item>Newly setup fingerprint unlock will be invalidated after adding a fingerprint in system settings for increased security.</item>
|
||||
<item>Allow to open files through system file picker, ignoring the read-only flag</item>
|
||||
<item>Allow to start moving entries from the entry view menu</item>
|
||||
<item>Opdater Dropbox-implementering for at understøtte ny godkendelsesmetode.</item>
|
||||
<item>For øget sikkerhed vil nyligt indstillet fingeraftryksoplåsning blive ugyldiggjort efter tilføjelse af et fingeraftryk i systemindstillinger.</item>
|
||||
<item>Tillad at åbne filer gennem systemfilvælger med ignorering af skrivebeskyttet-markeringen</item>
|
||||
<item>Tillad at begynde at flytte poster fra postvisningsmenuen</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Tilføjet understøttelse af nyt nøglefilformat indført i KeePass 2.47</item>
|
||||
|
@@ -72,6 +72,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="copy_password">Kennwort in die Zwischenablage kopieren</string>
|
||||
<string name="copy_totp">TOTP in die Zwischenablage zu kopieren</string>
|
||||
<string name="available_through_keyboard">Eintrag ist über die KP2A-Tastatur verfügbar</string>
|
||||
<string name="app_language_pref_title">App Sprache</string>
|
||||
<string name="entry_is_available">ist verfügbar</string>
|
||||
<string name="not_possible_im_picker">Der Dialog zum Auswählen der Eingabemethode konnte nicht geöffnet werden. Bitte die Tastatur manuell aktivieren.</string>
|
||||
<string name="please_activate_keyboard">Bitte Keepass2Android Tastatur in den Einstellungen aktivieren.</string>
|
||||
@@ -83,6 +84,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="disclaimer_formal">Der Autor übernimmt keine Verantwortung gibt KEINERLEI GARANTIE bei der Nutzung der Anwendung; Die Anwendung ist kostenlos und kann unter den Bedingungen der GPL v2 oder später verbreitet werden.</string>
|
||||
<string name="ellipsis">…</string>
|
||||
<string name="copy_to_clipboard">In Zwischenablage kopieren</string>
|
||||
<string name="SystemLanguage">System Sprache</string>
|
||||
<string name="fingerprint_description">Bitte authentifizieren um fortzufahren</string>
|
||||
<string name="fingerprint_fatal">Kann Biometrisches Entsperren nicht einrichten:</string>
|
||||
<string name="fingerprint_not_recognized">Biometrische Authentifizierung fehlgeschlagen. Versuche es erneut</string>
|
||||
@@ -291,6 +293,9 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="RememberRecentFiles_summary">Dateinamen der bisher geöffneten Datenbanken speichern und im Bildschirm zum Öffnen der Datenbank anzeigen.</string>
|
||||
<string name="NoDalVerification_title">Keine Digital-Asset-Link-Verifikation</string>
|
||||
<string name="NoDalVerification_summary">Deaktiviert die Prüfung, ob Domain und App-Package zueinander passen</string>
|
||||
<string name="InlineSuggestions_title">In die Tastatur integrieren</string>
|
||||
<string name="InlineSuggestions_summary">Zeigt Vorschläge für automatisches Ausfüllen innerhalb der virtuellen Tastatur (wenn von dieser unterstützt)</string>
|
||||
<string name="requires_android11">Benötigt Android 11 oder neuer</string>
|
||||
<string name="kp2a_findUrl">Kennwort finden</string>
|
||||
<string name="excludeExpiredEntries">Abgelaufene Einträge ausschließen</string>
|
||||
<string name="search_options">Optionen</string>
|
||||
@@ -405,6 +410,8 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="DocumentAccessRevoked">Keepass2Android kann nicht mehr auf die Datei zugreifen. Entweder wurde sie entfernt oder die Zugriffsrechte wurden entzogen. Bitte öffne sie erneut, z.B. durch Klick auf \"Datenbank wechseln\".</string>
|
||||
<string name="PreloadDatabaseEnabled_title">Datenbank vor-laden</string>
|
||||
<string name="PreloadDatabaseEnabled_summary">Starte das Laden oder Herunterladen von Datenbank-Dateien im Hintergrund während der Passwort-Eingabe.</string>
|
||||
<string name="SyncAfterQuickUnlock_title">Nach QuickUnlock synchronisieren</string>
|
||||
<string name="SyncAfterQuickUnlock_summary">Datenbank nach Entsperren mit QuickUnlock mit der Remote-Kopie synchronisieren.</string>
|
||||
<string name="AskOverwriteBinary">Möchtest du den vorhandenen Anhang mit dem gleichen Namen überschreiben?</string>
|
||||
<string name="AskOverwriteBinary_title">Vorhandenen Anhang überschreiben?</string>
|
||||
<string name="AskOverwriteBinary_yes">Überschreiben</string>
|
||||
@@ -500,8 +507,9 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (KP2A-Ordner)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">Wenn du Keepass2Android nicht den Zugriff auf die gesamte Dropbox erlauben möchtest, kannst du diese Option wählen. Dann musst du nur Zugriff auf den Ordner Apps/Keepass2Android gewähren. Das ist besonders sinnvoll, wenn du eine neue Datenbank anlegst. Wenn du schon eine Datenbank hast, wähle diese Option aus um den Ordner anzulegen, kopiere die Datei (vom PC aus) in den neuen Ordner und wähle die Option dann erneut zum Laden der Datei.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragehelp_gdrive">Bitte beachte: Ich habe eine Verifikation der App durch Google angefragt, leider ist seit Monaten nichts geschehen. Wenn du eine Nachricht siehst, dass die App wegen fehlender Verifikation blockiert sei, benutze bitte den Android Dateibrowser und dort Google Drive. </string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Dieser Speichertyp wird nur den Zugriff auf den Ordner \"Applications/Keepass2Android\" anfordern. Wenn du eine vorhandene Datenbank aus deinem PCloud-Konto verwenden möchtest, stelle sicher, dass sich die Datei in diesem Ordner befindet.</string>
|
||||
<string name="filestoragehelp_pcloud">Dieser Speichertyp verlangt nur Zugriff auf den pCloud-Ordner \"Applications/Keepass2Android\". Wenn Sie eine existierende Datenbank aus Ihrem pCloud-Konto verwenden möchten, stellen Sie bitte sicher, dass die Datei in diesem pCloud-Ordner gespeichert ist.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Alle Dateien und freigegebene Dateien</string>
|
||||
@@ -660,6 +668,13 @@ Anbei einige Hinweise, die bei der Diagnose des Problems helfen können:\n
|
||||
<string name="EntryChannel_desc">Benachrichtigung zum schnellen Zugriff auf den aktuell gewählten Eintrag.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Datenbank nach drei fehlgeschlagenen biometrischen Entsperrversuchen schließen.</string>
|
||||
<string name="WarnFingerprintInvalidated">Warnung! Biometrische Authentifizierung kann von Android ungültig gemacht werden, z.B. nach dem Hinzufügen eines neuen Fingerabdrucks in den Geräteeinstellungen. Stelle sicher, dass du immer weißt, wie du mit deinem Master-Passwort entsperren kannst!</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Bugfix für schnell verschwindende Autofill-Anzeige in Firefox</item>
|
||||
<item>Vorschläge für automatisches Ausfüllen in die Tastatur integriert (benötigt Android 11+)</item>
|
||||
<item>Option zum Verändern der Sprache innerhalb der App</item>
|
||||
<item>Option zum Synchronisieren der Datenbank nach QuickUnlock hinzugefügt</item>
|
||||
<item>Bugfix: Dateinamen werden beim Speichern auf Dropbox nicht mehr in Kleinbuchstaben gewandelt</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Unterstützung für das KDBX-4.1-Dateiformat (in KeePass 2.48 eingeführt) implementiert</item>
|
||||
<item>Dialog zum Konfigurieren der TOTP-Einstellungen von Einträgen hinzugefügt</item>
|
||||
|
@@ -500,7 +500,6 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Αν δεν θέλεις να δώσεις στο Keepass2Android πλήρη πρόσβαση στο Dropbox, μπορείς να διαλέξεις αυτή την επιλογή. Θα ζητήσει πρόσβαση μόνο στο φάκελο Apps/Keepass2Android. Ταιριάζει ειδικά στη δημιουργία νέας βάσης δεδομένων. Αν ήδη έχεις μια βάση δεδομένων, διάλεξε αυτή την επιλογή για να δημιουργήσεις το φάκελο, μετά τοποθέτησε το αρχείο σου μέσα στο φάκελο (από το PC) και μετά διάλεξε αυτή την επιλογή πάλι για να ανοίξεις το αρχείο. </string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Αυτός ο τύπος αποθήκευσης θα ζητήσει πρόσβαση στο φάκελο \"Applications/Keepass2Android\". Αν θέλετε να χρησιμοποιήσετε μια υπάρχουσα βάση δεδομένων από το λογαριασμό PCloud, βεβαιωθείτε ότι το αρχείο είναι τοποθετημένο σε αυτό τον φάκελο.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Όλα τα αρχεία και τα κοινά αρχεία</string>
|
||||
|
@@ -71,6 +71,7 @@
|
||||
<string name="copy_password">Seleccionar para copiar la contraseña al portapapeles</string>
|
||||
<string name="copy_totp">Seleccionar para copiar el TOTP al portapapeles</string>
|
||||
<string name="available_through_keyboard">La entrada está disponible a través del teclado KP2A</string>
|
||||
<string name="app_language_pref_title">Idioma de aplicación</string>
|
||||
<string name="entry_is_available">está disponible</string>
|
||||
<string name="not_possible_im_picker">No se puede abrir el cuadro de diálogo para seleccionar el método de entrada. Por favor, active el teclado manualmente.</string>
|
||||
<string name="please_activate_keyboard">Por favor habilita el teclado de Keepass2Android en la configuración del sistema.</string>
|
||||
@@ -82,6 +83,7 @@
|
||||
<string name="disclaimer_formal">Keepass2Android NO TIENE TOTAL GARANTÍA; Este es software libre, y puedes redristribuirlo bajo las condiciones de la licencia GPL version 2 o posterior.</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">Copiar al portapapeles</string>
|
||||
<string name="SystemLanguage">Idioma del sistema</string>
|
||||
<string name="fingerprint_description">Por favor, autentifícate para continuar</string>
|
||||
<string name="fingerprint_fatal">No se puede configurar desbloqueo con huella dactilar:</string>
|
||||
<string name="fingerprint_not_recognized">La autenticación biométrica falló. Inténtalo de nuevo</string>
|
||||
@@ -239,7 +241,13 @@
|
||||
<string name="sort_moddate">Ordenar por fecha de modificación</string>
|
||||
<string name="sort_default">Mantener el orden por defecto</string>
|
||||
<string name="special">Especial</string>
|
||||
<string name="special_extended">Extended Special</string>
|
||||
<string name="at_least_one_from_each_group">Al menos uno de cada grupo</string>
|
||||
<string name="exclude_lookalike">Excluir caracteres parecidos</string>
|
||||
<string name="password_generation_profile">Perfil</string>
|
||||
<string name="save_password_generation_profile_text">Introduzca el nombre del perfil a guardar. Introduzca un nombre existente para sobrescribir.</string>
|
||||
<string name="hint_wordcount">Recuento de palabras de la frase de paso</string>
|
||||
<string name="hint_wordseparator">Separador de palabras</string>
|
||||
<string-array name="PasswordGeneratorModes">
|
||||
<item>Contraseña</item>
|
||||
<item>Frase de contraseña</item>
|
||||
@@ -248,8 +256,10 @@
|
||||
<string-array name="PasswordGeneratorCaseModes">
|
||||
<item>minúsculas</item>
|
||||
<item>MAYÚSCULAS</item>
|
||||
<item>First Character Uppercase</item>
|
||||
<item>Primer Carácter En Mayúscula</item>
|
||||
</string-array>
|
||||
<string name="custom_settings">Ajustes personalizados</string>
|
||||
<string name="passphrase_capitalization">Frase de paso en mayúsculas</string>
|
||||
<string name="search_hint">Encontrar qué</string>
|
||||
<string name="search_results">Resultados de búsqueda</string>
|
||||
<string name="search_in">Buscar en</string>
|
||||
@@ -282,6 +292,9 @@
|
||||
<string name="RememberRecentFiles_summary">Recuerda la base de datos recientemente abierta y se muestra en la pantalla.</string>
|
||||
<string name="NoDalVerification_title">Sin verificación DAL</string>
|
||||
<string name="NoDalVerification_summary">Deshabilita comprobar si el dominio y el paquete de la aplicación coinciden</string>
|
||||
<string name="InlineSuggestions_title">Integrar con el teclado</string>
|
||||
<string name="InlineSuggestions_summary">Muestra las sugerencias de autorrelleno como opciones en línea en el teclado (si el método de entrada lo admite)</string>
|
||||
<string name="requires_android11">Requiere Android 11 o posterior</string>
|
||||
<string name="kp2a_findUrl">Encuentra una contraseña</string>
|
||||
<string name="excludeExpiredEntries">Excluir las entradas caducadas</string>
|
||||
<string name="search_options">Opciones</string>
|
||||
@@ -329,6 +342,10 @@
|
||||
<string name="add_extra_string">Añadir cadena adicional</string>
|
||||
<string name="configure_totp">Configurar TOTP</string>
|
||||
<string name="totp_secret_key">Llave secreta</string>
|
||||
<string name="totp_encoding_rfc6238">Configuración del token RFC6238 por defecto</string>
|
||||
<string name="totp_encoding_steam">Configuración del token de Steam</string>
|
||||
<string name="totp_encoding_custom">configuración de token personalizado</string>
|
||||
<string name="totp_time_step">Intervalo de tiempo</string>
|
||||
<string name="totp_length">Longitud del código</string>
|
||||
<string name="delete_extra_string">Eliminar cadena adicional</string>
|
||||
<string name="database_loaded_quickunlock_enabled">%1$s: bloqueado. QuickUnlock habilitado.</string>
|
||||
@@ -392,6 +409,8 @@
|
||||
<string name="DocumentAccessRevoked">El archivo ya no es accesible a Keepass2Android. Ha sido eliminado o han sido revocados los permisos de acceso. Por favor use re-abrir el archivo, por ejemplo, con Cambiar base de datos.</string>
|
||||
<string name="PreloadDatabaseEnabled_title">Pre-cargar archivo de base de datos</string>
|
||||
<string name="PreloadDatabaseEnabled_summary">Empezar a descargar del archivo de base de datos durante la entrada de contraseña.</string>
|
||||
<string name="SyncAfterQuickUnlock_title">Sincronizar tras QuickUnlock</string>
|
||||
<string name="SyncAfterQuickUnlock_summary">Sincronizar la base de datos con el archivo remoto después de desbloquear con QuickUnlock.</string>
|
||||
<string name="AskOverwriteBinary">¿Desea sobrescribir el binario existente con el mismo nombre?</string>
|
||||
<string name="AskOverwriteBinary_title">¿Sobrescribir binario existente?</string>
|
||||
<string name="AskOverwriteBinary_yes">Sobrescribir</string>
|
||||
@@ -487,8 +506,9 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (carpeta KP2A)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">Si no quieres darle a KP2A acceso completo a tu Dropbox, deberías seleccionar esta opción. Sólo se pedirá acceso a la carpeta Apps/Keepass2Android. Esto es especialmente adecuado cuando creas una nueva base de datos. Si ya tienes una base de datos, slecciona esta opción para crear la carpeta, luego pon el archivo dentro de esta carpeta (desde tu PC) y después selecciona otra vez esta opción para abrir el archivo.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragehelp_gdrive">Nota: He solicitado la verificación de la aplicación por parte de Google, pero no ha pasado nada desde hace meses. Si ves un mensaje diciendo que la aplicación está bloqueada porque no está verificada, por favor, utiliza el explorador de archivos de Android - Google Drive en lugar de esta opción.</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Este tipo de almacenamiento sólo solicitará acceso a la carpeta \"Aplicaciones/Keepass2Android\". Si desea utilizar una base de datos existente desde su cuenta PCloud, asegúrese de que el archivo se coloca en esta carpeta.</string>
|
||||
<string name="filestoragehelp_pcloud">Este tipo de almacenamiento sólo solicitará acceso a la carpeta de pCloud \"Aplicaciones/Keepass2Android\". Si desea utilizar una base de datos existente de su cuenta pCloud, asegúrese de que el archivo se coloca en dicha carpeta de pCloud.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Todos los archivos y archivos compartidos</string>
|
||||
@@ -648,6 +668,26 @@
|
||||
<string name="EntryChannel_name">Notificaciones de entrada</string>
|
||||
<string name="EntryChannel_desc">Notificación para simplificar el acceso a la entrada seleccionada actualmente.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Cierre la base de datos después de tres intentos fallidos de desbloqueo biométrico.</string>
|
||||
<string name="WarnFingerprintInvalidated">¡Atención! La autenticación biométrica puede ser invalidada por Android, p. ej. después de añadir una nueva huella dactilar en los ajustes de su dispositivo. ¡Esté seguro de conocer siempre cómo desbloquear con su contraseña maestra!</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Corregir la desaparición del aviso de autocompletado en Firefox</item>
|
||||
<item>Integrar sugerencias de autocompletar con el teclado (requiere Android 11+)</item>
|
||||
<item>Permitir cambiar el idioma de la aplicación en los ajustes</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Añadido soporte para formato de archivo KDBX 4.1 introducido en KeePass 2.48</item>
|
||||
<item>Añadido un cuadro de diálogo para configurar los ajustes de contraseñas de un sólo uso temporales (TOTP) para las entradas.</item>
|
||||
<item>Generador de contraseñas mejorado: Se ha añadido soporte para frases de paso, más opciones, perfiles y estimación de la robustez de las contraseñas</item>
|
||||
<item>Mejoras en el Autorrelleno (se ha corregido la ventana emergente que no se mostraba en Chrome, mejor soporte de subdominios)</item>
|
||||
<item>Mejoras en la implementación de OneDrive: no más límite de tamaño, no más peticiones de autenticación superfluas</item>
|
||||
<item>Opción añadida para seleccionar diseño claro/oscuro de la configuración del sistema, incluyendo planes nocturnos, requiere Android 10+</item>
|
||||
<item>Actualiza la implementación de Dropbox para soportar nuevo método de autenticación.</item>
|
||||
<item>El desbloqueo por huella dactilar recién configurado será invalidado después de añadir una huella dactilar en los ajustes del sistema para aumentar la seguridad.</item>
|
||||
<item>Permitir abrir archivos a través del selector de archivos del sistema, ignorando la marca de sólo lectura</item>
|
||||
<item>Permitir empezar a mover las entradas desde el menú de la vista de entradas</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Añade soporte para el nuevo formato de archivo de claves introducido en Keepass 2.47</item>
|
||||
<item>Añade soporte para Argon2id como función de derivación de clave</item>
|
||||
|
@@ -658,6 +658,7 @@ Voici quelques conseils qui pourraient aider à diagnostiquer le problème : \n
|
||||
<string name="EntryChannel_name">Notifications d\'entrée</string>
|
||||
<string name="EntryChannel_desc">Notification pour simplifier l\'accès à l\'entrée actuellement sélectionnée.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Fermer la base de données après trois tentatives de déverrouillage biométrique échouées.</string>
|
||||
<string name="WarnFingerprintInvalidated">Attention ! L\'authentification biométrique peut être invalidée par Android, par ex. après avoir ajouté une nouvelle empreinte digitale dans les paramètres de votre appareil. Assurez-vous de toujours savoir comment déverrouiller avec votre mot de passe maître !</string>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Ajout de la prise en charge du format de fichier KDBX 4.1 introduit dans KeePass 2.48</item>
|
||||
<item>Ajout d`une fenêtre pour configurer les paramètres TOTP pour les entrées</item>
|
||||
@@ -665,10 +666,10 @@ Voici quelques conseils qui pourraient aider à diagnostiquer le problème : \n
|
||||
<item>Améliorations apportées au remplissage auto (correction du popup non affiché dans Chrome, meilleur support des sous-domaines)</item>
|
||||
<item>Améliorations de l\'implémentation de OneDrive : plus de limite de taille, plus de demandes d\'authentification superflues</item>
|
||||
<item>Ajout d\'une option permettant de sélectionner le mode clair/sombre dans les paramètres du système, y compris les plans de nuit, nécessite Android 10+</item>
|
||||
<item>Update Dropbox implementation to support new authentication method.</item>
|
||||
<item>Newly setup fingerprint unlock will be invalidated after adding a fingerprint in system settings for increased security.</item>
|
||||
<item>Allow to open files through system file picker, ignoring the read-only flag</item>
|
||||
<item>Allow to start moving entries from the entry view menu</item>
|
||||
<item>Mise à jour de l\'implémentation de Dropbox pour prendre en charge la nouvelle méthode d\'authentification.</item>
|
||||
<item>Le déverrouillage par une empreinte digitale nouvellement configurée sera invalidé après avoir ajouté une empreinte digitale dans les paramètres du système pour une sécurité accrue.</item>
|
||||
<item>Permission d\'ouvrir des fichiers via le sélecteur de fichiers système, en ignorant l\'indicateur de lecture seule</item>
|
||||
<item>Permission d\'initier le déplacement d\'entrées depuis le menu d\'affichage des entrées</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Ajout de la prise en charge d\'un nouveau format de fichier de clé introduit dans Keepass 2.47</item>
|
||||
|
@@ -239,11 +239,22 @@
|
||||
<string name="sort_moddate">Az utolsó módosítás ideje szerinti rendezés</string>
|
||||
<string name="sort_default">Alapértelmezett sorrend</string>
|
||||
<string name="special">Speciális</string>
|
||||
<string name="at_least_one_from_each_group">legalább egy minden csoportból</string>
|
||||
<string name="exclude_lookalike">hasonlóan kinéző karakterek kizárása</string>
|
||||
<string name="password_generation_profile">Profil</string>
|
||||
<string name="hint_wordcount">Jelmondat szavainak száma</string>
|
||||
<string name="hint_wordseparator">Szóelválasztó</string>
|
||||
<string-array name="PasswordGeneratorModes">
|
||||
<item>Jelszó</item>
|
||||
<item>Passphrase</item>
|
||||
<item>Passphrase + Password</item>
|
||||
<item>Jelmondat</item>
|
||||
<item>Jelmondat és jelszó</item>
|
||||
</string-array>
|
||||
<string-array name="PasswordGeneratorCaseModes">
|
||||
<item>kisbetűs</item>
|
||||
<item>NAGYBETŰS</item>
|
||||
<item>Első karakter nagybetűs</item>
|
||||
</string-array>
|
||||
<string name="custom_settings">Egyéni beállítások</string>
|
||||
<string name="search_hint">Keresendő szöveg</string>
|
||||
<string name="search_results">Keresési eredmények</string>
|
||||
<string name="search_in">Keresendő mezők</string>
|
||||
@@ -321,6 +332,9 @@
|
||||
<string name="protection">Védett mező</string>
|
||||
<string name="add_binary">Fájl csatolása...</string>
|
||||
<string name="add_extra_string">Kiegészítő szövegmezők hozzáadása</string>
|
||||
<string name="totp_secret_key">Titkos kulcs</string>
|
||||
<string name="totp_time_step">Időlépés</string>
|
||||
<string name="totp_length">A kód hossza</string>
|
||||
<string name="delete_extra_string">Kiegészítő szövegmezők törlése</string>
|
||||
<string name="database_loaded_quickunlock_enabled">%1$s: Zárolva. Gyorsfeloldás engedélyezett.</string>
|
||||
<string name="database_loaded_unlocked">%1$s: Hozzáférhető.</string>
|
||||
|
@@ -239,11 +239,19 @@
|
||||
<string name="sort_moddate">Ordina per data di modifica</string>
|
||||
<string name="sort_default">Mantieni l\'ordinamento predefinito</string>
|
||||
<string name="special">Speciale</string>
|
||||
<string name="password_generation_profile">Profilo</string>
|
||||
<string name="save_password_generation_profile_text">Inserisci il nome del profilo da salvare. Inserisci un nome esistente per sovrascrivere.</string>
|
||||
<string-array name="PasswordGeneratorModes">
|
||||
<item>Password</item>
|
||||
<item>Passphrase</item>
|
||||
<item>Passphrase + Password</item>
|
||||
<item>Frase segreta</item>
|
||||
<item>Frase segreta + Password</item>
|
||||
</string-array>
|
||||
<string-array name="PasswordGeneratorCaseModes">
|
||||
<item>minuscolo</item>
|
||||
<item>MAIUSCOLO</item>
|
||||
<item>Primo carattere maiuscolo</item>
|
||||
</string-array>
|
||||
<string name="custom_settings">Impostazioni personalizzate</string>
|
||||
<string name="search_hint">Cerca</string>
|
||||
<string name="search_results">Risultati della ricerca</string>
|
||||
<string name="search_in">Cerca in</string>
|
||||
@@ -274,6 +282,7 @@
|
||||
<string name="ShowUsernameInList_summary">Visualizza il nome utente sotto i titoli delle voci. Utile per account multipli o TAN multipli.</string>
|
||||
<string name="RememberRecentFiles_title">Ricorda i database</string>
|
||||
<string name="RememberRecentFiles_summary">Ricorda i database aperti di recente e visualizzali nella schermata Apri database.</string>
|
||||
<string name="NoDalVerification_title">Nessuna verifica DAL</string>
|
||||
<string name="kp2a_findUrl">Trova password</string>
|
||||
<string name="excludeExpiredEntries">Escludi voci scadute</string>
|
||||
<string name="search_options">Opzioni</string>
|
||||
@@ -319,6 +328,9 @@
|
||||
<string name="protection">Campo protetto</string>
|
||||
<string name="add_binary">Aggiungi un allegato</string>
|
||||
<string name="add_extra_string">Aggiungi campo</string>
|
||||
<string name="configure_totp">Configura TOTP</string>
|
||||
<string name="totp_secret_key">Chiave segreta</string>
|
||||
<string name="totp_length">Lunghezza del codice</string>
|
||||
<string name="delete_extra_string">Elimina campo</string>
|
||||
<string name="database_loaded_quickunlock_enabled">%1$s: Bloccato. QuickUnlock abilitato.</string>
|
||||
<string name="database_loaded_unlocked">%1$s: Sbloccato.</string>
|
||||
@@ -477,7 +489,6 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Se non vuoi dare a KP2A accesso completo al tuo Dropbox, puoi selezionare questa opzione. Richiederà solo l\'accesso alla cartella Applicazioni/Keepass2Android. Ciò è particolarmente indicato quando si crea un nuovo database. Se hai già un database, fai click su questa opzione per creare la cartella, poi spostaci dentro il file (dal PC), quindi seleziona di nuovo questa opzione per aprire il file.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Questo storage richiederà accesso solamente alla cartella \"Applications/Keepass2Android\". Se vuoi usare un database dal tuo account PCloud, assicurati che sia in questa cartella.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Tutti i file e gli elementi condivisi</string>
|
||||
@@ -635,6 +646,29 @@ Ecco alcuni suggerimenti che ti potrebbero aiutare a diagnosticare il problema:\
|
||||
<string name="EntryChannel_name">Notifiche della voce</string>
|
||||
<string name="EntryChannel_desc">Notifica per semplificare l\'accesso alla voce attualmente selezionata.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Chiudi il database dopo tre tentativi di sblocco biometrici falliti.</string>
|
||||
<string name="WarnFingerprintInvalidated">Attenzione! L\'autenticazione biometrica può essere invalidata da Android, ad es. dopo aver aggiunto una nuova impronta digitale nelle impostazioni del dispositivo. Assicurati di sapere sempre come sbloccare con la tua password principale!</string>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Aggiunto il supporto per il formato file KDBX 4.1 introdotto in KeePass 2.48</item>
|
||||
<item>Aggiunta finestra di dialogo per configurare le impostazioni TOTP per le voci</item>
|
||||
<item>Generatore di password migliorato: aggiunto supporto alle frasi segrete, più opzioni, profili e una stima della robustezza della password</item>
|
||||
<item>Miglioramenti al riempimento automatico (popup fisso che non mostra in Chrome, migliore supporto ai sottodomini)</item>
|
||||
<item>Miglioramenti nell\'implementazione di OneDrive: nessun limite di dimensione, nessuna richiesta di autenticazione superflua</item>
|
||||
<item>Added option to select light/dark design from system settings including night plans, requires Android 10+</item>
|
||||
<item>Update Dropbox implementation to support new authentication method.</item>
|
||||
<item>Newly setup fingerprint unlock will be invalidated after adding a fingerprint in system settings for increased security.</item>
|
||||
<item>Allow to open files through system file picker, ignoring the read-only flag</item>
|
||||
<item>Allow to start moving entries from the entry view menu</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Add support for new key file format introduced in Keepass 2.47</item>
|
||||
<item>Add support for Argon2id as key derivation function</item>
|
||||
<item>Improved Autofill compatibility with Firefox and Chrome</item>
|
||||
<item>Improve support for TOTP entries from desktop programs</item>
|
||||
<item>Aggiornato l\'SDK pCloud per risolvere un problema di autenticazione</item>
|
||||
<item>Aggiornato Jsch alla versione 0.1.55</item>
|
||||
<item>Add menu to database selection screen</item>
|
||||
<item>Allow to export imported keyfiles</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08c">
|
||||
<item>Non viene più memorizzato il package name delle app nel campo URL</item>
|
||||
<item>Migliorato il comportamento di blocco - non visualizza più il prompt biometrico subito dopo lo sblocco</item>
|
||||
|
@@ -31,7 +31,7 @@
|
||||
<string name="ShowGroupnameInSearchResult_resume">検索結果のエントリータイトルの下にグループ名を表示します。同名のエントリーが複数あるときに便利です。</string>
|
||||
<string name="NavigationToGroupCompleted_message">表示中のグループ: %1$s</string>
|
||||
<string name="AutofillDisabledQueriesPreference_title">自動入力が無効の対象</string>
|
||||
<string name="AutofillDisabledQueriesPreference_summary">自動入力が無効になっているアプリと web サイトの一覧を表示します</string>
|
||||
<string name="AutofillDisabledQueriesPreference_summary">自動入力が無効になっているアプリとウェブサイトの一覧を表示します</string>
|
||||
<string name="OfferSaveCredentials_summary">有効な場合、自動入力可能なフィールドに手動でデータを入力した後、Android は資格情報を保存するかどうか確認します。</string>
|
||||
<string name="OfferSaveCredentials_title">資格情報の保存を提案</string>
|
||||
<string name="ShowGroupInEntry_title">エントリー表示画面にグループ名を表示する。</string>
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="cancel">キャンセル</string>
|
||||
<string name="Ok">OK</string>
|
||||
<string name="disable_sensor">指紋認証を無効にする</string>
|
||||
<string name="enable_sensor">生体認証を有効にする</string>
|
||||
<string name="enable_sensor">指紋認証を有効にする</string>
|
||||
<string name="ClearClipboard">クリップボードを消去しました。</string>
|
||||
<string name="clipboard_timeout">クリップボードのタイムアウト</string>
|
||||
<string name="clipboard_timeout_summary">コピーされたユーザー名やパスワードがクリップボードから消去されるまでの時間</string>
|
||||
@@ -71,6 +71,7 @@
|
||||
<string name="copy_password">ここをタップするとパスワードをクリップボードにコピーします</string>
|
||||
<string name="copy_totp">ここをタップするとTOTPをクリップボードにコピーします</string>
|
||||
<string name="available_through_keyboard">KP2A キーボードで入力できます</string>
|
||||
<string name="app_language_pref_title">言語の設定</string>
|
||||
<string name="entry_is_available">使用可能</string>
|
||||
<string name="not_possible_im_picker">「入力方法の選択」ダイアログを開けません。手動でキーボードを有効にしてください。</string>
|
||||
<string name="please_activate_keyboard">システム設定で Keepass2Android キーボードを有効にしてください。</string>
|
||||
@@ -82,6 +83,7 @@
|
||||
<string name="disclaimer_formal">Keepass2Android は無保証のフリーソフトウェアであり、GPLバージョン2以降のライセンスで再配布することができます。</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">クリップボードにコピー</string>
|
||||
<string name="SystemLanguage">システムの言語</string>
|
||||
<string name="fingerprint_description">続行するには認証してください</string>
|
||||
<string name="fingerprint_fatal">生体認証によるロック解除を設定できません:</string>
|
||||
<string name="fingerprint_not_recognized">生体認証に失敗しました。もう一度やり直してください</string>
|
||||
@@ -239,11 +241,25 @@
|
||||
<string name="sort_moddate">更新日順</string>
|
||||
<string name="sort_default">デフォルトの順序を保持</string>
|
||||
<string name="special">記号</string>
|
||||
<string name="special_extended">Extended Special</string>
|
||||
<string name="at_least_one_from_each_group">各グループから少なくとも1つずつ</string>
|
||||
<string name="exclude_lookalike">見た目が似ている文字を除外</string>
|
||||
<string name="password_generation_profile">プロファイル</string>
|
||||
<string name="save_password_generation_profile_text">保存するプロファイル名を入力してください。既存の名前を入力すると上書きします。</string>
|
||||
<string name="hint_wordcount">パスフレーズの単語数</string>
|
||||
<string name="hint_wordseparator">区切り文字</string>
|
||||
<string-array name="PasswordGeneratorModes">
|
||||
<item>パスワード</item>
|
||||
<item>Passphrase</item>
|
||||
<item>Passphrase + Password</item>
|
||||
<item>パスフレーズ</item>
|
||||
<item>パスフレーズ + パスワード</item>
|
||||
</string-array>
|
||||
<string-array name="PasswordGeneratorCaseModes">
|
||||
<item>小文字</item>
|
||||
<item>大文字</item>
|
||||
<item>先頭大文字</item>
|
||||
</string-array>
|
||||
<string name="custom_settings">カスタム設定</string>
|
||||
<string name="passphrase_capitalization">パスフレーズの大文字化</string>
|
||||
<string name="search_hint">検索文字列</string>
|
||||
<string name="search_results">検索結果</string>
|
||||
<string name="search_in">検索対象</string>
|
||||
@@ -321,6 +337,13 @@
|
||||
<string name="protection">保護されたフィールド</string>
|
||||
<string name="add_binary">添付ファイルを追加</string>
|
||||
<string name="add_extra_string">補足文字列を追加</string>
|
||||
<string name="configure_totp">TOTP の設定</string>
|
||||
<string name="totp_secret_key">シークレットキー</string>
|
||||
<string name="totp_encoding_rfc6238">RFC 6238 のデフォルトのトークン設定</string>
|
||||
<string name="totp_encoding_steam">Steamトークンの設定</string>
|
||||
<string name="totp_encoding_custom">カスタムトークンの設定</string>
|
||||
<string name="totp_time_step">間隔(秒)</string>
|
||||
<string name="totp_length">コードの文字数</string>
|
||||
<string name="delete_extra_string">補足文字列を削除</string>
|
||||
<string name="database_loaded_quickunlock_enabled">%1$s: ロック中。クイック解除が有効です。</string>
|
||||
<string name="database_loaded_unlocked">%1$s: ロック解除。</string>
|
||||
@@ -341,7 +364,7 @@
|
||||
<string name="NoDonateOption_summary">この設定は寄付者向けです。Keepass2Android をしばらく使用した後でのみ利用可能です。</string>
|
||||
<string name="NoDonateOption_question">寄付がなければ、このアプリも継続的な改善もありませんでした!まだ寄付を頂いていないようであれば、今すぐご検討ください</string>
|
||||
<string name="NoDonationReminder_title">絶対に寄付を求めない</string>
|
||||
<string name="NoDonationReminder_summary">びた一文あげたくない、またはすでに寄付をしました。作者の誕生日でさえ、寄付金を求めないでください。</string>
|
||||
<string name="NoDonationReminder_summary">びた一文あげたくない、またはすでに寄付をしました。作者の誕生日でさえ、寄付金を求めないようにする。</string>
|
||||
<string name="UseOfflineCache_title">データベース キャッシュ</string>
|
||||
<string name="UseOfflineCache_summary">アプリのキャッシュディレクトリにデータベースファイルのコピーを保存します。これにより、データベースファイルにアクセスできないときもデータベースを使用することができます。</string>
|
||||
<string name="CreateBackups_title">ローカルバックアップ</string>
|
||||
@@ -478,8 +501,9 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (KP2A フォルダー)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">Dropbox の全てに KP2A がアクセスできるようにしたくない場合にこのオプションを選択してください。このオプションを選択すると、Apps/Keepass2Android フォルダーだけにアクセスを要求します。これは特に新しいデータベースを作成するときに向いています。既にデータベースがある場合は、このオプションを選択してフォルダーを作成し、その後 (PC から) フォルダー内にファイルを配置し、そのファイルを開く際にもう一度このオプションを選択します。</string>
|
||||
<string name="filestoragename_gdrive">Google ドライブ</string>
|
||||
<string name="filestoragehelp_gdrive">注意:Googleによるアプリの検証を要求しましたが、数ヶ月の間、何もありません。 アプリが検証されていないためブロックされているというメッセージが表示された場合、Android のシステムファイルピッカー - Google ドライブ をこのオプションの代わりに使用してください。</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">このストレージタイプは、\"Applications/Keepass2Android\" フォルダーへのアクセスのみを要求します。あなたの PCloud アカウント上の既存のデータベースを利用したい場合には、そのファイルが、上記フォルダー内にあるかどうかを確認して下さい。</string>
|
||||
<string name="filestoragehelp_pcloud">このストレージタイプは、pCloud フォルダー \"Applications/Keepass2Android\" へのアクセスのみを要求します。お使いの pCloud アカウント上の既存のデータベースを利用したい場合には、そのファイルが、この pCloud フォルダー内にあるかどうかを確認して下さい。</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">すべてのファイルと共有ファイル</string>
|
||||
@@ -551,7 +575,7 @@
|
||||
<string name="SCOPE_QUERY_CREDENTIALS_FOR_OWN_PACKAGE_title">自己資格情報のクエリ</string>
|
||||
<string name="SCOPE_QUERY_CREDENTIALS_FOR_OWN_PACKAGE_explanation">プラグインは、アプリ パッケージに関連付けられた資格情報を照会することができます。</string>
|
||||
<string name="SCOPE_QUERY_CREDENTIALS_title">資格情報のクエリ</string>
|
||||
<string name="SCOPE_QUERY_CREDENTIALS_explanation">プラグインは、意図した web サイトまたはアプリの資格情報を照会することができます。</string>
|
||||
<string name="SCOPE_QUERY_CREDENTIALS_explanation">プラグインは、意図したウェブサイトやアプリの資格情報を照会することができます。</string>
|
||||
<string name="get_regular_version">追加のストレージタイプを取得</string>
|
||||
<string name="CertificateWarning">警告: サーバー証明書の検証に失敗しました: %1$s。お使いのデバイスに適切なルート証明書をインストールするか、設定を確認してください!</string>
|
||||
<string name="CertificateFailure">エラー: サーバー証明書の検証に失敗しました! お使いのデバイスに適切なルート証明書をインストールするか、設定を確認してください!</string>
|
||||
@@ -581,7 +605,7 @@
|
||||
<string name="TemplateTitle_EMail">メール</string>
|
||||
<string name="TemplateField_EMail_EMail">メールアドレス</string>
|
||||
<string name="TemplateTitle_WLan">無線 LAN</string>
|
||||
<string name="TemplateTitle_Notes">保護されたメモ</string>
|
||||
<string name="TemplateTitle_Notes">セキュアメモ</string>
|
||||
<string name="TemplateField_WLan_SSID">SSID</string>
|
||||
<string name="TemplateField_Number">番号</string>
|
||||
<string name="TemplateField_CreditCard_CVV">CVV</string>
|
||||
@@ -636,7 +660,27 @@
|
||||
<string name="DbQuicklockedChannel_desc">クイック解除でデータベースがロックされていることに関する通知</string>
|
||||
<string name="EntryChannel_name">エントリーの通知</string>
|
||||
<string name="EntryChannel_desc">選択中のエントリーへの簡易アクセスの通知</string>
|
||||
<string name="CloseDbAfterFailedAttempts">生体認証ロック解除試行に3回失敗した後、データベースを閉じます。</string>
|
||||
<string name="CloseDbAfterFailedAttempts">生体認証ロック解除に3回失敗したら、データベースを閉じます。</string>
|
||||
<string name="WarnFingerprintInvalidated">警告! 生体認証は Android によって無効にされる可能性があります。例えば、新たな指紋を端末に追加したときなどです。つねにマスターパスワードによる解除方法を忘れないでください!</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Fix disappearing autofill prompt in Firefox</item>
|
||||
<item>Integrate autofill suggestions with keyboard (requires Android 11+)</item>
|
||||
<item>設定でアプリの言語を変更することが可能に</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>KeePass 2.48 で導入された KDBX 4.1 ファイル形式のサポートを追加</item>
|
||||
<item>エントリーの TOTP 設定を構成するためのダイアログを追加しました</item>
|
||||
<item>パスワード ジェネレーターの改善:パスフレーズのサポート、オプションの増強、プロファイル機能、パスワードの強度の推定を追加しました</item>
|
||||
<item>自動入力の改善(Chrome で表示されないポップアップを修正し、サブドメインのサポートを改善)</item>
|
||||
<item>OneDrive 実装の改善:サイズ制限を撤廃。余分な認証リクエストを不要化</item>
|
||||
<item>システム設定からライト テーマ・ダーク テーマを選択するオプションを追加(Android 10 以上が必要)</item>
|
||||
<item>Dropbox 実装の更新:新しい認証メソッドのサポート</item>
|
||||
<item>セキュリティ強化のため、システム設定に指紋を追加した後、新しい指紋認証ロック解除のセットアップは無効になります。</item>
|
||||
<item>読み取り専用フラグを無視してシステムファイルピッカーを通じてファイルを開くことを許可する</item>
|
||||
<item>エントリー表示メニューからエントリーを移動することができます</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Keepass 2.47 で導入された新しいキーファイル形式のサポートを追加</item>
|
||||
<item>鍵導出関数 Argon2id のサポートを追加</item>
|
||||
|
@@ -477,7 +477,6 @@
|
||||
그 다음 이 옵션을 다시 선택하여 데이터베이스 파일을 여십시오.</string>
|
||||
<string name="filestoragename_gdrive">Google 드라이브</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">이 저장공간 유형은 오직 \"Application/Keepass2Android\" 폴더에만 접근을 요청할 것입니다. 만약 PCloud 계정에 존재하는 데이터베이스를 사용하길 원하신다면, 데이터베이스 파일이 이 폴더 내에 있는지 확인해주십시오.</string>
|
||||
<string name="filestoragename_onedrive">원드라이브</string>
|
||||
<string name="filestoragename_onedrive2">원드라이브</string>
|
||||
<string name="filestoragename_onedrive2_full">모든 파일 및 공유한 파일</string>
|
||||
|
@@ -239,11 +239,25 @@
|
||||
<string name="sort_moddate">Sorteren op wijzigingsdatum</string>
|
||||
<string name="sort_default">Standaardvolgorde behouden</string>
|
||||
<string name="special">Speciaal</string>
|
||||
<string name="special_extended">Uitgebreid speciaal</string>
|
||||
<string name="at_least_one_from_each_group">Ten minste één van elke groep</string>
|
||||
<string name="exclude_lookalike">Vergelijkbare tekens uitsluiten</string>
|
||||
<string name="password_generation_profile">Profiel</string>
|
||||
<string name="save_password_generation_profile_text">Geef de naam van het profiel. Geef een bestaande naam om een profiel te overschrijven.</string>
|
||||
<string name="hint_wordcount">Aantal woorden in wachtwoordzin</string>
|
||||
<string name="hint_wordseparator">Woordscheidingsteken</string>
|
||||
<string-array name="PasswordGeneratorModes">
|
||||
<item>Wachtwoord</item>
|
||||
<item>Passphrase</item>
|
||||
<item>Passphrase + Password</item>
|
||||
<item>Wachtwoordzin</item>
|
||||
<item>Wachtwoordzin + Wachtwoord</item>
|
||||
</string-array>
|
||||
<string-array name="PasswordGeneratorCaseModes">
|
||||
<item>kleine letters</item>
|
||||
<item>HOOFDLETTERS</item>
|
||||
<item>Eerste Letter Hoofdletters</item>
|
||||
</string-array>
|
||||
<string name="custom_settings">Aangepaste instellingen</string>
|
||||
<string name="passphrase_capitalization">Wachtwoordzin letters</string>
|
||||
<string name="search_hint">Zoeken</string>
|
||||
<string name="search_results">Zoekresultaten</string>
|
||||
<string name="search_in">Zoeken in</string>
|
||||
@@ -321,6 +335,13 @@
|
||||
<string name="protection">Beveiligd veld</string>
|
||||
<string name="add_binary">Bestandsbijlage toevoegen...</string>
|
||||
<string name="add_extra_string">Toevoegen extra waarde</string>
|
||||
<string name="configure_totp">TOTP configureren</string>
|
||||
<string name="totp_secret_key">Geheime sleutel</string>
|
||||
<string name="totp_encoding_rfc6238">Standaard RFC6238 token instellingen</string>
|
||||
<string name="totp_encoding_steam">Steam token instellingen</string>
|
||||
<string name="totp_encoding_custom">Aangepaste token instellingen</string>
|
||||
<string name="totp_time_step">Tijdstap</string>
|
||||
<string name="totp_length">Lengte van de code</string>
|
||||
<string name="delete_extra_string">Extra waarde verwijderen</string>
|
||||
<string name="database_loaded_quickunlock_enabled">%1$s: vergrendeld. Snel Openen ingeschakeld.</string>
|
||||
<string name="database_loaded_unlocked">%1$s: Ontgrendeld.</string>
|
||||
@@ -479,7 +500,7 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Selecteer deze optie als je KP2A geen toegang wilt geven tot jouw volledige Dropbox. Dit zal alleen toegang vragen tot de map Apps/Keepass2Android. Dit is met name geschikt bij het aanmaken van een nieuwe database. Als je al een database hebt, klik hier om de map te openen, plaats daarna het bestand in de map (vanaf uw PC) en selecteer deze optie opnieuw om het bestand te openen.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Dit opslagtype zal alleen toegang vragen tot de map \"Applicaties/Keepass2Android\". Als je een bestaande database wil gebruiken uit een PCloud account, zorg er dan voor dat het bestand in die map wordt geplaatst.</string>
|
||||
<string name="filestoragehelp_pcloud">Dit opslagtype zal alleen toegang vragen tot de pCloud map \"Applications/Keepass2Android\". Als je een bestaande database uit jouw PCloud account wil gebruiken, zorg dan dat het bestand in die pCloud map wordt geplaatst.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Alle bestanden en gedeelde bestanden</string>
|
||||
@@ -612,9 +633,9 @@
|
||||
<string name="CorruptDatabaseHelp"> Het bestand is beschadigd. \n
|
||||
Dit zijn enkele aanwijzingen om het probleem te diagnosticeren:\n
|
||||
|
||||
• Als je het bestand via USB (MTP-modus) hebt gekopieerd: probeer je het opnieuw via een programma zoals MyPhoneExplorer. MTP kapt namelijk in sommige gevallen bestanden af.\n
|
||||
• Als je het bestand ook niet op jouw PC kunt openen dan is het aannemelijk dat het bestand daadwerkelijk beschadigd is. Gebruik in dat geval een back-up van de database. Als je vermoedt dat Keepass2Android het bestand heeft beschadigd neem dan alsjeblieft contact op.\n
|
||||
• Als je het bestand wel kunt openen op jouw PC, neem dan contact op. Wellicht kun je het bestand met andere instellingen opslaan op jouw PC (bv niet gezipt) en het daarna openen in Keepass2Android.
|
||||
• Als je het bestand via USB (MTP-modus) hebt gekopieerd: probeer je het opnieuw via een programma zoals MyPhoneExplorer. MTP verkort bestanden in sommige gevallen.\n
|
||||
• Als je het bestand ook niet op jouw PC kunt openen dan is het aannemelijk dat het bestand daadwerkelijk beschadigd is. Gebruik in dat geval een back-up van de database. Als je vermoedt dat Keepass2Android het bestand heeft beschadigd neem dan alsjeblieft contact op met het support team.\n
|
||||
• Als je het bestand wel kunt openen op jouw PC, neem dan contact op met het support team. Wellicht kun je het bestand met andere instellingen opslaan op jouw PC (bv niet gezipt) en het daarna openen in Keepass2Android.
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Een andere database openen…</string>
|
||||
@@ -641,6 +662,19 @@
|
||||
<string name="EntryChannel_name">Item meldingen</string>
|
||||
<string name="EntryChannel_desc">Melding voor vereenvoudigde toegang van het nu geselecteerde item.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Sluit de database na drie mislukte biometrische ontgrendelpogingen.</string>
|
||||
<string name="WarnFingerprintInvalidated">Waarschuwing! Biometrische authenticatie wordt ongeldig gemaakt door Android, bijv. na het toevoegen van een nieuwe vingerafdruk in de instellingen van uw apparaat. Zorg ervoor dat u altijd weet hoe u moet ontgrendelen met uw hoofdwachtwoord!</string>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Ondersteuning toegevoegd voor KDBX 4.1, de bestandsindeling geintroduceerd in KeePass 2.48</item>
|
||||
<item>Dialoog toegevoegd voor het configureren van TOTP instellingen</item>
|
||||
<item>Wachtwoordgenerator verbetert: wachtwoordzinnen toegevoegd, meer opties, profiel- en wachtwoordsterkte inschatting</item>
|
||||
<item>Verbeteringen van Autofill (pop-up werd niet weergegeven in Chrome, betere subdomein ondersteuning)</item>
|
||||
<item>Verbeteringen in de OneDrive implementatie: grootte limiet verwijderd, geen overbodige authenticatieverzoeken meer</item>
|
||||
<item>Optie toegevoegd om licht/donker ontwerp te selecteren uit systeeminstellingen inclusief nachtplannen, vereist Android 10+</item>
|
||||
<item>Update de Dropbox-implementatie om de nieuwe verificatiemethode te ondersteunen.</item>
|
||||
<item>Nieuw ingestelde vingerafdrukontgrendeling wordt ongeldig na het toevoegen van een vingerafdruk in systeeminstellingen voor meer veiligheid.</item>
|
||||
<item>Toestaan om bestanden te openen via de systeem bestandskiezer, waarbij de alleen-lezen vlag genegeerd wordt</item>
|
||||
<item>Sta toe om items te verplaatsen vanuit het item weergave menu</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Ondersteuning toevoegen voor nieuwe sleutelbestandsindeling ingevoerd in Keepass 2.47</item>
|
||||
<item>Voeg ondersteuning voor Argon2id toe als sleutel afleidingsfunctie</item>
|
||||
|
@@ -500,7 +500,7 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Jeżeli nie chcesz dać KP2A pełnego dostępu do wszystkich folderów Dropbox, możesz wybrać tę opcję. Aplikacja zażąda dostępu jedynie do folderu Aplikacje/Keepass2Android. Jest to szczególnie przydatne podczas tworzenia nowej bazy danych. Jeżeli już posiadasz bazę danych, kliknij w tę opcję, aby utworzyć folder, następnie umieść swój plik w folderze (ze swojego PC) i wybierz tę opcję ponownie, aby otworzyć plik.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Ten typ magazynowania wymaga tylko dostępu do folderu „Applications/Keepass2Android”. Jeśli chcesz używać istniejącej bazy danych z twojego konta PCloud, upewnij się, że plik jest umieszczony w tym folderze.</string>
|
||||
<string name="filestoragehelp_pcloud">Ten typ magazynu będzie wymagał jedynie dostępu do folderu pCloud. \"Applications/Keepass2Android\". Jeżeli chcesz używać istniejącej bazy danych ze swojego konta pCloud, proszę upewnij się, że plik jest umieszczony w tym katalogu pCloud.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Wszystkie pliki i współdzielone pliki</string>
|
||||
|
@@ -30,8 +30,8 @@
|
||||
<string name="ShowGroupnameInSearchResult_title">Exibir o nome do grupo no resultado da pesquisa</string>
|
||||
<string name="ShowGroupnameInSearchResult_resume">Mostrar nome do grupo abaixo do título de entrada no resultado das pesquisas. Útil se várias entradas têm o mesmo nome.</string>
|
||||
<string name="NavigationToGroupCompleted_message">Grupo de exibição é agora: %1$s</string>
|
||||
<string name="AutofillDisabledQueriesPreference_title">Desabilitar Auto-Preenchimento para os alvos</string>
|
||||
<string name="AutofillDisabledQueriesPreference_summary">Visualiza uma lista de aplicativos e sites para os quais o Auto-Preenchimento foi desativado</string>
|
||||
<string name="AutofillDisabledQueriesPreference_title">Desabilitar Autopreenchimento para os alvos</string>
|
||||
<string name="AutofillDisabledQueriesPreference_summary">Visualiza uma lista de aplicativos e sites para os quais o Autopreenchimento foi desativado</string>
|
||||
<string name="OfferSaveCredentials_summary">Se ativado, o Android pergunta se deseja salvar as credenciais após que você inseriu manualmente dados em campos auto-preenchidos.</string>
|
||||
<string name="OfferSaveCredentials_title">Oferecer salvação de credenciais</string>
|
||||
<string name="ShowGroupInEntry_title">Mostrar nome do grupo na tela de entrada</string>
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="brackets">Parênteses</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="Ok">Ok</string>
|
||||
<string name="disable_sensor">Desativar sensor</string>
|
||||
<string name="disable_sensor">Desabilitar sensor</string>
|
||||
<string name="enable_sensor">Ativar sensor de impressão digital</string>
|
||||
<string name="ClearClipboard">Área de transferência limpa.</string>
|
||||
<string name="clipboard_timeout">Limite de tempo para a área de transferência</string>
|
||||
@@ -71,6 +71,7 @@
|
||||
<string name="copy_password">Copiar senha para a área de transferência</string>
|
||||
<string name="copy_totp">Selecione para copiar a TOTP para a área de transferência</string>
|
||||
<string name="available_through_keyboard">Entrada está disponível através do teclado KP2A</string>
|
||||
<string name="app_language_pref_title">Idioma do app</string>
|
||||
<string name="entry_is_available">está disponível</string>
|
||||
<string name="not_possible_im_picker">Não foi possível abrir a caixa de diálogo para selecionar o método de entrada. Por favor, ative o teclado manualmente.</string>
|
||||
<string name="please_activate_keyboard">Por favor habilite o teclado do Keepass2Android nas configurações do seu sistema.</string>
|
||||
@@ -82,6 +83,7 @@
|
||||
<string name="disclaimer_formal">Keepass2Android vem com ABSOLUTAMENTE NENHUMA GARANTIA; Este é um software livre, e você está convidado a redistribui-lo sob as condições da GPL versão 2 ou posterior.</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">Copiar para a área de transferencia</string>
|
||||
<string name="SystemLanguage">Idioma do sistema</string>
|
||||
<string name="fingerprint_description">Confirme a digital para continuar</string>
|
||||
<string name="fingerprint_fatal">Não consigo configurar Desbloqueio por Digital:</string>
|
||||
<string name="fingerprint_not_recognized">Digital não reconhecida. Tente de novo</string>
|
||||
@@ -89,9 +91,9 @@
|
||||
<string name="fingerprint_os_error">Desbloqueio por Digital requer Android 6.0 ou posterior.</string>
|
||||
<string name="fingerprint_hardware_error">Nenhum leitor de digital detectado.</string>
|
||||
<string name="fingerprint_no_enrolled">Você não tem digitais registradas neste dispositivo. Por favor vá para configurações do sistema primeiro.</string>
|
||||
<string name="disable_fingerprint_unlock">Desativar o Desbloqueio de Digital</string>
|
||||
<string name="enable_fingerprint_unlock">Ativar por completo o Desbloqueio de Digital</string>
|
||||
<string name="enable_fingerprint_quickunlock">Ativar o Desbloqueio de Digital para o QuickUnlock</string>
|
||||
<string name="disable_fingerprint_unlock">Desabilitar o Desbloqueio Biométrico </string>
|
||||
<string name="enable_fingerprint_unlock">Habilitar o Desbloqueio de Biométrico completo</string>
|
||||
<string name="enable_fingerprint_quickunlock">Habilitar o Desbloqueio de Biométrico para o QuickUnlock</string>
|
||||
<string name="fingerprint_unlock_failed">Desbloqueio por impressão digital falhou: Chave para desencriptação foi invalidada pelo sistema Android. Isto costuma acontecer se for adicionada uma nova impressão digital ao sistema ou se os parâmetros de segurança forem alterados. </string>
|
||||
<string name="fingerprint_disabled_wrong_masterkey">Desbloqueio da base de dados falhado: Chave composta inválida. O desbloqueio por impressão digital foi desativado porque aparentemente a chave mestra arquivada não é válida. </string>
|
||||
<string name="fingerprint_reenable">Por favor, reative o Desbloquear com Impressão Digital para a nova senha mestre.</string>
|
||||
@@ -292,6 +294,9 @@
|
||||
<string name="RememberRecentFiles_summary">Lembrar-se dos bancos de dados abertos recentemente, e mostrá-los na tela Abrir Banco de Dados.</string>
|
||||
<string name="NoDalVerification_title">Sem verificação de DAL</string>
|
||||
<string name="NoDalVerification_summary">Desativa a checagem se domínio e pacote do app correspondem.</string>
|
||||
<string name="InlineSuggestions_title">Integrar com o teclado</string>
|
||||
<string name="InlineSuggestions_summary">Mostra sugestões de Autopreenchimento como opção na linha no teclado (se suportado pelo método de entrada)</string>
|
||||
<string name="requires_android11">Requer Android 11 ou posterior</string>
|
||||
<string name="kp2a_findUrl">Keepass2Android: Buscar senha</string>
|
||||
<string name="excludeExpiredEntries">Excluir entradas expiradas</string>
|
||||
<string name="search_options">Opções</string>
|
||||
@@ -384,8 +389,8 @@
|
||||
<string name="ShowCopyToClipboardNotification_summary">Tornar usuários e senhas disponíveis através da barra de notificações e da área de transferência. Cuidado com sniffers de senhas!</string>
|
||||
<string name="ShowSeparateNotifications_title">Notificações separadas</string>
|
||||
<string name="ShowSeparateNotifications_summary">Exibir notificações separadas para copiar nome de usuário e senha para área de transferência e ativar o teclado.</string>
|
||||
<string name="AccServiceAutoFill_prefs">Serviço de Acessibilidade para Auto-Preenchimento</string>
|
||||
<string name="AutoFill_prefs">Serviço de Auto-Preenchimento</string>
|
||||
<string name="AccServiceAutoFill_prefs">Serviço de Acessibilidade para Autopreenchimento</string>
|
||||
<string name="AutoFill_prefs">Serviço de Autopreenchimento</string>
|
||||
<string name="ShowKp2aKeyboardNotification_title">Notificação do teclado KP2A</string>
|
||||
<string name="ShowKp2aKeyboardNotification_summary">Tornar toda a entrada disponível através do teclado KP2A (recomendado).</string>
|
||||
<string name="OpenKp2aKeyboardAutomatically_title">Trocar teclado</string>
|
||||
@@ -406,6 +411,8 @@
|
||||
<string name="DocumentAccessRevoked">O arquivo não está mais acessível ao Keepass2Android. Pode ter sido removido ou as permissões de acesso foram revogadas. É necessário reabrir o arquivo, por exemplo usando \"Alterar banco de dados\".</string>
|
||||
<string name="PreloadDatabaseEnabled_title">Pré-carregar arquivo de banco de dados</string>
|
||||
<string name="PreloadDatabaseEnabled_summary">Inicia o carregamento ou download em segundo plano do arquivo de banco de dados durante a inserção da senha.</string>
|
||||
<string name="SyncAfterQuickUnlock_title">Sincronizar depois do QuickUnlock</string>
|
||||
<string name="SyncAfterQuickUnlock_summary">Sincroniza o banco de dados com o arquivo remoto após desbloquear com o QuickUnlock</string>
|
||||
<string name="AskOverwriteBinary">Você deseja sobrescrever o binário existente com o mesmo nome?</string>
|
||||
<string name="AskOverwriteBinary_title">Sobrescrever binário existente?</string>
|
||||
<string name="AskOverwriteBinary_yes">Sobrescrever</string>
|
||||
@@ -501,8 +508,9 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (pasta KP2A)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">Se você não quiser dar acesso KP2A para o seu Dropbox completo, você pode selecionar esta opção. Ele irá solicitar somente acesso para a pasta Apps/Keepass2Android. Isto é especialmente adequado ao criar um novo banco de dados. Se você já tiver um banco de dados, clique nesta opção para criar a pasta, em seguida, colocar o arquivo dentro da pasta (a partir de seu PC) e em seguida, selecione esta opção novamente para abrir o arquivo.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragehelp_gdrive">Observação: Eu solicitei a verificação do aplicativo pelo Google, mas nada aconteceu há meses. Se você vir uma mensagem dizendo que o aplicativo está bloqueado porque não foi verificado, use o navegador de arquivos do Android - Google Drive em vez desta opção.</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Este tipo de armazenamento só solicitará acesso à pasta \"Aplicativos/Keepass2Android\". Se você deseja usar um banco de dados existente na sua conta PCloud, por favor, certifique-se de que o arquivo está nesta pasta.</string>
|
||||
<string name="filestoragehelp_pcloud">Este tipo de armazenamento só solicitará acesso à pasta pCloud \"Applications/Keepass2Android\". Se você deseja usar um banco de dados existente de sua conta pCloud, certifique-se de que o arquivo está colocado nesta pasta pCloud.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Todos os arquivos e arquivos compartilhados</string>
|
||||
@@ -644,8 +652,8 @@
|
||||
<string name="unspecified">não especificado</string>
|
||||
<string name="child_db_explanation">Os bancos de dados filhos são outros bancos de dados que podem ser abertos automaticamente quando você abrir o banco de dados pai. Por conseguinte, a palavra-passe mestra da criança e o local do ficheiro são armazenados no pai. Este recurso permite compartilhar algumas das suas palavras-passe com uma outra pessoa. A implementação é compatível com KeeAutoExec para PC.</string>
|
||||
<string name="child_db_enabled_on_this_device">Ativado neste dispositivo</string>
|
||||
<string name="child_db_enable_on_this_device">Ativar neste dispositivo</string>
|
||||
<string name="child_db_disable_on_this_device">Desativar neste dispositivo</string>
|
||||
<string name="child_db_enable_on_this_device">Habilitar neste dispositivo</string>
|
||||
<string name="child_db_disable_on_this_device">Desabilitar neste dispositivo</string>
|
||||
<string name="child_db_enable_a_copy_for_this_device">Copiar para este dispositivo</string>
|
||||
<string name="unconfigured_child_dbs">A sua base de dados contém novas bases de dados filhas no grupo \"AutoOpen\". Por favor especifique se estas bases de dados filhas devem ser usadas neste dispositivo.</string>
|
||||
<string name="add_child_db">Adicionar base de dados filha...</string>
|
||||
@@ -653,7 +661,7 @@
|
||||
<string name="Visible_title">Visível</string>
|
||||
<string name="child_db_Enabled_title">Abrir automaticamente</string>
|
||||
<string name="database_file_heading">Ficheiro de Base de Dados</string>
|
||||
<string name="if_device_text">Ativar por %1$s</string>
|
||||
<string name="if_device_text">Habilitar por %1$s</string>
|
||||
<string name="DbUnlockedChannel_name">Banco de dados desbloqueado</string>
|
||||
<string name="DbUnlockedChannel_desc">Notificação sobre o banco de dados sendo desbloqueado</string>
|
||||
<string name="DbQuicklockedChannel_name">QuickUnlock</string>
|
||||
@@ -662,6 +670,13 @@
|
||||
<string name="EntryChannel_desc">Notificação para simplificar o acesso à entrada selecionada.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Fechar banco de dados após três tentativas de desbloqueio biométrico falhadas.</string>
|
||||
<string name="WarnFingerprintInvalidated">Alerta! Autenticação biométrica pode ser invalidada pelo Android, por exemplo: depois de adicionar uma nova digital nas configurações do seu dispositivo. Esteja certo de sempre saber como desbloquear com sua senha mestra!</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Corrigido o desaparecimento da pergunta pelo Autopreenchimento no Firefox</item>
|
||||
<item>Integrar sugestões de Autopreenchimento com teclado (requer Android 11+)</item>
|
||||
<item>Permitir mudança de idioma do app nas configurações</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Adicionado suporte ao formato de arquivo KDBX 4.1, introduzido no KeePass 2.48</item>
|
||||
<item>Adicionado diálogo para configurar as opções TOTP para as entradas</item>
|
||||
@@ -695,7 +710,7 @@
|
||||
<item>Melhora do diálogo de teclado no Android 9+</item>
|
||||
<item>Mudança nas associações de arquivo do app para evitar algumas associações desnecessárias</item>
|
||||
<item>Certifique-se que o texto da senha não está oculto atrás do icone de olho</item>
|
||||
<item>Mudar comportamento do autocompletar para avisar quando estiver preenchendo credenciais de um domínio para um aplicativo não reconhecido. </item>
|
||||
<item>Mudar comportamento do Autopreenchimento para avisar quando estiver preenchendo credenciais de um domínio para um aplicativo não reconhecido. </item>
|
||||
<item>Atualizado para a biblioteca FTP</item>
|
||||
<item>Correções para potenciais falhas do aplicativo</item>
|
||||
<item>Mais correções menores</item>
|
||||
@@ -1022,13 +1037,13 @@ Lançamento público inicial
|
||||
</string-array>
|
||||
<string name="ClearClipboardWarning">Certifique-se de que isto funciona no seu sistema e considere usar o teclado embutido se não.</string>
|
||||
<string name="PluginDescription">Descrição fornecida pelo plugin:</string>
|
||||
<string name="autofill_hint">Keepass2Android suporta o preenchimento automático do sistema Android mas parece que você ainda não o ativou.</string>
|
||||
<string name="autofill_enable">Ativar preenchimento automático</string>
|
||||
<string name="autofill_enable_failed">Desculpe, parece que seu dispositivo não tem suporte para abrir as configurações de dentro do aplicativo. Acesse manualmente as configurações do sistema para habilitar o serviço de preenchimento automático.</string>
|
||||
<string name="show_autofill_help">Mostrar ajuda de preenchimento automático</string>
|
||||
<string name="autofill_hint">Keepass2Android suporta o Autopreenchimento do sistema Android, mas parece que você ainda não o ativou.</string>
|
||||
<string name="autofill_enable">Habilitar Autopreenchimento</string>
|
||||
<string name="autofill_enable_failed">Desculpe, parece que seu dispositivo não tem suporte para abrir as configurações de dentro do aplicativo. Acesse manualmente as configurações do sistema para habilitar o serviço de Autopreenchimento.</string>
|
||||
<string name="show_autofill_help">Mostrar ajuda com Autopreenchimento </string>
|
||||
<string name="autofill_sign_in_prompt">Preencher com Keepass2Android</string>
|
||||
<string name="autofill_disable">Ativar auto-preenchimento para %1$s</string>
|
||||
<string name="autofill_enable_for">Desativar auto-preenchimento para %1$s</string>
|
||||
<string name="autofill_disable">Desabilitar auto-preenchimento para %1$s</string>
|
||||
<string name="autofill_enable_for">Habilitar auto-preenchimento para %1$s</string>
|
||||
<string name="invalid_link_association">Não foi possível associar o domínio %1$s com a aplicação %2$s</string>
|
||||
<string name="enable_fingerprint_hint">Keepass2Android detectou hardware de biométrico. Deseja ativar o Desbloqueio Biométrico para esta base de dados?</string>
|
||||
<string name="understand">Entendido</string>
|
||||
@@ -1042,7 +1057,7 @@ Lançamento público inicial
|
||||
<string name="emergency_infotext_head">Está preparado para casos de emergência?</string>
|
||||
<string name="emergency_infotext_main">Já pensou o que acontece se você não for capaz de acessar seu banco de dados de senhas? Se você tiver um acidente? É uma boa prática transmitir sua chave mestra para uma pessoa de confiança para casos de emergência. Caso contrário, ninguém terá acesso a suas senhas.</string>
|
||||
<string name="no_secure_display">A tela válida atualmente não está marcada como segura. Isto significa que capturas de tela podem ser feitas por outros apps. Keepass2Android está configurado para exibir informações confidenciais somente em telas seguras. Por favor, altere para uma tela segura (por exemplo, desconectando um monitor HDMI) ou altere as configurações do aplicativo.</string>
|
||||
<string name="disable_secure_screen_check">Desativar esta mensagem</string>
|
||||
<string name="disable_secure_screen_check">Desabilitar esta mensagem</string>
|
||||
<string name="switch_ime_text">Por favor, ative o teclado Keepass2Android.</string>
|
||||
<string name="switch_ime_reopen">Tentar novamente</string>
|
||||
<string name="AutofillWarning_title">Alerta de Segurança: Link de app/domínio não reconhecido</string>
|
||||
|
@@ -93,7 +93,7 @@
|
||||
<string name="enable_fingerprint_unlock">Ativar desbloquear biométrico total</string>
|
||||
<string name="enable_fingerprint_quickunlock">Permitir utilizar o desbloquear biométrico para o desbloqueio rápido</string>
|
||||
<string name="fingerprint_unlock_failed">Desbloqueio por impressão digital falhou: a chave para desencriptação foi invalidada pelo sistema Android. Isto costuma acontecer se for adicionada uma nova impressão digital ao sistema ou se os parâmetros de segurança forem alterados.</string>
|
||||
<string name="fingerprint_disabled_wrong_masterkey">Desbloqueio da base de dados falhado: Chave composta inválida. O desbloqueio por impressão digital foi desativado porque aparentemente a chave mestra arquivada já não é válida.</string>
|
||||
<string name="fingerprint_disabled_wrong_masterkey">Desbloqueio da base de dados falhado: chave composta inválida. O desbloqueio por impressão digital foi desativado porque aparentemente a chave mestra arquivada já não é válida.</string>
|
||||
<string name="fingerprint_reenable">Por favor, ligue novamente o destrancar através de impressão digital para a nova palavra-passe mestra.</string>
|
||||
<string name="fingerprint_reenable2">Por favor desbloqueie com sua palavra-passe e torne a ativar o desbloqueio por impressão digital nas configurações da base de dados.</string>
|
||||
<string name="FingerprintInitFailed">Falha ao inicializar a autenticação biométrica. </string>
|
||||
@@ -170,7 +170,7 @@
|
||||
<string name="maskpass_title">Esconder palavra-passe</string>
|
||||
<string name="maskpass_summary">Esconder palavra-passe por defeito</string>
|
||||
<string name="menu_about">Sobre</string>
|
||||
<string name="menu_change_key">Alterar a palavra-passe mestra</string>
|
||||
<string name="menu_change_key">Alterar a chave mestra</string>
|
||||
<string name="menu_copy_pass">Copiar palavra-passe</string>
|
||||
<string name="menu_copy_user">Copiar utilizador</string>
|
||||
<string name="menu_copy_totp">Copiar TOTP</string>
|
||||
@@ -206,7 +206,7 @@
|
||||
<string name="omitbackup_summary">Omitir o grupo \'Cópia de segurança\' e \' Reciclagem\' dos resultados de pesquisa</string>
|
||||
<string name="pass_filename">Nome do ficheiro da base de dados do KeePass</string>
|
||||
<string name="password_title">Introduza a palavra-passe da base de dados</string>
|
||||
<string name="master_key_type">Selecionar o tipo de palavra-passe mestra:</string>
|
||||
<string name="master_key_type">Selecionar o tipo de chave mestra:</string>
|
||||
<string name="progress_create">A criar a nova base de dados…</string>
|
||||
<string name="create_database">Criar base de dados</string>
|
||||
<string name="progress_title">A processar…</string>
|
||||
@@ -500,7 +500,7 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Se não quiser dar acesso completo do Dropbox ao KP2A, pode selecionar esta opção. Ele irá solicitar apenas o acesso à pasta Apps/Keepass2Android. Isto é especialmente adequado ao criar uma nova base de dados. Se já tiver uma base de dados, toque nesta opção para criar a pasta, em seguida, coloque o ficheiro dentro da pasta (a partir do seu PC) e em seguida, selecione esta opção novamente para abrir o ficheiro.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Este tipo de armazenamento só irá solicitar acesso à pasta \"Aplicações/Keepass2Android\". Se quiser usar a base de dados existente da sua conta PCloud, por favor certifique-se que o ficheiro é colocado nesta pasta.</string>
|
||||
<string name="filestoragehelp_pcloud">Este tipo de armazenamento só irá solicitar acesso à pasta pCloud \"Aplicações/Keepass2Android\". Se quiser usar a base de dados existente da sua conta pCloud, por favor certifique-se que o ficheiro é colocado nesta pasta pCloud.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Todos os ficheiros (incluindo partilhados)</string>
|
||||
@@ -518,7 +518,7 @@
|
||||
<string name="help_master_password">A sua base de dados é encriptada com a palavra-passe que inserir aqui. Escolha uma palavra-passe forte para manter a sua de dados protegida! Dica: componha uma frase ou duas e use as primeiras letras das palavras como palavra-passe. Inclua marcas de pontuação também.</string>
|
||||
<string name="hint_master_password">Selecione uma palavra-passe mestra para proteger a sua base de dados:</string>
|
||||
<string name="key_file">Ficheiro-chave</string>
|
||||
<string name="help_key_file">Um ficheiro-chave é basicamente uma palavra-passe armazenada em num ficheiro. Os ficheiros-chave são tipicamente mais fortes que as palavras-passe mestras, porque a chave pode ser muito mais complexa; contudo também é mais difícil mantê-los em segredo. Se armazenar a sua base de dados na nuvem, não armazene o ficheiro-chave lá também! Isto tornaria-o completamente inútil! Importante: não altere o conteúdo do ficheiro-chave após a criação da base de dados!</string>
|
||||
<string name="help_key_file">Um ficheiro-chave é basicamente uma palavra-passe armazenada num ficheiro. Os ficheiros-chave são tipicamente mais fortes que as palavras-passe mestras, porque a chave pode ser muito mais complexa; contudo também é mais difícil mantê-los em segredo. Se armazenar a sua base de dados na nuvem, não armazene o ficheiro-chave lá também! Isto tornaria-o completamente inútil! Importante: não altere o conteúdo do ficheiro-chave após a criação da base de dados!</string>
|
||||
<string name="hint_key_file">Escolha se quer utilizar um ficheiro-chave para além da sua palavra-passe mestra:</string>
|
||||
<string name="use_key_file">Utilizar ficheiro-chave</string>
|
||||
<string name="error_adding_keyfile">Erro ao adicionar o ficheiro-chave!</string>
|
||||
@@ -661,6 +661,7 @@
|
||||
<string name="EntryChannel_name">Notificações de entrada</string>
|
||||
<string name="EntryChannel_desc">Notificação para simplificar o acesso à entrada selecionada.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Fechar base de dados após três tentativas de desbloqueio biométrico falhadas.</string>
|
||||
<string name="WarnFingerprintInvalidated">Aviso! A autenticação biométrica pode ser invalidada pelo Android, por exemplo, depois de adicionar uma nova impressão digital nas configurações do seu dispositivo. Certifique-se que sabe como desbloquear com a sua palavra-passe mestra!</string>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Adicionado suporte para o formato de ficheiro KDBX 4.1 introduzido no KeePass 2.48</item>
|
||||
<item>Adicionado diálogo para configurar o TOTP em entradas</item>
|
||||
@@ -668,10 +669,10 @@
|
||||
<item>Melhorias no preenchimento automático (popup fixo não mostrado no Chrome, melhor suporte ao subdomínio)</item>
|
||||
<item>Melhorias na implementação do OneDrive: sem limite de tamanho, sem mais solicitações de autenticação supérfluas</item>
|
||||
<item>Adicionada opção para selecionar o tema claro/escuro nas configurações do sistema, incluindo perfis noturnos. Requer Android 10+</item>
|
||||
<item>Update Dropbox implementation to support new authentication method.</item>
|
||||
<item>Newly setup fingerprint unlock will be invalidated after adding a fingerprint in system settings for increased security.</item>
|
||||
<item>Allow to open files through system file picker, ignoring the read-only flag</item>
|
||||
<item>Allow to start moving entries from the entry view menu</item>
|
||||
<item>Atualizada a implementação do Dropbox para suportar o novo método de autenticação.</item>
|
||||
<item>O desbloqueio de nova impressão digital será invalidado após adicionar uma impressão digital nas configurações do sistema para maior segurança.</item>
|
||||
<item>Permitir abrir ficheiros através do gestor de ficheiros do sistema, ignorando a indicação de apenas para leitura</item>
|
||||
<item>Permitir começar a mover as entradas do menu de visualização de entradas</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Adicionado suporte para o novo formato de ficheiro-chave introduzido no Keepass 2.47</item>
|
||||
@@ -806,17 +807,18 @@
|
||||
* Correções (no teclado embutido ao selecionar ícones)\n
|
||||
* Incluída opção de enviar relatórios de erros\n
|
||||
* Acrescentadas mensagens de ajuda em vários pontos\n </string>
|
||||
<string name="ChangeLog_0_9_9">Versão 0.9.9\n
|
||||
* Interface do utilizador completamente redesenhada. Muito obrigado a Stefano Pignataro ( http://www.spstudio.at) pela sua ajuda!\n
|
||||
<string name="ChangeLog_0_9_9">Versão 0.9.9\n
|
||||
* Interface do utilizador completamente redesenhada. Muito obrigado a Stefano Pignataro (http://www.spstudio.at) pela sua ajuda!\n
|
||||
* Permitir adicionar ícones personalizados\n
|
||||
* Suporte para o modo multi-janelas em dispositivos Samsung\n
|
||||
* O número padrão de etapas para encriptação de novas bases de dados aumentou\n
|
||||
* Verificar chaves duplicadas de campos adicionais para evitar a perda de dados\n</string>
|
||||
<string name="ChangeLog_0_9_9c">Versão 0.9.9c \n
|
||||
* o tema escuro está de volta \n
|
||||
* pode-se instalar outros pacotes de ícones (o antigo estilo de ícones Windows estão disponíveis na Play Store) \n
|
||||
* acrescentada pergunta de confirmação quando eliminar elementos sem envio para lixeira\n
|
||||
* correções (visualização incorreta da codificação secreta da palavra-passe de uso único (OTP), ícone da aplicação errado em alguns lugares) \n
|
||||
* Verificar chaves duplicadas de campos adicionais para evitar a perda de dados\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9c"> Versão 0.9.9c\n
|
||||
* o tema escuro está de volta\n
|
||||
* pode-se instalar outros pacotes de ícones (o antigo estilo de ícones Windows estão disponíveis na Play Store)\n
|
||||
* acrescentada pergunta de confirmação quando eliminar elementos sem envio para lixeira\n
|
||||
* correções (visualização incorreta da codificação secreta da palavra-passe de uso único (OTP), ícone da aplicação errado em alguns lugares)\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8b">Versão 0.9.8b\n* Falhas corrigidas (a operação de guardar estava a falhar em algumas bases de dados, a exportação para o dispositivo local estava falhar, a seleção de algumas opções de preferência encerrava a aplicação)\n</string>
|
||||
<string name="ChangeLog_0_9_8"> Versão 0.9.8\n
|
||||
@@ -1001,13 +1003,13 @@ Lançamento público inicial
|
||||
</string-array>
|
||||
<string-array name="password_modes">
|
||||
<item>Palavra-passe apenas</item>
|
||||
<item>Palavra-passe + Ficheiro-chave</item>
|
||||
<item>Palavra-passe + ficheiro-chave</item>
|
||||
<item>Palavra-passe + OTP</item>
|
||||
<item>Palavra-passe + OTP secreto (modo de recuperação)</item>
|
||||
<item>Palavra-passe + Desafio-Resposta</item>
|
||||
<item>Palavra-passe + Desafio-Resposta secreto (modo de recuperação)</item>
|
||||
<item>Palavra-passe e resposta de desafio para o Keepass XC</item>
|
||||
<item>Palavra-passe + ficheiro-chave + reposta de desafio para o Keepass XC</item>
|
||||
<item>Palavra-passe + desafio-resposta</item>
|
||||
<item>Palavra-passe + desafio-resposta secreto (modo de recuperação)</item>
|
||||
<item>Palavra-passe + desafio-resposta para o Keepass XC</item>
|
||||
<item>Palavra-passe + ficheiro-chave + desafio-resposta para o Keepass XC</item>
|
||||
</string-array>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>Palavra-passe</item>
|
||||
@@ -1036,10 +1038,10 @@ Lançamento público inicial
|
||||
Não há forma de fazer \"reset\" à chave mestra.</string>
|
||||
<string name="masterkey_infotext_fingerprint_note">Note que o desbloqueio por impressão digital funciona ao guardar a sua chave mestra no armazenamento seguro do Android. Este armazenamento pode ser apagado pelo Android a qualquer altura, por exemplo se adicionar uma nova impressão digital ao sistema. Portanto não dependa apenas da sua impressão digital, lembre-se sempre da sua chave mestra, por favor!</string>
|
||||
<string name="backup_infotext_head">Fez cópia de segurança da sua base de dados?</string>
|
||||
<string name="backup_infotext_main">Keepass2Android guarda as suas passwords num ficheiro numa localização do seu dispositivo à sua escolha. Tem a certeza que consegue aceder ao ficheiro caso o seu telemóvel seja perdido ou roubado, ou caso o ficheiro seja destruído ou apagado? Por favor, tenha a certeza que tem uma cópia de segurança atualizada num local seguro!</string>
|
||||
<string name="backup_infotext_main">Keepass2Android guarda as suas palavras-passe num ficheiro numa localização do seu dispositivo à sua escolha. Tem a certeza que consegue aceder ao ficheiro caso o seu telemóvel seja perdido ou roubado, ou caso o ficheiro seja destruído ou eliminado? Por favor, tenha a certeza que tem uma cópia de segurança atualizada num local seguro!</string>
|
||||
<string name="backup_infotext_note">Para criar uma cópia de segurança agora, por favor ir a %1$s > %2$s > %3$s.</string>
|
||||
<string name="emergency_infotext_head">Está preparado para casos de emergência?</string>
|
||||
<string name="emergency_infotext_main">Já considerou em o que acontece caso você não consiga aceder à sua base de dados? E se tem um acidente? É uma boa prática dar a sua senha mestra a alguém de sua confiança para situações de emergência. Ninguém vai conseguir aceder às suas passwords de outra forma.</string>
|
||||
<string name="emergency_infotext_main">Já pensou no que acontece caso não consiga aceder à sua base de dados? E se tem um acidente? É uma boa prática dar a sua chave mestra a alguém da sua confiança para situações de emergência. Caso contrário, ninguém irá conseguir aceder às suas palavras-passe.</string>
|
||||
<string name="no_secure_display">O ecrã atual não está marcado como seguro. Isso significa que capturas de ecrã podem ser feitas por outras aplicações. Keepass2Android está configurado para exibir informações confidenciais apenas em ecrãs seguros. Por favor, altere para um ecrã seguro (por exemplo, desconectando um monitor HDMI) ou altere as configurações da aplicação.</string>
|
||||
<string name="disable_secure_screen_check">Desativar esta mensagem</string>
|
||||
<string name="switch_ime_text">Por favor, ative o teclado Keepass2Android.</string>
|
||||
|
@@ -500,7 +500,7 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Если вы не хотите предоставлять KP2A доступ к вашему полному Dropbox, вы можете выбрать эту опцию. Он будет запрашивать только доступ к папке Apps/Keepass2Android. Это особенно подходит при создании новой базы данных. Если у вас уже есть база данных, нажмите эту опцию, чтобы создать папку, затем поместите файл в папку (с компьютера), а затем снова выберите эту опцию для открытия файла.</string>
|
||||
<string name="filestoragename_gdrive">Диск Google</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Этот тип хранения будет запрашивать доступ только к папке \"Приложения/Keepass2Android\". Если вы хотите использовать существующую базу данных из вашей учетной записи PCloud, пожалуйста, убедитесь, что файл помещен в эту папку.</string>
|
||||
<string name="filestoragehelp_pcloud">Этот тип хранилища запрашивает доступ только к папке pCloud «Приложения/Keepass2Android». Если вы хотите использовать существующую базу данных из вашей учетной записи pCloud, пожалуйста, убедитесь, что файл размещен в этой папке pCloud.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Все файлы и общие файлы</string>
|
||||
@@ -659,6 +659,7 @@
|
||||
<string name="EntryChannel_name">Уведомление о записи</string>
|
||||
<string name="EntryChannel_desc">Уведомление для упрощенного доступа к выбранной в данный момент записи.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Закрыть базу данных после трёх неудачных попыток биометрической разблокировки.</string>
|
||||
<string name="WarnFingerprintInvalidated">Внимание! Биометрическая аутентификация может быть аннулирована через Android, напр. после добавления нового отпечатка пальца в настройках устройства. Убедитесь, что вы всегда знаете, как разблокировать с помощью мастер-пароля!</string>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Добавлена поддержка формата файлов KDBX 4.1, представленного в KeePass 2.48</item>
|
||||
<item>Добавлен диалог настройки параметров TOTP для записей</item>
|
||||
@@ -666,10 +667,10 @@
|
||||
<item>Улучшения в автозаполнении (исправлено всплывающее окно, не отображающееся в Chrome, улучшена поддержка поддоменов)</item>
|
||||
<item>Улучшение реализации OneDrive: нет больше ограничений по размеру, больше нет лишних запросов аутентификации</item>
|
||||
<item>Добавлена возможность выбора светлого/темного оформления в настройках системы, включая ночные планы, требуется Android 10+</item>
|
||||
<item>Update Dropbox implementation to support new authentication method.</item>
|
||||
<item>Newly setup fingerprint unlock will be invalidated after adding a fingerprint in system settings for increased security.</item>
|
||||
<item>Allow to open files through system file picker, ignoring the read-only flag</item>
|
||||
<item>Allow to start moving entries from the entry view menu</item>
|
||||
<item>Обновление реализации Dropbox, чтобы поддержать новый метод аутентификации.</item>
|
||||
<item>Новые настройки разблокировки отпечатка пальца будут аннулированы после добавления отпечатка пальца в настройках системы для повышенной безопасности.</item>
|
||||
<item>Открывать файлы через средство выбора системных файлов, игнорируя флаг только для чтения</item>
|
||||
<item>Позволяет начать перемещение записей из меню просмотра записей</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Добавлена поддержка нового формата ключевого файла, представленного в Keepass 2.47</item>
|
||||
|
@@ -71,6 +71,7 @@
|
||||
<string name="copy_password">Heslo skopírované do schránky</string>
|
||||
<string name="copy_totp">Vyberte na skopírovanie jednorazového hesla do schránky</string>
|
||||
<string name="available_through_keyboard">Záznam je dostupný cez klávesnicu KP2A</string>
|
||||
<string name="app_language_pref_title">Jazyk aplikácie</string>
|
||||
<string name="entry_is_available">je dostupný</string>
|
||||
<string name="not_possible_im_picker">Nemožno otvoriť dialóg pre výber metódy vstupu. Prosím aktivujte klávesnicu manuálne.</string>
|
||||
<string name="please_activate_keyboard">Prosím aktivujte klávesnicu Keepass2Android v nastaveniach systému.</string>
|
||||
@@ -82,6 +83,7 @@
|
||||
<string name="disclaimer_formal">Keepass2Android je poskytovaný BEZ AKEJKOĽVEK ZÁRUKY; Toto je voľne dostupný softvér a môžete ho redistribuovať za podmienok licencie GPL verzie 2 alebo novšej.</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">Kopírovať do schránky</string>
|
||||
<string name="SystemLanguage">Jazyk systému</string>
|
||||
<string name="fingerprint_description">Pre pokračovanie je nutné overiť totožnosť</string>
|
||||
<string name="fingerprint_fatal">Nemožno nastaviť biometrické odomykanie:</string>
|
||||
<string name="fingerprint_not_recognized">Biometrická autentifikácia zlyhala. Skúste to ešte raz</string>
|
||||
@@ -290,6 +292,9 @@
|
||||
<string name="RememberRecentFiles_summary">Zapamätať si naposledy otvorené databázy a zobraziť ich na obrazovke pre otvorenie databázy.</string>
|
||||
<string name="NoDalVerification_title">Žiadne overovanie DAL</string>
|
||||
<string name="NoDalVerification_summary">Vypne kontrolu, či sa zhoduje doména a balík aplikácie</string>
|
||||
<string name="InlineSuggestions_title">Integrácia s klávesnicou</string>
|
||||
<string name="InlineSuggestions_summary">Zobrazuje návrhy automatického dopĺňania ako vložené možnosti na klávesnici (ak to metóda vstupu podporuje)</string>
|
||||
<string name="requires_android11">Vyžaduje Android 11 alebo novší</string>
|
||||
<string name="kp2a_findUrl">Nájsť heslo</string>
|
||||
<string name="excludeExpiredEntries">Vylúčiť expirované záznamy</string>
|
||||
<string name="search_options">Možnosti</string>
|
||||
@@ -499,8 +504,9 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (priečinok KP2A)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">Túto voľbu môžete aktivovať ak udelíte KP2A prístup do celého Dropboxu. Vyžaduje sa prístup iba do priečinka Apps/Keepass2Android. Je to osobitne vhodné pri vytváraní novej databázy. Ak už máte databázu, tak aktivovaním tejto voľby vytvoríte priečinok, potom premiestnite súbor do priečinka (zo svojho PC) a potom znovu aktivujte voľbu, pre otvorenie súboru.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragehelp_gdrive">Poznámka: Požiadal som o overenie aplikácie spoločnosťou Google, ale už niekoľko mesiacov sa nič nestalo. Ak sa vám zobrazí hlásenie, že aplikácia je zablokovaná, pretože nie je overená, použite namiesto tejto možnosti prehliadač súborov Android – Disk Google.</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Tento typ úložiska vyžaduje len prístup do priečinka \"Aplikácie/Keepass2Android\". Ak chcete použiť existujúcu databázu z vášho konta PCloud, prosím uistite sa, že súbor je umiestnený v tomto priečinku.</string>
|
||||
<string name="filestoragehelp_pcloud">Tento typ uloženia vyžaduje len prístup k priečinku pCloud \"Aplikácie/Keepass2Android\". Ak chcete použiť existujúcu databázu z konta pCloud, prosím uistite sa, že súbor je umiestnený v priečinku pCloud.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Všetky súbory a zdieľané súbory</string>
|
||||
@@ -661,6 +667,14 @@
|
||||
<string name="EntryChannel_name">Notifikácie záznamu</string>
|
||||
<string name="EntryChannel_desc">Notifikácia na zjednodušenie prístupu k práve vybranému záznamu.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Zavrieť databázu po troch neúspešných odomykaniach s biometriou</string>
|
||||
<string name="WarnFingerprintInvalidated">Varovanie! Biometrická autentifikácia môže byť zneplatnená systémom Android, nap. po pridaní nového odtlačku prsta do nastavení zariadenia. Vždy sa uistite, že viete ako odomknúť zariadenia primárnym heslom.</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Opravte miznúcu výzvu na automatické dopĺňanie vo Firefoxe</item>
|
||||
<item>Integrujte návrhy automatického dopĺňania s klávesnicou (vyžaduje Android 11+)</item>
|
||||
<item>Povoliť zmenu jazyka aplikácie v nastaveniach</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Pridaná podpora pre formát súboru KDBX 4.1, zavedené v KeePass 2.48</item>
|
||||
<item>Pridaný dialóg na konfigurovanie nastavení TOTP pre záznamy</item>
|
||||
@@ -668,10 +682,10 @@
|
||||
<item>Vylepšenia automatického dopĺňania (opravené vyskakovacie okno, ktoré sa nezobrazovalo v Chrome; lepšia podpora subdomény)</item>
|
||||
<item>Vylepšenia pre implementáciu OneDrive: už žiadny limit veľkosti, už žiadne zbytočné požiadavky na autentifikáciu</item>
|
||||
<item>Pridaná voľba pre výber svetlého/tmavého dizajnu zo systémových nastavení, vrátane plánov pre noc. Vyžaduje Android 10+</item>
|
||||
<item>Update Dropbox implementation to support new authentication method.</item>
|
||||
<item>Newly setup fingerprint unlock will be invalidated after adding a fingerprint in system settings for increased security.</item>
|
||||
<item>Allow to open files through system file picker, ignoring the read-only flag</item>
|
||||
<item>Allow to start moving entries from the entry view menu</item>
|
||||
<item>Aktualizovať implementáciu Dropbox pre podporu novej metódy autentifikácie.</item>
|
||||
<item>Kvôli zvýšeniu bezpečnosti je nové nastavenie odomknutia odtlačkom zneplatnené po pridaní odtlačku do nastavení systému.</item>
|
||||
<item>Povoliť otváranie súborov cez syst. výber, ignorovať atribút len na čítanie</item>
|
||||
<item>Povoliť spustenie presúvania záznamov z menu pre zobrazenie záznamu</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_08d">
|
||||
<item>Pridaná podpora pre nový súbor s kľúčom, zavedený v KeePass 2.47</item>
|
||||
|
@@ -71,6 +71,7 @@
|
||||
<string name="copy_password">Izberite, da kopirate geslo na odložišče</string>
|
||||
<string name="copy_totp">Izberite, da kopirate enkratno geslo na odložišče</string>
|
||||
<string name="available_through_keyboard">Vnos je na voljo preko tipkovnice K2PA</string>
|
||||
<string name="app_language_pref_title">Jezik aplikacije</string>
|
||||
<string name="entry_is_available">je na voljo</string>
|
||||
<string name="not_possible_im_picker">Pogovornega okna za izbiranje metode vnosa ni bilo mogoče odpreti. Ročno omogočite tipkovnico.</string>
|
||||
<string name="please_activate_keyboard">Omogočite tipkovnico Keepass2Android v svojih sistemskih nastavitvah.</string>
|
||||
@@ -82,6 +83,7 @@
|
||||
<string name="disclaimer_formal">Keepass2Android je brez VSAKRŠNE GARANCIJE; to je brezplačna programska oprema in lahko jo razširjate pod pogoji GPL-a različice 2 ali kasnejše.</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">Kopiraj na odložišče</string>
|
||||
<string name="SystemLanguage">Sistemski jezik</string>
|
||||
<string name="fingerprint_description">Prosimo, če se avtenticirate za nadaljevanje</string>
|
||||
<string name="fingerprint_fatal">Ni mogoče nastaviti Biometričnega odklepanja:</string>
|
||||
<string name="fingerprint_not_recognized">Biometrična avtentikacija je spodletela. Poskusite znova</string>
|
||||
@@ -290,6 +292,9 @@
|
||||
<string name="RememberRecentFiles_summary">Zapomni si nedavno odprte podatkovne zbirke in jih prikaži na zaslonu Odpri podatkovno zbirko.</string>
|
||||
<string name="NoDalVerification_title">Brez preverjanja DAL</string>
|
||||
<string name="NoDalVerification_summary">Onemogoči preverjanje, ali se paket domen in aplikacije ujemata</string>
|
||||
<string name="InlineSuggestions_title">Integracija s tipkovnico</string>
|
||||
<string name="InlineSuggestions_summary">Prikaže predloge samodejnega izpolnjevanja kot vgrajene možnosti na tipkovnici (če to podpira način vnosa)</string>
|
||||
<string name="requires_android11">Zahteva Android 11 ali novejši</string>
|
||||
<string name="kp2a_findUrl">Najdi geslo</string>
|
||||
<string name="excludeExpiredEntries">Izključi potekle vnose</string>
|
||||
<string name="search_options">Možnosti</string>
|
||||
@@ -499,8 +504,9 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (mapa KP2A)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">Če dostopa KP2A ne želite dati celemu Dropboxu, lahko izberete to možnost. Zahtevala bo samo dostop do mape Apps/Keepass2Android. To je posebej primerno ob ustvarjanju nove podatkovne zbirke. Če jo že imate, tapnite na to možnost, da ustvarite mapo, v njo vstavite svojo datoteko (iz računalnika) in ponovno izberete to možnost, da datoteko odprete.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragehelp_gdrive">Prosimo, upoštevajte: Zahtevali smo preverjanje aplikacije s strani Googla, vendar se že več mesecev ni zgodilo nič. Če vidite sporočilo, da je aplikacija blokirana, ker ni preverjena, namesto te možnosti uporabite brskalnik datotek za Android – Google Drive.</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Ta vrsta shranjevanja bo zahtevala dostop samo do mape »Aplikacije/ Keepass2Android«. Če želite uporabiti obstoječo bazo podatkov iz vašega PCloud računa, se prepričajte, da je datoteka v tej mapi.</string>
|
||||
<string name="filestoragehelp_pcloud">Ta vrsta shranjevanja bo zahtevala dostop samo do pCloud mape »Aplikacije/ Keepass2Android«. Če želite uporabiti obstoječo bazo podatkov iz vašega PCloud računa, se prepričajte, da je datoteka v pCloud mapi.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Moje datoteke in deljene datoteke</string>
|
||||
@@ -662,6 +668,13 @@
|
||||
<string name="EntryChannel_desc">Obvestilo o enostavnem dostopu do trenutno izbranega vnosa.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Zaprite bazo podatkov po treh neuspelih poskusih biometričnega odklepanja.</string>
|
||||
<string name="WarnFingerprintInvalidated">Opozorilo! Biometrično overjanje lahko Android razveljavi, npr. po dodajanju novega prstnega odtisa v nastavitvah naprave. Poskrbite, da boste vedno vedeli odkleniti z glavnim geslom!</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Popravljeno izginotje poziva za samodejno izpolnjevanje v Firefoxu</item>
|
||||
<item>Integracija predlogov za samodejno izpolnjevanje s tipkovnico (zahteva Android 11+)</item>
|
||||
<item>Dovoli spreminjanje jezika aplikacije v nastavitvah</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Dodana podpora za format datoteke KDBX 4.1, uvedena v KeePass 2.48</item>
|
||||
<item>Dodano pogovorno okno za nastavitev nastavitev TOTP za vnose</item>
|
||||
|
@@ -240,9 +240,10 @@
|
||||
<string name="sort_default">Behåll standardordning</string>
|
||||
<string name="special">Special</string>
|
||||
<string name="password_generation_profile">Profil</string>
|
||||
<string name="hint_wordseparator">Ordavgränsare</string>
|
||||
<string-array name="PasswordGeneratorModes">
|
||||
<item>Lösenord</item>
|
||||
<item>Passphrase</item>
|
||||
<item>Lösenordsfras</item>
|
||||
<item>Passphrase + Password</item>
|
||||
</string-array>
|
||||
<string name="custom_settings">Anpassade inställningar</string>
|
||||
@@ -323,6 +324,8 @@
|
||||
<string name="protection">Skyddat fält</string>
|
||||
<string name="add_binary">Bifoga fil</string>
|
||||
<string name="add_extra_string">Lägg till extra sträng</string>
|
||||
<string name="totp_secret_key">Hemlig nyckel</string>
|
||||
<string name="totp_length">Kodlängd</string>
|
||||
<string name="delete_extra_string">Ta bort extra sträng</string>
|
||||
<string name="database_loaded_quickunlock_enabled">%1$s: låst. Snabbupplåsning aktiverat.</string>
|
||||
<string name="database_loaded_unlocked">%1$s: upplåst.</string>
|
||||
@@ -481,7 +484,6 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Om du inte vill ge KP2A tillgång till din hela Dropbox, kan du välja detta alternativ. Den kommer då endast att begära tillgång till mappen Apps/Keepass2Android. Detta är särskilt lämpligt när du skapar en ny databas. Om du redan har en databas, klicka på detta alternativ för att skapa mappen, placera sedan filen i mappen (från datorn) och välj därefter alternativet igen för att öppna filen.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Denna lagringstyp kommer endast begära åtkomst till \"Applications/Keepass2Android\" mappen. Om du vill använda en befintlig databas i ditt PCloud-konto, vänligen kontrollera att filen är placerad i den mappen.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Alla filer och utdelade filer</string>
|
||||
|
@@ -475,7 +475,6 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">Dropbox heabınıza tam erişim vermek istemiyorsanız, bu seçeneği seçebilirsiniz. Keepass2Android sadece klasör erişimi isteyecek. Özellikle yeni bir veritabanı oluştururken bu uygundur. Bir veritabanınız varsa, klasör oluşturmak için bu seçeneği seçin ve dosyanızı oluşan klasöre taşıyın (bilgisayardan). Dosyayı açmak için bu seçeneği tekrar seçin.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Bu depolama türü yalnızca \"Uygulamalar/Keepass2Android\" klasörüne erişim ister. PCloud hesabınızdan mevcut bir veritabanını kullanmak istiyorsanız, lütfen dosyanın bu klasörde olduğundan emin olun.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Tüm dosyalar ve paylaşılan dosyalar</string>
|
||||
|
@@ -71,6 +71,7 @@
|
||||
<string name="copy_password">Копіювати пароль до буфера обміну</string>
|
||||
<string name="copy_totp">Оберіть для копії TOTP в буфер обміну</string>
|
||||
<string name="available_through_keyboard">Вхід доступний за допомогою клавіатури KP2A</string>
|
||||
<string name="app_language_pref_title">Мова застосунку</string>
|
||||
<string name="entry_is_available">доступно</string>
|
||||
<string name="not_possible_im_picker">Не вдалося відкрити діалогове вікно для вибору методу введення. Активуйте клавіатуру вручну.</string>
|
||||
<string name="please_activate_keyboard">Будь ласка, увімкніть клавіатуру Keepass2Android в налаштуваннях системи.</string>
|
||||
@@ -82,6 +83,7 @@
|
||||
<string name="disclaimer_formal">Keepass2Android поставляється БЕЗ ЖОДНИХ ГАРАНТІЙ; Це вільне програмне забезпечення і ви можете розповсюджувати його на умовах ліцензії GPL v2 або новішої.</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">Копіювати в буфер</string>
|
||||
<string name="SystemLanguage">Системна мова</string>
|
||||
<string name="fingerprint_description">Авторизуйтесь, щоб продовжити</string>
|
||||
<string name="fingerprint_fatal">Не вдається встановити біометричне розблокування:</string>
|
||||
<string name="fingerprint_not_recognized">Помилка біометричної автентифікації. Повторіть спробу</string>
|
||||
@@ -290,6 +292,9 @@
|
||||
<string name="RememberRecentFiles_summary">Пам\'ятати недавно відкриті бази даних і відображати їх на екрані відкриття бази даних.</string>
|
||||
<string name="NoDalVerification_title">Немає DAL перевірки</string>
|
||||
<string name="NoDalVerification_summary">Вимкнення перевірки, якщо збігаються домен і пакунок програми</string>
|
||||
<string name="InlineSuggestions_title">Інтегрувати до клавіатури</string>
|
||||
<string name="InlineSuggestions_summary">Показує пропозиції автозаповнення як вбудовану опцію в клавіатурі (якщо підтримується методом вводу)</string>
|
||||
<string name="requires_android11">Потрібна версія Android 11 або новіша</string>
|
||||
<string name="kp2a_findUrl">Знайти пароль</string>
|
||||
<string name="excludeExpiredEntries">Виключити прострочені елементи</string>
|
||||
<string name="search_options">Параметри</string>
|
||||
@@ -499,8 +504,9 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (папка KP2A)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">Якщо ви не хочете надавати доступ KP2A до всього сховища Dropbox, ви можете вибрати цю опцію. Вона запитає доступ лише до теки Apps/Keepass2Android. Це особливо зручно при створенні нової бази даних. Якщо у вас вже є база даних, виберіть цю опцію для створення теки, а потім розмістіть свій файл в цій теці (з комп\'ютера), після чого знову виберіть цю опцію для відкриття файлу.</string>
|
||||
<string name="filestoragename_gdrive">Диск Google</string>
|
||||
<string name="filestoragehelp_gdrive">Зверніть увагу: я вимагав затвердження застосунку у Google, але нічого не відбулося за місяці. Якщо ви бачите повідомлення, яке говорить, що програма заблокована, тому що вона не перевірена, будь ласка, використовуйте файловий браузер Android — Google Drive замість цієї опції.</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">Цей тип зберігання вимагатиме доступу лише до теки \"Applications/Keepass2Android\". Якщо ви хочете використовувати наявну базу даних з вашого облікового запису PCloud, переконайтеся, що файл розміщений у цій теці.</string>
|
||||
<string name="filestoragehelp_pcloud">Цей тип сховища вимагатиме доступу лише до теки \"Applications/Keepass2Android\" у pCloud. Якщо ви хочете використовувати наявну базу даних з вашого облікового запису pCloud, переконайтеся, що файл розміщений у цій теці pCloud.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Усі файли та спільні файли</string>
|
||||
@@ -662,6 +668,13 @@
|
||||
<string name="EntryChannel_desc">Сповіщення для простого доступу до обраного запису.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Закрити базу паролів після трьох невдалих спроб біометричного розблокування.</string>
|
||||
<string name="WarnFingerprintInvalidated">Увага! Біометрична автентифікація може бути скасована Android, наприклад після додавання нового відбитку пальця у налаштуваннях вашого пристрою. Переконайтеся, що ви завжди знаєте, як розблокувати за допомогою головного пароля!</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Виправлено зникання запиту автозаповнення у Firefox</item>
|
||||
<item>Інтеграція пропозицій автозаповнення до клавіатури (потрібен Android 11+)</item>
|
||||
<item>Дозволено змінювати мову застосунку в налаштуваннях</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Додано підтримку формату файлів KDBX 4.1, впровадженої в Keepass 2.48</item>
|
||||
<item>Додано діалогове вікно для налаштування параметрів TOTP для записів</item>
|
||||
|
@@ -479,7 +479,6 @@
|
||||
<string name="filestoragehelp_dropboxKP2A">使用此選項只請求「應用程式/Keepass2Android」 路徑的存取權,而非授予 KP2A 存取 Dropbox 全部空間的權限。這選項更適合新建資料庫。如果要存取現有資料庫,按一下此選項建立該資料夾,然後 (從您的個人電腦) 將資料庫檔案放在資料夾內,再點擊此選項打開檔案。</string>
|
||||
<string name="filestoragename_gdrive">Google 雲端硬碟</string>
|
||||
<string name="filestoragename_pcloud">pCloud</string>
|
||||
<string name="filestoragehelp_pcloud">這個儲存類型只會請求存取「Applications/Keepass2Android」資料夾。要使用現有資料庫,請確保其檔案置於該資料夾。</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">所有檔案與已共用檔案</string>
|
||||
|
@@ -71,6 +71,7 @@
|
||||
<string name="copy_password">复制密码到剪贴板</string>
|
||||
<string name="copy_totp">复制 TOTP 到剪贴板</string>
|
||||
<string name="available_through_keyboard">可通过 KP2A 键盘获得条目</string>
|
||||
<string name="app_language_pref_title">程序语言</string>
|
||||
<string name="entry_is_available">可用</string>
|
||||
<string name="not_possible_im_picker">无法打开输入法选择对话框,请手动激活键盘。</string>
|
||||
<string name="please_activate_keyboard">请在系统设置中启用 Keepass2Android 键盘。</string>
|
||||
@@ -79,9 +80,10 @@
|
||||
<string name="current_group_root">当前群组:根群组</string>
|
||||
<string name="database">数据库</string>
|
||||
<string name="digits">数字</string>
|
||||
<string name="disclaimer_formal">Keepass2Android 版权归 Philipp Crocoll;软件不带有绝对担保;是自由软件,您可在遵循 GPL 2 或者更高版本的情况下重新发布。</string>
|
||||
<string name="disclaimer_formal">Keepass2Android 不承担任何担保责任;这是自由软件,欢迎您在遵循 GPL 版本 2 或者以后版本许可证的情况下重新分发。</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">复制到剪贴板</string>
|
||||
<string name="SystemLanguage">系统语言</string>
|
||||
<string name="fingerprint_description">请验证以继续</string>
|
||||
<string name="fingerprint_fatal">无法设置指纹解锁:</string>
|
||||
<string name="fingerprint_not_recognized">生物鉴别失败。请重试</string>
|
||||
@@ -290,6 +292,9 @@
|
||||
<string name="RememberRecentFiles_summary">记忆最近打开过的数据库并在开启数据库屏显示。</string>
|
||||
<string name="NoDalVerification_title">无 DAL 验证</string>
|
||||
<string name="NoDalVerification_summary">不检查域名和应用程序包是否匹配</string>
|
||||
<string name="InlineSuggestions_title">与键盘集成</string>
|
||||
<string name="InlineSuggestions_summary">将自动填充建议显示为键盘中的内联选项(如果输入法支持的话)</string>
|
||||
<string name="requires_android11">需要 Android 11 或更高版本</string>
|
||||
<string name="kp2a_findUrl">找回密码</string>
|
||||
<string name="excludeExpiredEntries">排除过期的条目</string>
|
||||
<string name="search_options">选项</string>
|
||||
@@ -404,6 +409,8 @@
|
||||
<string name="DocumentAccessRevoked">Keepass2Android无法访问此文件。文件可能已被删除,或其访问权限受限。请使用“更改数据库”重新打开文件。</string>
|
||||
<string name="PreloadDatabaseEnabled_title">预载入数据库文件</string>
|
||||
<string name="PreloadDatabaseEnabled_summary">当输入密码项时启动后台加载或下载数据库文件。</string>
|
||||
<string name="SyncAfterQuickUnlock_title">快速解锁后同步</string>
|
||||
<string name="SyncAfterQuickUnlock_summary">使用 QuickUnlock 解锁后将数据库与远程文件同步.</string>
|
||||
<string name="AskOverwriteBinary">是否要以相同的名字覆盖现有的文件?</string>
|
||||
<string name="AskOverwriteBinary_title">覆盖已存在的文件?</string>
|
||||
<string name="AskOverwriteBinary_yes">覆盖</string>
|
||||
@@ -422,7 +429,7 @@
|
||||
<string name="AskDiscardChanges">确认放弃之前所做的更改?(保存按钮在顶部)</string>
|
||||
<string name="AskDiscardChanges_title">放弃更改?</string>
|
||||
<string name="suggest_improvements">建议或投票改进</string>
|
||||
<string name="rate_app">为本应用评分</string>
|
||||
<string name="rate_app">给本应用评分</string>
|
||||
<string name="translate_app">翻译 KP2A</string>
|
||||
<string name="AddingEntry">添加条目…</string>
|
||||
<string name="AddingGroup">添加群组…</string>
|
||||
@@ -471,7 +478,7 @@
|
||||
<string name="donate_question">今天是慕尼黑啤酒节!如果你喜欢 Keepass2Android:今天难道不是给我买一杯啤酒的好日子吗?</string>
|
||||
<string name="donate_bday_question">5月10日?今天是我的生日!如果您喜欢本应用,为什么不送我点生日问候与生日礼物?这会让我非常高兴!:-)</string>
|
||||
<string name="donate_missedbday_question">呃,您错过了我5月10日的生日!如果您喜欢本应用,为什么不送我点生日问候与生日礼物?还不算太晚,这会让我非常高兴!:-)</string>
|
||||
<string name="ok_donate">告诉我更多!</string>
|
||||
<string name="ok_donate">愿闻其详</string>
|
||||
<string name="no_thanks">不,我不是那么喜欢。</string>
|
||||
<string name="enter_http_login_title">输入 WebDav 登录数据:</string>
|
||||
<string name="hint_http_url">文件夹或文件 URL(如: mycloud.me.com/webdav/)</string>
|
||||
@@ -499,8 +506,9 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox(KP2A 文件夹)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">如果您不想让 KP2A 访问整个 Dropbox,您可以选中此选项。它将只有访问 Apps/Keepass2Android 文件夹的权限。特别适合创建一个新的数据库。如果您已经有一个数据库,触击此选项将创建该新文件夹,然后将您在电脑上的数据库文件放在此文件夹内,然后再选该选项,以打开该文件。</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragehelp_gdrive">请注意:我已经请求谷歌对应用程序进行验证,但几个月来什么都没有发生。如果你看到一条消息说应用程序被阻止,因为它没有验证,请使用 Android 文件浏览器 - 谷歌云盘而不是这个选项。</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">此存储类型仅请求访问“Applications / Keepass2Android”文件夹。 如果要使用PCloud帐户中的现有数据库,请确保将文件放在此文件夹中。</string>
|
||||
<string name="filestoragehelp_pcloud">这种存储类型只请求访问 pCloud 文件夹 \"Applications/Keepass2Android\"。如果您想使用 pCloud 帐户中现有的数据库,请确保文件被放置在这个 pCloud 文件夹中。</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">所有文件和共享文件</string>
|
||||
@@ -661,6 +669,13 @@
|
||||
<string name="EntryChannel_desc">选定条目快速进入通知</string>
|
||||
<string name="CloseDbAfterFailedAttempts">三次失败的生物识别解锁后关闭数据库。</string>
|
||||
<string name="WarnFingerprintInvalidated">警告!生物识别认证可能会被Android系统作废,例如在你的设备设置中添加一个新的指纹后。确保你总是知道如何用你的主密码解锁!</string>
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>修复了 Firefox 中自动填充提示消失的问题</item>
|
||||
<item>将自动填充建议与键盘集成 (需要 Android 11+)</item>
|
||||
<item>允许在设置中更改应用程序语言</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>添加对 KeePass 2.48 中引入的 KDBX 4.1 文件格式的支持</item>
|
||||
<item>添加了配置条目 TOTP 设置的对话框</item>
|
||||
|
@@ -51,6 +51,7 @@
|
||||
<!-- Preference settings -->
|
||||
<string name="AutoReturnFromQuery_key">AutoReturnFromQuery_key</string>
|
||||
<string name="NoDalVerification_key">NoDalVerification_key</string>
|
||||
<string name="InlineSuggestions_key">InlineSuggestions_key</string>
|
||||
<string name="algorithm_key">algorithm</string>
|
||||
<string name="app_key">app</string>
|
||||
<string name="app_timeout_key">app_timeout_key</string>
|
||||
@@ -66,6 +67,7 @@
|
||||
<string name="omitbackup_key">omitbackup</string>
|
||||
<string name="list_size_key">list_size</string>
|
||||
<string name="design_key">design_key</string>
|
||||
<string name="app_language_pref_key">app_language_pref_key</string>
|
||||
<string name="sort_key_old">sort_key</string>
|
||||
<string name="sort_key">sort_key_new</string>
|
||||
<string name="sortgroups_key">sortgroups_key</string>
|
||||
@@ -203,6 +205,8 @@
|
||||
<string name="PreloadDatabaseEnabled_key">PreloadDatabaseEnabled</string>
|
||||
<bool name="PreloadDatabaseEnabled_default">true</bool>
|
||||
|
||||
<string name="SyncAfterQuickUnlock_key">SyncAfterQuickUnlock_key</string>
|
||||
|
||||
<string name="ClearPasswordOnLeave_key">ClearPasswordOnLeave</string>
|
||||
|
||||
</resources>
|
@@ -81,6 +81,7 @@
|
||||
<string name="copy_password">Select to copy password to clipboard</string>
|
||||
<string name="copy_totp">Select to copy TOTP to clipboard</string>
|
||||
<string name="available_through_keyboard">Entry is available through KP2A Keyboard</string>
|
||||
<string name="app_language_pref_title">App language</string>
|
||||
<string name="entry_is_available">is available</string>
|
||||
<string name="not_possible_im_picker">Could not open dialog to select input method. Please activate keyboard manually.</string>
|
||||
<string name="please_activate_keyboard">Please enable the Keepass2Android keyboard in your system settings.</string>
|
||||
@@ -92,6 +93,7 @@
|
||||
<string name="disclaimer_formal">Keepass2Android comes with ABSOLUTELY NO WARRANTY; This is free software, and you are welcome to redistribute it under the conditions of the GPL version 2 or later.</string>
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">Copy to clipboard</string>
|
||||
<string name="SystemLanguage">System language</string>
|
||||
<string name="fingerprint_description">Please authenticate to continue</string>
|
||||
<string name="fingerprint_fatal">Cannot setup Biometric Unlock:</string>
|
||||
<string name="fingerprint_not_recognized">Biometric authentication failed. Try again</string>
|
||||
@@ -317,6 +319,10 @@
|
||||
<string name="RememberRecentFiles_summary">Remember recently opened databases and show them in the Open database screen.</string>
|
||||
<string name="NoDalVerification_title">No DAL verification</string>
|
||||
<string name="NoDalVerification_summary">Disables check if domain and app package match</string>
|
||||
|
||||
<string name="InlineSuggestions_title">Integrate with keyboard</string>
|
||||
<string name="InlineSuggestions_summary">Shows the autofill suggestions as inline options in the keyboard (if supported by the input method)</string>
|
||||
<string name="requires_android11">Requires Android 11 or later</string>
|
||||
|
||||
<string name="kp2a_findUrl">Find password</string>
|
||||
<string name="excludeExpiredEntries">Exclude expired entries</string>
|
||||
@@ -467,6 +473,9 @@
|
||||
<string name="PreloadDatabaseEnabled_title">Pre-load database file</string>
|
||||
<string name="PreloadDatabaseEnabled_summary">Start background loading or downloading of the database file during password entry.</string>
|
||||
|
||||
<string name="SyncAfterQuickUnlock_title">Sync after QuickUnlock</string>
|
||||
<string name="SyncAfterQuickUnlock_summary">Synchronize database with remote file after unlocking with QuickUnlock.</string>
|
||||
|
||||
<string name="AskOverwriteBinary">Do you want to overwrite the existing binary with the same name?</string>
|
||||
<string name="AskOverwriteBinary_title">Overwrite existing binary?</string>
|
||||
<string name="AskOverwriteBinary_yes">Overwrite</string>
|
||||
@@ -585,6 +594,7 @@
|
||||
<string name="filestoragename_dropboxKP2A">Dropbox (KP2A folder)</string>
|
||||
<string name="filestoragehelp_dropboxKP2A">If you do not want to give KP2A access to your full Dropbox, you may select this option. It will request only access to the folder Apps/Keepass2Android. This is especially suited when creating a new database. If you already have a database, select this option to create the folder, then place your file inside the folder (from your PC) and then select this option again for opening the file.</string>
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragehelp_gdrive">Please note: I have requested verification of the app by Google, but nothing has happened since months. If you see a message saying that the app is blocked because it is not verified, please use Android filebrowser - Google Drive instead of this option.</string>
|
||||
<string name="filestoragename_pcloud">PCloud</string>
|
||||
<string name="filestoragehelp_pcloud">This storage type will only request access to the pCloud folder "Applications/Keepass2Android". If you want to use an existing database from your pCloud account, please make sure the file is placed in this pCloud folder.</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
@@ -816,6 +826,14 @@
|
||||
<string name="CloseDbAfterFailedAttempts">Close database after three failed biometric unlock attempts.</string>
|
||||
<string name="WarnFingerprintInvalidated">Warning! Biometric authentication can be invalidated by Android, e.g. after adding a new fingerprint in your device settings. Make sure you always know how to unlock with your master password!</string>
|
||||
|
||||
<string-array name="ChangeLog_1_09b">
|
||||
<item>Fix disappearing autofill prompt in Firefox</item>
|
||||
<item>Integrate autofill suggestions with keyboard (requires Android 11+)</item>
|
||||
<item>Allow to change app language in settings</item>
|
||||
<item>Add option to synchronize database after QuickUnlock</item>
|
||||
<item>Bug fix: Do not make filenames lowercase when saving to Dropbox</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
<string-array name="ChangeLog_1_09a">
|
||||
<item>Added support for KDBX 4.1 file format introduced in KeePass 2.48</item>
|
||||
|
@@ -38,7 +38,7 @@
|
||||
<item name="android:textSize">12sp</item>
|
||||
</style>
|
||||
<style name="InfoHeader">
|
||||
<item name="android:drawableBottom">@drawable/section_header</item>
|
||||
<item name="android:drawableBottom">@drawable/section_header</item>
|
||||
<item name="android:drawablePadding">2dp</item>
|
||||
<item name="android:layout_marginLeft">0dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<autofill-service
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:supportsInlineSuggestions="true"
|
||||
>
|
||||
<compatibility-package
|
||||
android:name="com.android.chrome"
|
||||
@@ -43,10 +44,10 @@
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="org.mozilla.firefox"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
android:maxLongVersionCode="2015836711"/>
|
||||
<compatibility-package
|
||||
android:name="org.mozilla.firefox_beta"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
android:maxLongVersionCode="2015849447"/>
|
||||
<compatibility-package
|
||||
android:name="org.mozilla.fenix"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
@@ -62,6 +63,12 @@
|
||||
<compatibility-package
|
||||
android:name="com.brave.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.brave.browser_beta"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.brave.browser_nightly"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.google.android.apps.chrome"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
|
@@ -280,6 +280,12 @@
|
||||
android:dialogTitle="@string/design_title"
|
||||
android:defaultValue="@string/design_default"/>
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/app_language_pref_key"
|
||||
android:title="@string/app_language_pref_title"
|
||||
android:dialogTitle="@string/app_language_pref_title"
|
||||
/>
|
||||
|
||||
|
||||
<CheckBoxPreference
|
||||
android:enabled="true"
|
||||
@@ -404,11 +410,6 @@
|
||||
|
||||
</PreferenceScreen>
|
||||
|
||||
<Preference android:title="@string/AccServiceAutoFill_prefs" >
|
||||
<intent android:action="android.intent.action.VIEW"
|
||||
android:data="https://philippc.github.io/keepass2android/AccServiceAutoFill.html" />
|
||||
</Preference>
|
||||
|
||||
<PreferenceScreen
|
||||
android:key="@string/AutoFill_prefs_screen_key"
|
||||
android:title="@string/AutoFill_prefs"
|
||||
@@ -439,6 +440,14 @@
|
||||
android:title="@string/NoDalVerification_title"
|
||||
android:key="@string/NoDalVerification_key" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:enabled="true"
|
||||
android:persistent="true"
|
||||
android:summary="@string/InlineSuggestions_summary"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/InlineSuggestions_title"
|
||||
android:key="@string/InlineSuggestions_key" />
|
||||
|
||||
<keepass2android.AutofillDisabledQueriesPreference
|
||||
android:title="@string/AutofillDisabledQueriesPreference_title"
|
||||
android:summary="@string/AutofillDisabledQueriesPreference_summary"
|
||||
@@ -558,7 +567,15 @@
|
||||
android:defaultValue="@bool/PreloadDatabaseEnabled_default"
|
||||
android:title="@string/PreloadDatabaseEnabled_title"
|
||||
android:key="@string/PreloadDatabaseEnabled_key" />
|
||||
<CheckBoxPreference
|
||||
<CheckBoxPreference
|
||||
android:enabled="true"
|
||||
android:persistent="true"
|
||||
android:summary="@string/SyncAfterQuickUnlock_summary"
|
||||
android:defaultValue="false"
|
||||
android:title="@string/SyncAfterQuickUnlock_title"
|
||||
android:key="@string/SyncAfterQuickUnlock_key" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/TanExpiresOnUse_key"
|
||||
android:title="@string/TanExpiresOnUse_title"
|
||||
android:summary="@string/TanExpiresOnUse_summary"
|
||||
|
@@ -78,7 +78,6 @@ namespace keepass2android
|
||||
ContentResolver,
|
||||
Android.Provider.Settings.Secure.DefaultInputMethod);
|
||||
bool needsKeyboardSwitch = currentIme != Kp2aInputMethodName;
|
||||
Kp2aLog.Log("SwitchImeActivity.NeedsKeyboardSwitch: " + currentIme + " vs " + Kp2aInputMethodName);
|
||||
return needsKeyboardSwitch;
|
||||
}
|
||||
}
|
||||
|
99
src/keepass2android/SyncUtil.cs
Normal file
99
src/keepass2android/SyncUtil.cs
Normal file
@@ -0,0 +1,99 @@
|
||||
using System;
|
||||
using Android.App;
|
||||
using Android.Widget;
|
||||
using keepass2android.Io;
|
||||
using KeePassLib.Serialization;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
public class SyncUtil
|
||||
{
|
||||
private Activity _activity;
|
||||
|
||||
public SyncUtil(Activity activity)
|
||||
{
|
||||
_activity = activity;
|
||||
}
|
||||
|
||||
public class SyncOtpAuxFile : RunnableOnFinish
|
||||
{
|
||||
private readonly IOConnectionInfo _ioc;
|
||||
|
||||
public SyncOtpAuxFile(Activity activity, IOConnectionInfo ioc)
|
||||
: base(activity, null)
|
||||
{
|
||||
_ioc = ioc;
|
||||
}
|
||||
|
||||
public override void Run()
|
||||
{
|
||||
StatusLogger.UpdateMessage(UiStringKey.SynchronizingOtpAuxFile);
|
||||
try
|
||||
{
|
||||
//simply open the file. The file storage does a complete sync.
|
||||
using (App.Kp2a.GetOtpAuxFileStorage(_ioc).OpenFileForRead(_ioc))
|
||||
{
|
||||
}
|
||||
|
||||
Finish(true);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
Finish(false, e.Message);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void SynchronizeDatabase(Action runAfterSuccess)
|
||||
{
|
||||
var filestorage = App.Kp2a.GetFileStorage(App.Kp2a.CurrentDb.Ioc);
|
||||
RunnableOnFinish task;
|
||||
OnFinish onFinish = new ActionOnFinish(_activity, (success, message, activity) =>
|
||||
{
|
||||
if (!String.IsNullOrEmpty(message))
|
||||
Toast.MakeText(activity, message, ToastLength.Long).Show();
|
||||
|
||||
// Tell the adapter to refresh it's list
|
||||
BaseAdapter adapter = (activity as GroupBaseActivity)?.ListAdapter;
|
||||
adapter?.NotifyDataSetChanged();
|
||||
|
||||
if (App.Kp2a.CurrentDb?.OtpAuxFileIoc != null)
|
||||
{
|
||||
var task2 = new SyncOtpAuxFile(_activity, App.Kp2a.CurrentDb.OtpAuxFileIoc);
|
||||
task2.OnFinishToRun = new ActionOnFinish(_activity, (b, s, activeActivity) =>
|
||||
{
|
||||
runAfterSuccess();
|
||||
});
|
||||
new ProgressTask(App.Kp2a, activity, task2).Run(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
runAfterSuccess();
|
||||
}
|
||||
});
|
||||
|
||||
if (filestorage is CachingFileStorage)
|
||||
{
|
||||
|
||||
task = new SynchronizeCachedDatabase(_activity, App.Kp2a, onFinish);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
task = new CheckDatabaseForChanges(_activity, App.Kp2a, onFinish);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var progressTask = new ProgressTask(App.Kp2a, _activity, task);
|
||||
progressTask.Run();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@@ -26,7 +26,7 @@ namespace keepass2android
|
||||
return null;
|
||||
foreach (ITotpPluginAdapter adapter in _pluginAdapters)
|
||||
{
|
||||
TotpData totpData = adapter.GetTotpData(entry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key), pair => pair.Value.ReadString()), Application.Context, false);
|
||||
TotpData totpData = adapter.GetTotpData(entry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key), pair => pair.Value.ReadString()), LocaleManager.LocalizedAppContext, false);
|
||||
if (totpData.IsTotpEntry)
|
||||
{
|
||||
return totpData;
|
||||
@@ -47,7 +47,7 @@ namespace keepass2android
|
||||
{
|
||||
TotpData totpData = adapter.GetTotpData(
|
||||
App.Kp2a.LastOpenedEntry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key),
|
||||
pair => pair.Value.ReadString()), Application.Context, false);
|
||||
pair => pair.Value.ReadString()), LocaleManager.LocalizedAppContext, false);
|
||||
if (totpData.IsTotpEntry)
|
||||
{
|
||||
return adapter;
|
||||
@@ -67,7 +67,7 @@ namespace keepass2android
|
||||
{
|
||||
var adapter = TryGetAdapter(App.Kp2a.LastOpenedEntry);
|
||||
if (adapter != null)
|
||||
new UpdateTotpTimerTask(Application.Context, adapter).Run();
|
||||
new UpdateTotpTimerTask(LocaleManager.LocalizedAppContext, adapter).Run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -41,12 +41,79 @@ using KeePassLib.Security;
|
||||
using KeePassLib.Serialization;
|
||||
using Uri = Android.Net.Uri;
|
||||
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
||||
public class LocaleManager
|
||||
{
|
||||
public static Context LocalizedAppContext
|
||||
{
|
||||
get
|
||||
{
|
||||
//the standard way of setting locale on the app context is through Application.AttachBaseContext,
|
||||
//but because of https://bugzilla.xamarin.com/11/11182/bug.html this doesn't work
|
||||
return setLocale(Application.Context);
|
||||
}
|
||||
}
|
||||
public static Context setLocale(Context c)
|
||||
{
|
||||
return setNewLocale(c, getLanguage(c));
|
||||
}
|
||||
|
||||
public static Context setNewLocale(Context c, String language)
|
||||
{
|
||||
return updateResources(c, language);
|
||||
}
|
||||
|
||||
static string _language;
|
||||
public static string Language
|
||||
{
|
||||
get { return _language; }
|
||||
set { _language = value;languageLoaded = true;
|
||||
}
|
||||
}
|
||||
static bool languageLoaded = false;
|
||||
|
||||
public static String getLanguage(Context c)
|
||||
{
|
||||
if (!languageLoaded)
|
||||
{
|
||||
var language = PreferenceManager.GetDefaultSharedPreferences(c).GetString(c.GetString(Resource.String.app_language_pref_key), null);
|
||||
Language = language;
|
||||
}
|
||||
return Language;
|
||||
}
|
||||
|
||||
private static Context updateResources(Context context, String language)
|
||||
{
|
||||
if (language == null)
|
||||
return context;
|
||||
|
||||
Java.Util.Locale locale = new Java.Util.Locale(language);
|
||||
Java.Util.Locale.Default = locale;
|
||||
|
||||
Resources res = context.Resources;
|
||||
Configuration config = new Configuration(res.Configuration);
|
||||
if ((int)Build.VERSION.SdkInt >= 17)
|
||||
{
|
||||
config.SetLocale(locale);
|
||||
context = context.CreateConfigurationContext(config);
|
||||
}
|
||||
else
|
||||
{
|
||||
config.Locale = locale;
|
||||
res.UpdateConfiguration(config, res.DisplayMetrics);
|
||||
}
|
||||
return context;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class Util {
|
||||
|
||||
public const String KeyFilename = "fileName";
|
||||
|
||||
public const String KeyFilename = "fileName";
|
||||
public const String KeyServerusername = "serverCredUser";
|
||||
public const String KeyServerpassword = "serverCredPwd";
|
||||
public const String KeyServercredmode = "serverCredRememberMode";
|
||||
@@ -253,7 +320,7 @@ namespace keepass2android
|
||||
* @return True if an Intent with the specified action can be sent and
|
||||
* responded to, false otherwise.
|
||||
*/
|
||||
static bool IsIntentAvailable(Context context, String action, String type, List<String> categories )
|
||||
static bool IsIntentAvailable(Context context, String action, String type, List<String> categories )
|
||||
{
|
||||
PackageManager packageManager = context.PackageManager;
|
||||
Intent intent = new Intent(action);
|
||||
|
@@ -95,9 +95,9 @@ namespace keepass2android
|
||||
public const string PackagePart = "keepass2android";
|
||||
public const string Searchable = "@xml/searchable";
|
||||
#endif
|
||||
public const int LauncherIcon = Resource.Mipmap.ic_launcher_online;
|
||||
public const int NotificationLockedIcon = Resource.Drawable.ic_notify_loaded;
|
||||
public const int NotificationUnlockedIcon = Resource.Drawable.ic_notify_locked;
|
||||
public const int LauncherIcon = Resource.Mipmap.ic_launcher_online;
|
||||
public const int NotificationLockedIcon = Resource.Drawable.ic_notify_loaded;
|
||||
public const int NotificationUnlockedIcon = Resource.Drawable.ic_notify_locked;
|
||||
|
||||
}
|
||||
#endif
|
||||
@@ -109,7 +109,10 @@ namespace keepass2android
|
||||
/// </summary>
|
||||
public class Kp2aApp: IKp2aApp, ICacheSupervisor
|
||||
{
|
||||
public void Lock(bool allowQuickUnlock = true, bool lockWasTriggeredByTimeout = false)
|
||||
|
||||
|
||||
|
||||
public void Lock(bool allowQuickUnlock = true, bool lockWasTriggeredByTimeout = false)
|
||||
{
|
||||
if (OpenDatabases.Any())
|
||||
{
|
||||
@@ -122,7 +125,7 @@ namespace keepass2android
|
||||
Kp2aLog.Log("QuickLocking database");
|
||||
QuickLocked = true;
|
||||
LastOpenedEntry = null;
|
||||
BroadcastDatabaseAction(Application.Context, Strings.ActionLockDatabase);
|
||||
BroadcastDatabaseAction(LocaleManager.LocalizedAppContext, Strings.ActionLockDatabase);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -133,7 +136,7 @@ namespace keepass2android
|
||||
{
|
||||
Kp2aLog.Log("Locking database");
|
||||
|
||||
BroadcastDatabaseAction(Application.Context, Strings.ActionCloseDatabase);
|
||||
BroadcastDatabaseAction(LocaleManager.LocalizedAppContext, Strings.ActionCloseDatabase);
|
||||
|
||||
// Couldn't quick-lock, so unload database(s) instead
|
||||
_openAttempts.Clear();
|
||||
@@ -153,7 +156,7 @@ namespace keepass2android
|
||||
var intent = new Intent(Intents.DatabaseLocked);
|
||||
if (lockWasTriggeredByTimeout)
|
||||
intent.PutExtra("ByTimeout", true);
|
||||
Application.Context.SendBroadcast(intent);
|
||||
LocaleManager.LocalizedAppContext.SendBroadcast(intent);
|
||||
}
|
||||
|
||||
|
||||
@@ -178,8 +181,8 @@ namespace keepass2android
|
||||
|
||||
public Database LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, CompositeKey compositeKey, ProgressDialogStatusLogger statusLogger, IDatabaseFormat databaseFormat, bool makeCurrent)
|
||||
{
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
|
||||
var createBackup = prefs.GetBoolean(Application.Context.GetString(Resource.String.CreateBackups_key), true)
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext);
|
||||
var createBackup = prefs.GetBoolean(LocaleManager.LocalizedAppContext.GetString(Resource.String.CreateBackups_key), true)
|
||||
&& !(new LocalFileStorage(this).IsLocalBackup(ioConnectionInfo));
|
||||
|
||||
MemoryStream backupCopy = new MemoryStream();
|
||||
@@ -216,8 +219,8 @@ namespace keepass2android
|
||||
|
||||
if (createBackup)
|
||||
{
|
||||
statusLogger.UpdateMessage(Application.Context.GetString(Resource.String.UpdatingBackup));
|
||||
Java.IO.File internalDirectory = IoUtil.GetInternalDirectory(Application.Context);
|
||||
statusLogger.UpdateMessage(LocaleManager.LocalizedAppContext.GetString(Resource.String.UpdatingBackup));
|
||||
Java.IO.File internalDirectory = IoUtil.GetInternalDirectory(LocaleManager.LocalizedAppContext);
|
||||
string baseDisplayName = App.Kp2a.GetFileStorage(ioConnectionInfo).GetDisplayName(ioConnectionInfo);
|
||||
string targetPath = baseDisplayName;
|
||||
var charsToRemove = "|\\?*<\":>+[]/'";
|
||||
@@ -242,7 +245,7 @@ namespace keepass2android
|
||||
Java.Lang.Object baseIocDisplayName = baseDisplayName;
|
||||
|
||||
string keyfile = App.Kp2a.FileDbHelper.GetKeyFileForFile(ioConnectionInfo.Path);
|
||||
App.Kp2a.StoreOpenedFileAsRecent(targetIoc, keyfile, false, Application.Context.
|
||||
App.Kp2a.StoreOpenedFileAsRecent(targetIoc, keyfile, false, LocaleManager.LocalizedAppContext.
|
||||
GetString(Resource.String.LocalBackupOf, new Java.Lang.Object[]{baseIocDisplayName}));
|
||||
|
||||
prefs.Edit()
|
||||
@@ -298,13 +301,13 @@ namespace keepass2android
|
||||
|
||||
UpdateOngoingNotification();
|
||||
|
||||
BroadcastDatabaseAction(Application.Context, Strings.ActionUnlockDatabase);
|
||||
BroadcastDatabaseAction(LocaleManager.LocalizedAppContext, Strings.ActionUnlockDatabase);
|
||||
}
|
||||
|
||||
public void UpdateOngoingNotification()
|
||||
{
|
||||
// Start or update the notification icon service to reflect the current state
|
||||
var ctx = Application.Context;
|
||||
var ctx = LocaleManager.LocalizedAppContext;
|
||||
if (DatabaseIsUnlocked || QuickLocked)
|
||||
{
|
||||
ContextCompat.StartForegroundService(ctx, new Intent(ctx, typeof(OngoingNotificationsService)));
|
||||
@@ -333,7 +336,7 @@ namespace keepass2android
|
||||
//Set KeyLength of QuickUnlock at time of enabling.
|
||||
//This is important to not allow an attacker to set the length to 1 when QuickUnlock is started already.
|
||||
|
||||
var ctx = Application.Context;
|
||||
var ctx = LocaleManager.LocalizedAppContext;
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(ctx);
|
||||
QuickUnlockKeyLength = Math.Max(1, int.Parse(prefs.GetString(ctx.GetString(Resource.String.QuickUnlockLength_key), ctx.GetString(Resource.String.QuickUnlockLength_default))));
|
||||
}
|
||||
@@ -429,7 +432,7 @@ namespace keepass2android
|
||||
|
||||
public bool GetBooleanPreference(PreferenceKey key)
|
||||
{
|
||||
Context ctx = Application.Context;
|
||||
Context ctx = LocaleManager.LocalizedAppContext;
|
||||
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(ctx);
|
||||
switch (key)
|
||||
{
|
||||
@@ -457,14 +460,14 @@ namespace keepass2android
|
||||
}
|
||||
else
|
||||
{
|
||||
AskForReload(activity);
|
||||
AskForReload(activity, null);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void AskForReload(Activity activity)
|
||||
private void AskForReload(Activity activity, Action<bool> actionOnResult)
|
||||
{
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.SetTitle(activity.GetString(Resource.String.AskReloadFile_title));
|
||||
@@ -477,16 +480,27 @@ namespace keepass2android
|
||||
CurrentDb.ReloadRequested = true;
|
||||
activity.SetResult(KeePass.ExitReloadDb);
|
||||
activity.Finish();
|
||||
if (actionOnResult != null)
|
||||
actionOnResult(true);
|
||||
|
||||
});
|
||||
|
||||
builder.SetNegativeButton(activity.GetString(Android.Resource.String.No), (dlgSender, dlgEvt) =>
|
||||
{
|
||||
|
||||
if (actionOnResult != null)
|
||||
actionOnResult(false);
|
||||
});
|
||||
|
||||
|
||||
|
||||
Dialog dialog = builder.Create();
|
||||
|
||||
dialog.SetOnDismissListener(new Util.DismissListener(() =>
|
||||
{
|
||||
if (actionOnResult != null)
|
||||
actionOnResult(false);
|
||||
}));
|
||||
|
||||
dialog.Show();
|
||||
}
|
||||
|
||||
@@ -504,7 +518,7 @@ namespace keepass2android
|
||||
var field = typeof(Resource.String).GetField(key);
|
||||
if (field == null)
|
||||
throw new Exception("Invalid key " + key);
|
||||
return Application.Context.GetString((int)field.GetValue(null));
|
||||
return LocaleManager.LocalizedAppContext.GetString((int)field.GetValue(null));
|
||||
}
|
||||
|
||||
public Drawable GetStorageIcon(string protocolId)
|
||||
@@ -523,7 +537,7 @@ namespace keepass2android
|
||||
var field = typeof(Resource.Drawable).GetField(key);
|
||||
if (field == null)
|
||||
throw new Exception("Invalid key " + key);
|
||||
return Application.Context.Resources.GetDrawable((int)field.GetValue(null));
|
||||
return LocaleManager.LocalizedAppContext.Resources.GetDrawable((int)field.GetValue(null));
|
||||
}
|
||||
|
||||
public void AskYesNoCancel(UiStringKey titleKey, UiStringKey messageKey, EventHandler<DialogClickEventArgs> yesHandler, EventHandler<DialogClickEventArgs> noHandler, EventHandler<DialogClickEventArgs> cancelHandler, Context ctx, string messageSuffix)
|
||||
@@ -667,7 +681,7 @@ namespace keepass2android
|
||||
|
||||
if (DatabaseCacheEnabled && allowCache)
|
||||
{
|
||||
fileStorage = new CachingFileStorage(innerFileStorage, Application.Context, this);
|
||||
fileStorage = new CachingFileStorage(innerFileStorage, LocaleManager.LocalizedAppContext, this);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -705,20 +719,20 @@ namespace keepass2android
|
||||
_fileStorages = new List<IFileStorage>
|
||||
{
|
||||
|
||||
new AndroidContentStorage(Application.Context),
|
||||
new AndroidContentStorage(LocaleManager.LocalizedAppContext),
|
||||
#if !EXCLUDE_JAVAFILESTORAGE
|
||||
#if !NoNet
|
||||
new DropboxFileStorage(Application.Context, this),
|
||||
new DropboxAppFolderFileStorage(Application.Context, this),
|
||||
GoogleApiAvailability.Instance.IsGooglePlayServicesAvailable(Application.Context)==ConnectionResult.Success ? new GoogleDriveFileStorage(Application.Context, this) : null,
|
||||
new OneDriveFileStorage(Application.Context, this),
|
||||
new DropboxFileStorage(LocaleManager.LocalizedAppContext, this),
|
||||
new DropboxAppFolderFileStorage(LocaleManager.LocalizedAppContext, this),
|
||||
GoogleApiAvailability.Instance.IsGooglePlayServicesAvailable(LocaleManager.LocalizedAppContext)==ConnectionResult.Success ? new GoogleDriveFileStorage(LocaleManager.LocalizedAppContext, this) : null,
|
||||
new OneDriveFileStorage(LocaleManager.LocalizedAppContext, this),
|
||||
new OneDrive2FullFileStorage(),
|
||||
new OneDrive2MyFilesFileStorage(),
|
||||
new OneDrive2AppFolderFileStorage(),
|
||||
new SftpFileStorage(Application.Context, this),
|
||||
new NetFtpFileStorage(Application.Context, this),
|
||||
new SftpFileStorage(LocaleManager.LocalizedAppContext, this),
|
||||
new NetFtpFileStorage(LocaleManager.LocalizedAppContext, this),
|
||||
new WebDavFileStorage(this),
|
||||
new PCloudFileStorage(Application.Context, this),
|
||||
new PCloudFileStorage(LocaleManager.LocalizedAppContext, this),
|
||||
//new LegacyWebDavStorage(this),
|
||||
//new LegacyFtpStorage(this),
|
||||
#endif
|
||||
@@ -730,12 +744,12 @@ namespace keepass2android
|
||||
}
|
||||
}
|
||||
|
||||
public void TriggerReload(Context ctx)
|
||||
public void TriggerReload(Context ctx, Action<bool> actionOnResult)
|
||||
{
|
||||
Handler handler = new Handler(Looper.MainLooper);
|
||||
handler.Post(() =>
|
||||
{
|
||||
AskForReload((Activity) ctx);
|
||||
AskForReload((Activity) ctx, actionOnResult);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -783,12 +797,12 @@ namespace keepass2android
|
||||
|
||||
private ValidationMode GetValidationMode()
|
||||
{
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext);
|
||||
|
||||
ValidationMode validationMode = ValidationMode.Warn;
|
||||
|
||||
string strValMode = prefs.GetString(Application.Context.Resources.GetString(Resource.String.AcceptAllServerCertificates_key),
|
||||
Application.Context.Resources.GetString(Resource.String.AcceptAllServerCertificates_default));
|
||||
string strValMode = prefs.GetString(LocaleManager.LocalizedAppContext.Resources.GetString(Resource.String.AcceptAllServerCertificates_key),
|
||||
LocaleManager.LocalizedAppContext.Resources.GetString(Resource.String.AcceptAllServerCertificates_default));
|
||||
|
||||
if (strValMode == "IGNORE")
|
||||
validationMode = ValidationMode.Ignore;
|
||||
@@ -801,8 +815,8 @@ namespace keepass2android
|
||||
{
|
||||
get
|
||||
{
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
|
||||
return prefs.GetBoolean(Application.Context.GetString(Resource.String.CheckForDuplicateUuids_key), true);
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext);
|
||||
return prefs.GetBoolean(LocaleManager.LocalizedAppContext.GetString(Resource.String.CheckForDuplicateUuids_key), true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -849,7 +863,7 @@ namespace keepass2android
|
||||
#endif
|
||||
private void ShowValidationWarning(string error)
|
||||
{
|
||||
ShowToast(Application.Context.GetString(Resource.String.CertificateWarning, error));
|
||||
ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.CertificateWarning, error));
|
||||
}
|
||||
|
||||
|
||||
@@ -901,7 +915,7 @@ namespace keepass2android
|
||||
internal void ShowToast(string message)
|
||||
{
|
||||
var handler = new Handler(Looper.MainLooper);
|
||||
handler.Post(() => { var toast = Toast.MakeText(Application.Context, message, ToastLength.Long);
|
||||
handler.Post(() => { var toast = Toast.MakeText(LocaleManager.LocalizedAppContext, message, ToastLength.Long);
|
||||
toast.SetGravity(GravityFlags.Center, 0, 0);
|
||||
toast.Show();
|
||||
});
|
||||
@@ -910,7 +924,7 @@ namespace keepass2android
|
||||
public void CouldntSaveToRemote(IOConnectionInfo ioc, Exception e)
|
||||
{
|
||||
var errorMessage = GetErrorMessageForFileStorageException(e);
|
||||
ShowToast(Application.Context.GetString(Resource.String.CouldNotSaveToRemote, errorMessage));
|
||||
ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.CouldNotSaveToRemote, errorMessage));
|
||||
}
|
||||
|
||||
private string GetErrorMessageForFileStorageException(Exception e)
|
||||
@@ -928,33 +942,33 @@ namespace keepass2android
|
||||
public void CouldntOpenFromRemote(IOConnectionInfo ioc, Exception ex)
|
||||
{
|
||||
var errorMessage = GetErrorMessageForFileStorageException(ex);
|
||||
ShowToast(Application.Context.GetString(Resource.String.CouldNotLoadFromRemote, errorMessage));
|
||||
ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.CouldNotLoadFromRemote, errorMessage));
|
||||
}
|
||||
|
||||
public void UpdatedCachedFileOnLoad(IOConnectionInfo ioc)
|
||||
{
|
||||
ShowToast(Application.Context.GetString(Resource.String.UpdatedCachedFileOnLoad,
|
||||
new Java.Lang.Object[] { Application.Context.GetString(Resource.String.database_file) }));
|
||||
ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.UpdatedCachedFileOnLoad,
|
||||
new Java.Lang.Object[] { LocaleManager.LocalizedAppContext.GetString(Resource.String.database_file) }));
|
||||
}
|
||||
|
||||
public void UpdatedRemoteFileOnLoad(IOConnectionInfo ioc)
|
||||
{
|
||||
ShowToast(Application.Context.GetString(Resource.String.UpdatedRemoteFileOnLoad));
|
||||
ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.UpdatedRemoteFileOnLoad));
|
||||
}
|
||||
|
||||
public void NotifyOpenFromLocalDueToConflict(IOConnectionInfo ioc)
|
||||
{
|
||||
ShowToast(Application.Context.GetString(Resource.String.NotifyOpenFromLocalDueToConflict));
|
||||
ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.NotifyOpenFromLocalDueToConflict));
|
||||
}
|
||||
|
||||
public void LoadedFromRemoteInSync(IOConnectionInfo ioc)
|
||||
{
|
||||
ShowToast(Application.Context.GetString(Resource.String.LoadedFromRemoteInSync));
|
||||
ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.LoadedFromRemoteInSync));
|
||||
}
|
||||
|
||||
public void ClearOfflineCache()
|
||||
{
|
||||
new CachingFileStorage(new LocalFileStorage(this), Application.Context, this).ClearCache();
|
||||
new CachingFileStorage(new LocalFileStorage(this), LocaleManager.LocalizedAppContext, this).ClearCache();
|
||||
}
|
||||
|
||||
public IFileStorage GetFileStorage(string protocolId)
|
||||
@@ -978,7 +992,7 @@ namespace keepass2android
|
||||
|
||||
if (DatabaseCacheEnabled)
|
||||
{
|
||||
return new OtpAuxCachingFileStorage(innerFileStorage, Application.Context, new OtpAuxCacheSupervisor(this));
|
||||
return new OtpAuxCachingFileStorage(innerFileStorage, LocaleManager.LocalizedAppContext, new OtpAuxCacheSupervisor(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -991,8 +1005,8 @@ namespace keepass2android
|
||||
{
|
||||
get
|
||||
{
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
|
||||
bool cacheEnabled = prefs.GetBoolean(Application.Context.Resources.GetString(Resource.String.UseOfflineCache_key),
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext);
|
||||
bool cacheEnabled = prefs.GetBoolean(LocaleManager.LocalizedAppContext.Resources.GetString(Resource.String.UseOfflineCache_key),
|
||||
#if NoNet
|
||||
false
|
||||
#else
|
||||
@@ -1007,14 +1021,14 @@ namespace keepass2android
|
||||
{
|
||||
get
|
||||
{
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
|
||||
return prefs.GetBoolean(Application.Context.GetString(Resource.String.OfflineMode_key), false);
|
||||
var prefs = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext);
|
||||
return prefs.GetBoolean(LocaleManager.LocalizedAppContext.GetString(Resource.String.OfflineMode_key), false);
|
||||
}
|
||||
set
|
||||
{
|
||||
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
|
||||
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext);
|
||||
ISharedPreferencesEditor edit = prefs.Edit();
|
||||
edit.PutBoolean(Application.Context.GetString(Resource.String.OfflineMode_key), value);
|
||||
edit.PutBoolean(LocaleManager.LocalizedAppContext.GetString(Resource.String.OfflineMode_key), value);
|
||||
edit.Commit();
|
||||
|
||||
}
|
||||
@@ -1035,9 +1049,9 @@ namespace keepass2android
|
||||
|
||||
public void OnScreenOff()
|
||||
{
|
||||
if (PreferenceManager.GetDefaultSharedPreferences(Application.Context)
|
||||
if (PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext)
|
||||
.GetBoolean(
|
||||
Application.Context.GetString(Resource.String.LockWhenScreenOff_key),
|
||||
LocaleManager.LocalizedAppContext.GetString(Resource.String.LockWhenScreenOff_key),
|
||||
false))
|
||||
{
|
||||
App.Kp2a.Lock();
|
||||
@@ -1172,7 +1186,13 @@ namespace keepass2android
|
||||
#endif
|
||||
public class App : Application {
|
||||
|
||||
public const string NotificationChannelIdUnlocked = "channel_db_unlocked_5";
|
||||
public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig)
|
||||
{
|
||||
base.OnConfigurationChanged(newConfig);
|
||||
LocaleManager.setLocale(this);
|
||||
}
|
||||
|
||||
public const string NotificationChannelIdUnlocked = "channel_db_unlocked_5";
|
||||
public const string NotificationChannelIdQuicklocked = "channel_db_quicklocked_5";
|
||||
public const string NotificationChannelIdEntry = "channel_db_entry_5";
|
||||
|
||||
|
@@ -549,7 +549,7 @@ namespace keepass2android
|
||||
{
|
||||
Context ctx = activity;
|
||||
if (ctx == null)
|
||||
ctx = Application.Context;
|
||||
ctx = LocaleManager.LocalizedAppContext;
|
||||
|
||||
if ((ShowUserNotifications == ShowUserNotificationsMode.Always)
|
||||
|| ((ShowUserNotifications == ShowUserNotificationsMode.WhenTotp) && new Kp2aTotp().TryGetAdapter(new PwEntryOutput(activity.Entry, App.Kp2a.CurrentDb)) != null))
|
||||
|
@@ -26,8 +26,8 @@ namespace keepass2android
|
||||
|
||||
public void UpdatedCachedFileOnLoad(IOConnectionInfo ioc)
|
||||
{
|
||||
_app.ShowToast(Application.Context.GetString(Resource.String.UpdatedCachedFileOnLoad,
|
||||
new Java.Lang.Object[] { Application.Context.GetString(Resource.String.otp_aux_file) }));
|
||||
_app.ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.UpdatedCachedFileOnLoad,
|
||||
new Java.Lang.Object[] { LocaleManager.LocalizedAppContext.GetString(Resource.String.otp_aux_file) }));
|
||||
}
|
||||
|
||||
public void UpdatedRemoteFileOnLoad(IOConnectionInfo ioc)
|
||||
@@ -48,12 +48,12 @@ namespace keepass2android
|
||||
|
||||
public void ResolvedCacheConflictByUsingRemote(IOConnectionInfo ioc)
|
||||
{
|
||||
_app.ShowToast(Application.Context.GetString(Resource.String.ResolvedCacheConflictByUsingRemoteOtpAux));
|
||||
_app.ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.ResolvedCacheConflictByUsingRemoteOtpAux));
|
||||
}
|
||||
|
||||
public void ResolvedCacheConflictByUsingLocal(IOConnectionInfo ioc)
|
||||
{
|
||||
_app.ShowToast(Application.Context.GetString(Resource.String.ResolvedCacheConflictByUsingLocalOtpAux));
|
||||
_app.ShowToast(LocaleManager.LocalizedAppContext.GetString(Resource.String.ResolvedCacheConflictByUsingLocalOtpAux));
|
||||
}
|
||||
}
|
||||
}
|
@@ -75,8 +75,8 @@ private static Drawable _blank;
|
||||
{
|
||||
get
|
||||
{
|
||||
var context = Application.Context;
|
||||
string packageName = PreferenceManager.GetDefaultSharedPreferences(Application.Context).GetString("IconSetKey", context.PackageName);
|
||||
var context = LocaleManager.LocalizedAppContext;
|
||||
string packageName = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext).GetString("IconSetKey", context.PackageName);
|
||||
//assume that at the momemt only the built in icons are white
|
||||
return packageName == context.PackageName;
|
||||
}
|
||||
@@ -99,7 +99,7 @@ private static Drawable _blank;
|
||||
Drawable draw;
|
||||
if (!_standardIconMap.TryGetValue(dictKey, out draw))
|
||||
{
|
||||
string packageName = PreferenceManager.GetDefaultSharedPreferences(Application.Context).GetString("IconSetKey", context.PackageName);
|
||||
string packageName = PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext).GetString("IconSetKey", context.PackageName);
|
||||
|
||||
Resources res;
|
||||
try
|
||||
@@ -111,7 +111,7 @@ private static Drawable _blank;
|
||||
//can happen after uninstalling icons
|
||||
packageName = context.PackageName;
|
||||
res = context.PackageManager.GetResourcesForApplication(packageName);
|
||||
PreferenceManager.GetDefaultSharedPreferences(Application.Context)
|
||||
PreferenceManager.GetDefaultSharedPreferences(LocaleManager.LocalizedAppContext)
|
||||
.Edit()
|
||||
.PutString("IconSetKey", packageName)
|
||||
.Commit();
|
||||
|
@@ -1,113 +1,94 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<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>
|
||||
<ProjectGuid>{A6CF8A86-37C1-4197-80FE-519DE2C842F5}</ProjectGuid>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{D4C32E0A-0193-4496-9DB4-02CC126FD9F3}</ProjectGuid>
|
||||
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<TemplateGuid>{84dd83c5-0fe3-4294-9419-09e7c8ba324f}</TemplateGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>keepass2android</RootNamespace>
|
||||
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
|
||||
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
|
||||
<AndroidResgenClass>Resource</AndroidResgenClass>
|
||||
<AssemblyName>keepass2anrdoid-setup2</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>True</Deterministic>
|
||||
<AndroidApplication>True</AndroidApplication>
|
||||
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
|
||||
<AssemblyName>keepass2android</AssemblyName>
|
||||
<newfilesearch>OnLoad</newfilesearch>
|
||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
|
||||
<MandroidI18n />
|
||||
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
|
||||
<AndroidResgenClass>Resource</AndroidResgenClass>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TargetFrameworkVersion>v11.0</TargetFrameworkVersion>
|
||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
|
||||
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
|
||||
<AndroidEnableSGenConcurrent>true</AndroidEnableSGenConcurrent>
|
||||
<AndroidUseAapt2>true</AndroidUseAapt2>
|
||||
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug</OutputPath>
|
||||
<DefineConstants>DEBUG;_EXCLUDE_TWOFISH;_EXCLUDE_KEYBOARD;_EXCLUDE_FILECHOOSER;_EXCLUDE_JAVAFILESTORAGE;INCLUDE_KEYTRANSFORM</DefineConstants>
|
||||
<DebugType>portable</DebugType>
|
||||
<Optimize>False</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;INCLUDE_KEYTRANSFORM</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>False</ConsolePause>
|
||||
<CustomCommands>
|
||||
<CustomCommands>
|
||||
<Command type="BeforeBuild" command="UseManifestDebug.bat" />
|
||||
</CustomCommands>
|
||||
</CustomCommands>
|
||||
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
|
||||
<Debugger>Xamarin</Debugger>
|
||||
<DevInstrumentationEnabled>True</DevInstrumentationEnabled>
|
||||
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
||||
<AndroidUseSharedRuntime>true</AndroidUseSharedRuntime>
|
||||
<AndroidUseSharedRuntime>True</AndroidUseSharedRuntime>
|
||||
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
|
||||
<BundleAssemblies>false</BundleAssemblies>
|
||||
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
|
||||
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
||||
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
|
||||
<AotAssemblies>false</AotAssemblies>
|
||||
<EnableLLVM>false</EnableLLVM>
|
||||
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
||||
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
|
||||
<BundleAssemblies>false</BundleAssemblies>
|
||||
<AndroidEnableMultiDex>false</AndroidEnableMultiDex>
|
||||
<AndroidUseAapt2>true</AndroidUseAapt2>
|
||||
<AndroidDexTool>d8</AndroidDexTool>
|
||||
<AndroidLinkTool>r8</AndroidLinkTool>
|
||||
<MandroidI18n />
|
||||
<AndroidLinkTool>proguard</AndroidLinkTool>
|
||||
<AndroidUseAapt2>false</AndroidUseAapt2>
|
||||
<AndroidDexTool>dx</AndroidDexTool>
|
||||
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
||||
<AndroidSupportedAbis />
|
||||
<AndroidHttpClientHandlerType />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>full</DebugType>
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<DebugType>portable</DebugType>
|
||||
<Optimize>True</Optimize>
|
||||
<OutputPath>bin\Release</OutputPath>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>RELEASE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidManagedSymbols>true</AndroidManagedSymbols>
|
||||
<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>
|
||||
<ConsolePause>False</ConsolePause>
|
||||
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
||||
<CustomCommands>
|
||||
<CustomCommands>
|
||||
<Command type="BeforeBuild" command="UseManifestNet.bat" />
|
||||
</CustomCommands>
|
||||
</CustomCommands>
|
||||
<DeployExternal>True</DeployExternal>
|
||||
<DefineConstants>RELEASE</DefineConstants>
|
||||
<AndroidLinkSkip>System.Core%3b</AndroidLinkSkip>
|
||||
<EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk>
|
||||
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
|
||||
<BundleAssemblies>false</BundleAssemblies>
|
||||
<AndroidCreatePackagePerAbi>False</AndroidCreatePackagePerAbi>
|
||||
<Debugger>Xamarin</Debugger>
|
||||
<EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk>
|
||||
<AotAssemblies>false</AotAssemblies>
|
||||
<EnableLLVM>false</EnableLLVM>
|
||||
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
||||
<DevInstrumentationEnabled>False</DevInstrumentationEnabled>
|
||||
<DebugSymbols>False</DebugSymbols>
|
||||
<AndroidTlsProvider>btls</AndroidTlsProvider>
|
||||
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
|
||||
<JavaMaximumHeapSize>4G</JavaMaximumHeapSize>
|
||||
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
|
||||
<AndroidLinkTool>proguard</AndroidLinkTool>
|
||||
<AndroidUseAapt2>false</AndroidUseAapt2>
|
||||
<AndroidDexTool>dx</AndroidDexTool>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNoNet|AnyCPU' ">
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>False</Optimize>
|
||||
<OutputPath>bin\ReleaseNoNet</OutputPath>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>
|
||||
<DefineConstants>NoNet</DefineConstants>
|
||||
<CustomCommands>
|
||||
<CustomCommands>
|
||||
<Command type="BeforeBuild" command="UseManifestNoNet.bat" workingdir="" />
|
||||
</CustomCommands>
|
||||
</CustomCommands>
|
||||
<AndroidSupportedAbis>armeabi-v7a</AndroidSupportedAbis>
|
||||
<DeployExternal>True</DeployExternal>
|
||||
<JavaOptions>
|
||||
</JavaOptions>
|
||||
<AndroidStoreUncompressedFileExtensions>
|
||||
</AndroidStoreUncompressedFileExtensions>
|
||||
<BundleAssemblies>false</BundleAssemblies>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="Mono.Android" />
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors" />
|
||||
<PackageReference Include="Xamarin.AndroidX.AutoFill">
|
||||
<Version>1.1.0.3-beta01</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.2.0.3" />
|
||||
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V13" Version="1.0.0.5" />
|
||||
<PackageReference Include="Xamarin.AndroidX.AppCompat.Resources" Version="1.1.0" />
|
||||
<PackageReference Include="Xamarin.Kotlin.StdLib.Common">
|
||||
<Version>1.3.50.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Kotlin.StdLib">
|
||||
<Version>1.3.50.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.AppCompat.AppCompatResources" Version="1.2.0.5" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Java.Interop" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -226,6 +207,7 @@
|
||||
<Compile Include="settings\ExportKeyfileActivity.cs" />
|
||||
<Compile Include="settings\IconSetPreference.cs" />
|
||||
<Compile Include="SwitchImeActivity.cs" />
|
||||
<Compile Include="SyncUtil.cs" />
|
||||
<Compile Include="timeout\TimeoutHelper.cs" />
|
||||
<Compile Include="GroupActivity.cs" />
|
||||
<Compile Include="GroupBaseActivity.cs" />
|
||||
@@ -806,65 +788,12 @@
|
||||
</AndroidResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="libs\" />
|
||||
<Folder Include="Resources\color\" />
|
||||
<Folder Include="Resources\drawable-hdpi\" />
|
||||
<Folder Include="Resources\drawable-ldpi\" />
|
||||
<Folder Include="Resources\drawable-xxhdpi\" />
|
||||
<Folder Include="Resources\drawable-xxxhdpi\" />
|
||||
<Folder Include="SupportLib\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj">
|
||||
<Project>{48574278-4779-4B3A-A9E4-9CF1BC285D0B}</Project>
|
||||
<Name>JavaFileStorageBindings</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj">
|
||||
<Project>{2DB80C77-D46F-4970-B967-E9FFA9B2AC2E}</Project>
|
||||
<Name>PCloudBindings</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\KeePassLib2Android\KeePassLib2Android.csproj">
|
||||
<Project>{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}</Project>
|
||||
<Name>KeePassLib2Android</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Kp2aBusinessLogic\Kp2aBusinessLogic.csproj">
|
||||
<Project>{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}</Project>
|
||||
<Name>Kp2aBusinessLogic</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\KP2AKdbLibraryBinding\KP2AKdbLibraryBinding.csproj">
|
||||
<Project>{70D3844A-D9FA-4A64-B205-A84C6A822196}</Project>
|
||||
<Name>KP2AKdbLibraryBinding</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Kp2aKeyboardBinding\Kp2aKeyboardBinding.csproj">
|
||||
<Project>{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}</Project>
|
||||
<Name>Kp2aKeyboardBinding</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\PluginSdkBinding\PluginSdkBinding.csproj">
|
||||
<Project>{3DA3911E-36DE-465E-8F15-F1991B6437E5}</Project>
|
||||
<Name>PluginSdkBinding</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\SamsungPass\Xamarin.SamsungPass\SamsungPass\SamsungPass.csproj">
|
||||
<Project>{3a4b8e88-fa9b-4663-bcda-21c12e3af98a}</Project>
|
||||
<Name>SamsungPass</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj">
|
||||
<Project>{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}</Project>
|
||||
<Name>TwofishCipher</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj">
|
||||
<Project>{3C0F7FE5-639F-4422-A087-8B26CF862D1B}</Project>
|
||||
<Name>AndroidFileChooserBinding</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<MonoDevelop>
|
||||
<Properties>
|
||||
<Policies>
|
||||
<StandardHeader Text="
 ${FileName}
 
 Author:
 ${AuthorName} <${AuthorEmail}>

 Copyright (c) ${Year} ${CopyrightHolder}

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
" IncludeInNewFiles="True" />
|
||||
</Policies>
|
||||
</Properties>
|
||||
</MonoDevelop>
|
||||
</ProjectExtensions>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\xml\searchable_offline.xml">
|
||||
<SubType>Designer</SubType>
|
||||
@@ -1892,176 +1821,6 @@
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentFTP">
|
||||
<Version>32.4.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Bcl">
|
||||
<Version>1.1.10</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Graph">
|
||||
<Version>1.21.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Graph.Auth">
|
||||
<Version>1.0.0-preview.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Identity.Client">
|
||||
<Version>4.8.2</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Arch.Core.Common">
|
||||
<Version>1.1.1.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Arch.Core.Runtime">
|
||||
<Version>1.1.1.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.Common">
|
||||
<Version>1.1.1.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.LiveData">
|
||||
<Version>1.1.1.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.LiveData.Core">
|
||||
<Version>1.1.1.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.Runtime">
|
||||
<Version>1.1.1.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.ViewModel">
|
||||
<Version>1.1.1.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Annotations">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.AsyncLayoutInflater">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Collections">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Compat">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.CoordinaterLayout">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Core.UI">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Core.Utils">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.CursorAdapter">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.CustomTabs">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.CustomView">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Design">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.DocumentFile">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.DrawerLayout">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Fragment">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Interpolator">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Loader">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.LocalBroadcastManager">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Media.Compat">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Print">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.SlidingPaneLayout">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.SwipeRefreshLayout">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Transition">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v13">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v4">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v7.CardView">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v7.RecyclerView">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.VersionedParcelable">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.ViewPager">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.AppCompat.Resources">
|
||||
<Version>1.1.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.Biometric">
|
||||
<Version>1.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.Browser">
|
||||
<Version>1.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V13">
|
||||
<Version>1.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData">
|
||||
<Version>2.1.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.Migration">
|
||||
<Version>1.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Build.Download">
|
||||
<Version>0.8.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Google.Android.Material">
|
||||
<Version>1.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Auth">
|
||||
<Version>71.1600.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Drive">
|
||||
<Version>71.1600.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Jetbrains.Annotations">
|
||||
<Version>13.0.0.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Kotlin.StdLib.Common">
|
||||
<Version>1.3.50.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Kotlin.StdLib">
|
||||
<Version>1.3.50.1</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\switch_ime_activity_layout.xml">
|
||||
<SubType>Designer</SubType>
|
||||
@@ -2085,10 +1844,86 @@
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xhdpi\baseline_schedule_white_24.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.2.0.5" />
|
||||
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.0.0.1" />
|
||||
<PackageReference Include="Xamarin.Essentials" Version="1.6.1" />
|
||||
<PackageReference Include="Xamarin.AndroidX.AppCompat.AppCompatResources" Version="1.2.0.5" />
|
||||
<PackageReference Include="Xamarin.AndroidX.Biometric">
|
||||
<Version>1.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Google.Android.Material">
|
||||
<Version>1.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Auth">
|
||||
<Version>71.1600.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Drive">
|
||||
<Version>71.1600.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Compat">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.CoordinaterLayout">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Core.UI">
|
||||
<Version>28.0.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.3" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj">
|
||||
<Project>{3c0f7fe5-639f-4422-a087-8b26cf862d1b}</Project>
|
||||
<Name>AndroidFileChooserBinding</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj">
|
||||
<Project>{48574278-4779-4b3a-a9e4-9cf1bc285d0b}</Project>
|
||||
<Name>JavaFileStorageBindings</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\KeePassLib2Android\KeePassLib2Android.csproj">
|
||||
<Project>{545b4a6b-8bba-4fbe-92fc-4ac060122a54}</Project>
|
||||
<Name>KeePassLib2Android</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Kp2aBusinessLogic\Kp2aBusinessLogic.csproj">
|
||||
<Project>{53a9cb7f-6553-4bc0-b56b-9410bb2e59aa}</Project>
|
||||
<Name>Kp2aBusinessLogic</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\KP2AKdbLibraryBinding\KP2AKdbLibraryBinding.csproj">
|
||||
<Project>{70d3844a-d9fa-4a64-b205-a84c6a822196}</Project>
|
||||
<Name>KP2AKdbLibraryBinding</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Kp2aKeyboardBinding\Kp2aKeyboardBinding.csproj">
|
||||
<Project>{a8779d4d-7c49-4c2f-82bd-2cdc448391da}</Project>
|
||||
<Name>Kp2aKeyboardBinding</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj">
|
||||
<Project>{2db80c77-d46f-4970-b967-e9ffa9b2ac2e}</Project>
|
||||
<Name>PCloudBindings</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\PluginSdkBinding\PluginSdkBinding.csproj">
|
||||
<Project>{3da3911e-36de-465e-8f15-f1991b6437e5}</Project>
|
||||
<Name>PluginSdkBinding</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\SamsungPass\Xamarin.SamsungPass\SamsungPass\SamsungPass.csproj">
|
||||
<Project>{3a4b8e88-fa9b-4663-bcda-21c12e3af98a}</Project>
|
||||
<Name>SamsungPass</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj">
|
||||
<Project>{5cf675a5-9bee-4720-bed9-d5bf14a2ebf9}</Project>
|
||||
<Name>TwofishCipher</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\ZlibAndroid\ZlibAndroid.csproj">
|
||||
<Project>{6c29a7e7-e016-4fc1-b1a0-dee26ac711bb}</Project>
|
||||
<Name>ZlibAndroid</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
<!-- 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>
|
@@ -137,7 +137,7 @@ namespace keepass2android.search
|
||||
Database database = databases[databaseIndex];
|
||||
|
||||
|
||||
var iconDrawable = database.DrawableFactory.GetIconDrawable(App.Context, database.KpDatabase, iconId, customIconUuid, false) as BitmapDrawable;
|
||||
var iconDrawable = database.DrawableFactory.GetIconDrawable(LocaleManager.LocalizedAppContext, database.KpDatabase, iconId, customIconUuid, false) as BitmapDrawable;
|
||||
if (iconDrawable?.Bitmap != null)
|
||||
|
||||
{
|
||||
@@ -152,7 +152,7 @@ namespace keepass2android.search
|
||||
copiedCanvas.DrawBitmap(original, 0f, 0f, null);
|
||||
|
||||
var bitmap = copy;
|
||||
float maxSize = convertDpToPixel(60, App.Context);
|
||||
float maxSize = convertDpToPixel(60, LocaleManager.LocalizedAppContext);
|
||||
float scale = Math.Min(maxSize / bitmap.Width, maxSize / bitmap.Height);
|
||||
var scaleWidth = (int)(bitmap.Width * scale);
|
||||
var scaleHeight = (int)(bitmap.Height * scale);
|
||||
@@ -366,7 +366,7 @@ namespace keepass2android.search
|
||||
value = value.Replace("\r", "");
|
||||
if (intlResourceId > 0)
|
||||
{
|
||||
return Application.Context.GetString(intlResourceId) + ": "+value;
|
||||
return LocaleManager.LocalizedAppContext.GetString(intlResourceId) + ": "+value;
|
||||
}
|
||||
return context.Key + ": " + value;
|
||||
}
|
||||
|
@@ -1,9 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Service.Autofill;
|
||||
using Android.Util;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Android.Widget.Inline;
|
||||
using AndroidX.AutoFill.Inline;
|
||||
using AndroidX.AutoFill.Inline.V1;
|
||||
using FilledAutofillFieldCollection = keepass2android.services.AutofillBase.model.FilledAutofillFieldCollection;
|
||||
|
||||
namespace keepass2android.services.AutofillBase
|
||||
@@ -13,43 +20,127 @@ namespace keepass2android.services.AutofillBase
|
||||
/// </summary>
|
||||
public class AutofillHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Wraps autofill data in a LoginCredential Dataset object which can then be sent back to the
|
||||
/// client View.
|
||||
/// </summary>
|
||||
/// <returns>The dataset.</returns>
|
||||
/// <param name="context">Context.</param>
|
||||
/// <param name="autofillFields">Autofill fields.</param>
|
||||
/// <param name="filledAutofillFieldCollection">Filled autofill field collection.</param>
|
||||
public static Dataset NewDataset(Context context,
|
||||
AutofillFieldMetadataCollection autofillFields, FilledAutofillFieldCollection filledAutofillFieldCollection, IAutofillIntentBuilder intentBuilder)
|
||||
{
|
||||
var datasetName = filledAutofillFieldCollection.DatasetName ?? "[noname]";
|
||||
|
||||
var datasetBuilder = new Dataset.Builder(NewRemoteViews(context.PackageName, datasetName, intentBuilder.AppIconResource));
|
||||
|
||||
public static InlinePresentation BuildInlinePresentation(InlinePresentationSpec inlinePresentationSpec,
|
||||
string text, string subtext, int iconId, PendingIntent pendingIntent, Context context)
|
||||
{
|
||||
if ((int)Build.VERSION.SdkInt < 30 || inlinePresentationSpec == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
//make sure we have a pendingIntent always not null
|
||||
pendingIntent ??= PendingIntent.GetService(context, 0, new Intent(),
|
||||
PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent);
|
||||
var slice = CreateInlinePresentationSlice(
|
||||
inlinePresentationSpec,
|
||||
text,
|
||||
subtext,
|
||||
iconId,
|
||||
"Autofill option",
|
||||
pendingIntent,
|
||||
context);
|
||||
if (slice != null)
|
||||
{
|
||||
return new InlinePresentation(slice, inlinePresentationSpec, false);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static Android.App.Slices.Slice CreateInlinePresentationSlice(
|
||||
InlinePresentationSpec inlinePresentationSpec,
|
||||
string text,
|
||||
string subtext,
|
||||
int iconId,
|
||||
string contentDescription,
|
||||
PendingIntent pendingIntent,
|
||||
Context context)
|
||||
{
|
||||
var imeStyle = inlinePresentationSpec.Style;
|
||||
|
||||
if (!UiVersions.GetVersions(imeStyle).Contains(UiVersions.InlineUiVersion1))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var contentBuilder = InlineSuggestionUi.NewContentBuilder(pendingIntent)
|
||||
.SetContentDescription(contentDescription);
|
||||
if (!string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
contentBuilder.SetTitle(text);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(subtext))
|
||||
{
|
||||
contentBuilder.SetSubtitle(subtext);
|
||||
}
|
||||
if (iconId > 0)
|
||||
{
|
||||
var icon = Android.Graphics.Drawables.Icon.CreateWithResource(context, iconId);
|
||||
if (icon != null)
|
||||
{
|
||||
if (iconId == AppNames.LauncherIcon)
|
||||
{
|
||||
// Don't tint our logo
|
||||
icon.SetTintBlendMode(Android.Graphics.BlendMode.Dst);
|
||||
}
|
||||
contentBuilder.SetStartIcon(icon);
|
||||
}
|
||||
}
|
||||
return contentBuilder.Build().JavaCast<InlineSuggestionUi.Content>()?.Slice;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wraps autofill data in a LoginCredential Dataset object which can then be sent back to the
|
||||
/// client View.
|
||||
/// </summary>
|
||||
/// <returns>The dataset.</returns>
|
||||
/// <param name="context">Context.</param>
|
||||
/// <param name="autofillFields">Autofill fields.</param>
|
||||
/// <param name="filledAutofillFieldCollection">Filled autofill field collection.</param>
|
||||
public static Dataset NewDataset(Context context,
|
||||
AutofillFieldMetadataCollection autofillFields,
|
||||
FilledAutofillFieldCollection filledAutofillFieldCollection,
|
||||
IAutofillIntentBuilder intentBuilder,
|
||||
Android.Widget.Inline.InlinePresentationSpec inlinePresentationSpec)
|
||||
{
|
||||
var datasetName = filledAutofillFieldCollection.DatasetName ?? "[noname]";
|
||||
|
||||
var datasetBuilder = new Dataset.Builder(NewRemoteViews(context.PackageName, datasetName, intentBuilder.AppIconResource));
|
||||
datasetBuilder.SetId(datasetName);
|
||||
|
||||
var setValueAtLeastOnce = filledAutofillFieldCollection.ApplyToFields(autofillFields, datasetBuilder);
|
||||
|
||||
var setValueAtLeastOnce = filledAutofillFieldCollection.ApplyToFields(autofillFields, datasetBuilder);
|
||||
AddInlinePresentation(context, inlinePresentationSpec, datasetName, datasetBuilder, intentBuilder.AppIconResource);
|
||||
|
||||
if (setValueAtLeastOnce)
|
||||
{
|
||||
return datasetBuilder.Build();
|
||||
}
|
||||
if (setValueAtLeastOnce)
|
||||
{
|
||||
return datasetBuilder.Build();
|
||||
}
|
||||
else
|
||||
{
|
||||
Kp2aLog.Log("Failed to set at least one value. #fields="+autofillFields.GetAutofillIds().Length + " " + autofillFields.FocusedAutofillCanonicalHints);
|
||||
Kp2aLog.Log("Failed to set at least one value. #fields=" + autofillFields.GetAutofillIds().Length + " " + autofillFields.FocusedAutofillCanonicalHints);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static RemoteViews NewRemoteViews(string packageName, string remoteViewsText,int drawableId)
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void AddInlinePresentation(Context context, InlinePresentationSpec inlinePresentationSpec, string datasetName, Dataset.Builder datasetBuilder, int iconId)
|
||||
{
|
||||
if (inlinePresentationSpec != null)
|
||||
{
|
||||
var inlinePresentation = BuildInlinePresentation(inlinePresentationSpec, datasetName, "", iconId, null, context);
|
||||
datasetBuilder.SetInlinePresentation(inlinePresentation);
|
||||
}
|
||||
}
|
||||
|
||||
public static RemoteViews NewRemoteViews(string packageName, string remoteViewsText,int drawableId)
|
||||
{
|
||||
RemoteViews presentation = new RemoteViews(packageName, Resource.Layout.autofill_service_list_item);
|
||||
presentation.SetTextViewText(Resource.Id.text, remoteViewsText);
|
||||
presentation.SetImageViewResource(Resource.Id.icon, drawableId);
|
||||
return presentation;
|
||||
}
|
||||
}
|
||||
|
||||
internal static InlinePresentationSpec ExtractSpec(IList<InlinePresentationSpec> inlinePresentationSpecs, int index)
|
||||
{
|
||||
return inlinePresentationSpecs == null ? null : inlinePresentationSpecs[Math.Min(index, inlinePresentationSpecs.Count - 1)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,15 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Android.App;
|
||||
using Android.App.Slices;
|
||||
using Android.Content;
|
||||
using Android.Content.PM;
|
||||
using Android.Graphics;
|
||||
using Android.Graphics.Drawables;
|
||||
using Android.OS;
|
||||
using Android.Preferences;
|
||||
using Android.Runtime;
|
||||
using Android.Service.Autofill;
|
||||
using Android.Util;
|
||||
using Android.Views.Autofill;
|
||||
using Android.Views.InputMethods;
|
||||
using Android.Widget;
|
||||
using Android.Widget.Inline;
|
||||
using AndroidX.AutoFill.Inline;
|
||||
using AndroidX.AutoFill.Inline.V1;
|
||||
using Java.Util.Concurrent.Atomic;
|
||||
using keepass2android.services.AutofillBase.model;
|
||||
|
||||
@@ -31,6 +39,11 @@ namespace keepass2android.services.AutofillBase
|
||||
|
||||
public abstract class AutofillServiceBase: AutofillService
|
||||
{
|
||||
protected override void AttachBaseContext(Context baseContext)
|
||||
{
|
||||
base.AttachBaseContext(LocaleManager.setLocale(baseContext));
|
||||
}
|
||||
|
||||
//use a lock to avoid returning a response several times in buggy Firefox during one connection: this avoids flickering
|
||||
//and disappearing of the autofill prompt.
|
||||
//Instead of using a boolean lock, we use a "time-out lock" which is cleared after a few seconds
|
||||
@@ -125,6 +138,15 @@ namespace keepass2android.services.AutofillBase
|
||||
}
|
||||
|
||||
AutofillFieldMetadataCollection autofillFields = parser.AutofillFields;
|
||||
InlineSuggestionsRequest inlineSuggestionsRequest = null;
|
||||
IList<InlinePresentationSpec> inlinePresentationSpecs = null;
|
||||
if (((int) Build.VERSION.SdkInt >= 30)
|
||||
&& (PreferenceManager.GetDefaultSharedPreferences(this).GetBoolean(GetString(Resource.String.InlineSuggestions_key), true)))
|
||||
{
|
||||
inlineSuggestionsRequest = request.InlineSuggestionsRequest;
|
||||
|
||||
inlinePresentationSpecs = inlineSuggestionsRequest?.InlinePresentationSpecs;
|
||||
}
|
||||
|
||||
|
||||
var autofillIds = autofillFields.GetAutofillIds();
|
||||
@@ -134,13 +156,27 @@ namespace keepass2android.services.AutofillBase
|
||||
|
||||
bool hasEntryDataset = false;
|
||||
|
||||
IList<Dataset> entryDatasets = new List<Dataset>();
|
||||
if (query.IncompatiblePackageAndDomain == false)
|
||||
{
|
||||
Kp2aLog.Log("AF: (query.IncompatiblePackageAndDomain == false)");
|
||||
//domain and package are compatible. Use Domain if available and package otherwise. Can fill without warning.
|
||||
foreach (var entryDataset in BuildEntryDatasets(query.DomainOrPackage, query.WebDomain,
|
||||
query.PackageName,
|
||||
autofillIds, parser, DisplayWarning.None).Where(ds => ds != null)
|
||||
entryDatasets = BuildEntryDatasets(query.DomainOrPackage, query.WebDomain,
|
||||
query.PackageName,
|
||||
autofillIds, parser, DisplayWarning.None,
|
||||
inlinePresentationSpecs
|
||||
).Where(ds => ds != null).ToList();
|
||||
if (entryDatasets.Count > inlineSuggestionsRequest?.MaxSuggestionCount - 2 /*disable dataset and query*/)
|
||||
{
|
||||
//we have too many elements. disable inline suggestions
|
||||
inlinePresentationSpecs = null;
|
||||
entryDatasets = BuildEntryDatasets(query.DomainOrPackage, query.WebDomain,
|
||||
query.PackageName,
|
||||
autofillIds, parser, DisplayWarning.None,
|
||||
null
|
||||
).Where(ds => ds != null).ToList();
|
||||
}
|
||||
foreach (var entryDataset in entryDatasets
|
||||
)
|
||||
{
|
||||
Kp2aLog.Log("AF: Got EntryDataset " + (entryDataset == null));
|
||||
@@ -158,14 +194,16 @@ namespace keepass2android.services.AutofillBase
|
||||
isManual, autofillIds, responseBuilder, !hasEntryDataset,
|
||||
query.IncompatiblePackageAndDomain
|
||||
? DisplayWarning.FillDomainInUntrustedApp
|
||||
: DisplayWarning.None);
|
||||
: DisplayWarning.None,
|
||||
AutofillHelper.ExtractSpec(inlinePresentationSpecs, entryDatasets.Count));
|
||||
else
|
||||
AddQueryDataset(query.PackageNameWithPseudoSchema,
|
||||
query.WebDomain, query.PackageName,
|
||||
isManual, autofillIds, responseBuilder, !hasEntryDataset, DisplayWarning.None);
|
||||
isManual, autofillIds, responseBuilder, !hasEntryDataset, DisplayWarning.None,
|
||||
AutofillHelper.ExtractSpec(inlinePresentationSpecs, entryDatasets.Count));
|
||||
}
|
||||
|
||||
AddDisableDataset(query.DomainOrPackage, autofillIds, responseBuilder, isManual);
|
||||
AddDisableDataset(query.DomainOrPackage, autofillIds, responseBuilder, isManual, AutofillHelper.ExtractSpec(inlinePresentationSpecs, entryDatasets.Count));
|
||||
|
||||
if (PreferenceManager.GetDefaultSharedPreferences(this)
|
||||
.GetBoolean(GetString(Resource.String.OfferSaveCredentials_key), true))
|
||||
@@ -192,20 +230,26 @@ namespace keepass2android.services.AutofillBase
|
||||
Kp2aLog.Log("Ignoring onFillRequest as there is another request going on.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private List<Dataset> BuildEntryDatasets(string query, string queryDomain, string queryPackage, AutofillId[] autofillIds, StructureParser parser,
|
||||
DisplayWarning warning)
|
||||
DisplayWarning warning, IList<InlinePresentationSpec> inlinePresentationSpecs)
|
||||
{
|
||||
List<Dataset> result = new List<Dataset>();
|
||||
Kp2aLog.Log("AF: BuildEntryDatasets");
|
||||
var suggestedEntries = GetSuggestedEntries(query).ToDictionary(e => e.DatasetName, e => e);
|
||||
Kp2aLog.Log("AF: BuildEntryDatasets found " + suggestedEntries.Count + " entries");
|
||||
int count = 0;
|
||||
foreach (var filledAutofillFieldCollection in suggestedEntries.Values)
|
||||
{
|
||||
|
||||
if (filledAutofillFieldCollection == null)
|
||||
continue;
|
||||
|
||||
var inlinePresentationSpec = AutofillHelper.ExtractSpec(inlinePresentationSpecs, count);
|
||||
|
||||
if (warning == DisplayWarning.None)
|
||||
{
|
||||
|
||||
@@ -214,12 +258,13 @@ namespace keepass2android.services.AutofillBase
|
||||
|
||||
Kp2aLog.Log("AF: Add dataset");
|
||||
|
||||
result.Add(AutofillHelper.NewDataset(this, parser.AutofillFields, partitionData, IntentBuilder));
|
||||
result.Add(AutofillHelper.NewDataset(this, parser.AutofillFields, partitionData, IntentBuilder,
|
||||
inlinePresentationSpec));
|
||||
}
|
||||
else
|
||||
{
|
||||
//return an "auth" dataset (actually for just warning the user in case domain/package dont match)
|
||||
var sender =
|
||||
IntentSender sender =
|
||||
IntentBuilder.GetAuthIntentSenderForWarning(this, query, queryDomain, queryPackage, warning);
|
||||
var datasetName = filledAutofillFieldCollection.DatasetName;
|
||||
if (datasetName == null)
|
||||
@@ -233,6 +278,9 @@ namespace keepass2android.services.AutofillBase
|
||||
|
||||
var datasetBuilder = new Dataset.Builder(presentation);
|
||||
datasetBuilder.SetAuthentication(sender);
|
||||
|
||||
AutofillHelper.AddInlinePresentation(this, inlinePresentationSpec, datasetName, datasetBuilder, AppNames.LauncherIcon);
|
||||
|
||||
//need to add placeholders so we can directly fill after ChooseActivity
|
||||
foreach (var autofillId in autofillIds)
|
||||
{
|
||||
@@ -241,6 +289,7 @@ namespace keepass2android.services.AutofillBase
|
||||
Kp2aLog.Log("AF: Add auth dataset");
|
||||
result.Add(datasetBuilder.Build());
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -257,11 +306,12 @@ namespace keepass2android.services.AutofillBase
|
||||
|
||||
}
|
||||
|
||||
private void AddQueryDataset(string query, string queryDomain, string queryPackage, bool isManual, AutofillId[] autofillIds, FillResponse.Builder responseBuilder, bool autoReturnFromQuery, DisplayWarning warning)
|
||||
private void AddQueryDataset(string query, string queryDomain, string queryPackage, bool isManual, AutofillId[] autofillIds, FillResponse.Builder responseBuilder, bool autoReturnFromQuery, DisplayWarning warning, InlinePresentationSpec inlinePresentationSpec)
|
||||
{
|
||||
var sender = IntentBuilder.GetAuthIntentSenderForResponse(this, query, queryDomain, queryPackage, isManual, autoReturnFromQuery, warning);
|
||||
RemoteViews presentation = AutofillHelper.NewRemoteViews(PackageName,
|
||||
GetString(Resource.String.autofill_sign_in_prompt), AppNames.LauncherIcon);
|
||||
string text = GetString(Resource.String.autofill_sign_in_prompt);
|
||||
RemoteViews presentation = AutofillHelper.NewRemoteViews(base.PackageName,
|
||||
text, AppNames.LauncherIcon);
|
||||
|
||||
var datasetBuilder = new Dataset.Builder(presentation);
|
||||
datasetBuilder.SetAuthentication(sender);
|
||||
@@ -271,6 +321,9 @@ namespace keepass2android.services.AutofillBase
|
||||
datasetBuilder.SetValue(autofillId, AutofillValue.ForText("PLACEHOLDER"));
|
||||
}
|
||||
|
||||
AutofillHelper.AddInlinePresentation(this, inlinePresentationSpec, text, datasetBuilder, AppNames.LauncherIcon);
|
||||
|
||||
|
||||
responseBuilder.AddDataset(datasetBuilder.Build());
|
||||
}
|
||||
public static string GetDisplayNameForQuery(string str, Context Context)
|
||||
@@ -303,20 +356,23 @@ namespace keepass2android.services.AutofillBase
|
||||
return displayName;
|
||||
}
|
||||
|
||||
private void AddDisableDataset(string query, AutofillId[] autofillIds, FillResponse.Builder responseBuilder, bool isManual)
|
||||
private void AddDisableDataset(string query, AutofillId[] autofillIds, FillResponse.Builder responseBuilder, bool isManual, InlinePresentationSpec inlinePresentationSpec)
|
||||
{
|
||||
bool isQueryDisabled = IsQueryDisabled(query);
|
||||
if (isQueryDisabled && !isManual)
|
||||
return;
|
||||
bool isForDisable = !isQueryDisabled;
|
||||
var sender = IntentBuilder.GetDisableIntentSenderForResponse(this, query, isManual, isForDisable);
|
||||
|
||||
RemoteViews presentation = AutofillHelper.NewRemoteViews(PackageName,
|
||||
GetString(isForDisable ? Resource.String.autofill_disable : Resource.String.autofill_enable_for, new Java.Lang.Object[] { GetDisplayNameForQuery(query, this)}), Resource.Drawable.ic_menu_close_grey);
|
||||
|
||||
string text = GetString(isForDisable ? Resource.String.autofill_disable : Resource.String.autofill_enable_for, new Java.Lang.Object[] { GetDisplayNameForQuery(query, this) });
|
||||
RemoteViews presentation = AutofillHelper.NewRemoteViews(base.PackageName,
|
||||
text, Resource.Drawable.ic_menu_close_grey);
|
||||
|
||||
var datasetBuilder = new Dataset.Builder(presentation);
|
||||
datasetBuilder.SetAuthentication(sender);
|
||||
|
||||
AutofillHelper.AddInlinePresentation(this, inlinePresentationSpec, text, datasetBuilder, Resource.Drawable.ic_menu_close_grey);
|
||||
|
||||
foreach (var autofillId in autofillIds)
|
||||
{
|
||||
datasetBuilder.SetValue(autofillId, AutofillValue.ForText("PLACEHOLDER"));
|
||||
|
@@ -183,7 +183,7 @@ namespace keepass2android.services.AutofillBase
|
||||
|
||||
|
||||
ReplyIntent = new Intent();
|
||||
SetDatasetIntent(AutofillHelper.NewDataset(this, autofillFields, partitionData, IntentBuilder));
|
||||
SetDatasetIntent(AutofillHelper.NewDataset(this, autofillFields, partitionData, IntentBuilder, null /*TODO can we get the inlinePresentationSpec here?*/));
|
||||
SetResult(Result.Ok, ReplyIntent);
|
||||
}
|
||||
|
||||
|
@@ -312,7 +312,9 @@ namespace keepass2android.services.AutofillBase
|
||||
else
|
||||
{
|
||||
|
||||
if (viewNode.ClassName == "android.widget.EditText" || viewNode?.HtmlInfo?.Tag == "input")
|
||||
if (viewNode.ClassName == "android.widget.EditText"
|
||||
|| viewNode.ClassName == "android.widget.AutoCompleteTextView"
|
||||
|| viewNode?.HtmlInfo?.Tag == "input")
|
||||
{
|
||||
_editTextsWithoutHint.Add(viewNode);
|
||||
}
|
||||
|
@@ -49,6 +49,11 @@ namespace keepass2android
|
||||
[Service]
|
||||
public class CopyToClipboardService : Service
|
||||
{
|
||||
|
||||
protected override void AttachBaseContext(Context baseContext)
|
||||
{
|
||||
base.AttachBaseContext(LocaleManager.setLocale(baseContext));
|
||||
}
|
||||
class PasswordAccessNotificationBuilder
|
||||
{
|
||||
private readonly Context _ctx;
|
||||
|
@@ -136,15 +136,15 @@ namespace keepass2android.services.Kp2aAutofill
|
||||
{PwDefs.PasswordField, new List<string>{View.AutofillHintPassword}},
|
||||
{PwDefs.UrlField, new List<string>{W3cHints.URL}},
|
||||
{
|
||||
Application.Context.GetString(Resource.String.TemplateField_CreditCard_CVV),
|
||||
LocaleManager.LocalizedAppContext.GetString(Resource.String.TemplateField_CreditCard_CVV),
|
||||
new List<string>{View.AutofillHintCreditCardSecurityCode}
|
||||
},
|
||||
{
|
||||
Application.Context.GetString(Resource.String.TemplateField_CreditCard_Owner),
|
||||
LocaleManager.LocalizedAppContext.GetString(Resource.String.TemplateField_CreditCard_Owner),
|
||||
new List<string>{W3cHints.CC_NAME}
|
||||
},
|
||||
{Application.Context.GetString(Resource.String.TemplateField_Number), new List<string>{View.AutofillHintCreditCardNumber}},
|
||||
{Application.Context.GetString(Resource.String.TemplateField_IdCard_Name), new List<string>{View.AutofillHintName}},
|
||||
{LocaleManager.LocalizedAppContext.GetString(Resource.String.TemplateField_Number), new List<string>{View.AutofillHintCreditCardNumber}},
|
||||
{LocaleManager.LocalizedAppContext.GetString(Resource.String.TemplateField_IdCard_Name), new List<string>{View.AutofillHintName}},
|
||||
};
|
||||
return result;
|
||||
}
|
||||
|
@@ -39,6 +39,10 @@ namespace keepass2android
|
||||
[Service]
|
||||
public class OngoingNotificationsService : Service
|
||||
{
|
||||
protected override void AttachBaseContext(Context baseContext)
|
||||
{
|
||||
base.AttachBaseContext(LocaleManager.setLocale(baseContext));
|
||||
}
|
||||
private ScreenOffReceiver _screenOffReceiver;
|
||||
|
||||
#region Service
|
||||
|
@@ -39,6 +39,7 @@ using keepass2android.Utils;
|
||||
using KeePassLib;
|
||||
using KeePassLib.Cryptography.KeyDerivation;
|
||||
using KeePassLib.Interfaces;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
@@ -170,10 +171,42 @@ namespace keepass2android
|
||||
//use system notification channels to control notification visibility
|
||||
unlockedNotificationPref.Parent.RemovePreference(unlockedNotificationPref);
|
||||
}
|
||||
|
||||
|
||||
|
||||
FindPreference(GetString(Resource.String.DebugLog_key)).PreferenceChange += OnDebugLogChanged;
|
||||
FindPreference(GetString(Resource.String.DebugLog_send_key)).PreferenceClick += OnSendDebug;
|
||||
FindPreference(GetString(Resource.String.DebugLog_send_key)).PreferenceClick += OnSendDebug;
|
||||
|
||||
HashSet<string> supportedLocales = new HashSet<string>() { "en", "af", "ar", "az", "be", "bg", "ca", "cs", "da", "de", "el", "es", "eu", "fa", "fi", "fr", "gl", "he", "hr", "hu", "id", "in", "it", "iw", "ja", "ko", "ml", "nb", "nl", "nn", "no", "pl", "pt", "ro", "ru", "si", "sk", "sl", "sr", "sv", "tr", "uk", "vi", "zh" };
|
||||
|
||||
ListPreference appLanguagePref = (ListPreference)FindPreference(GetString(Resource.String.app_language_pref_key));
|
||||
|
||||
var localesByCode = new System.Collections.Generic.Dictionary<string, List<Java.Util.Locale>>();
|
||||
foreach (var loc in Java.Util.Locale.GetAvailableLocales())
|
||||
{
|
||||
if (!supportedLocales.Contains(loc.Language))
|
||||
continue;
|
||||
if (!localesByCode.ContainsKey(loc.Language))
|
||||
{
|
||||
localesByCode[loc.Language] = new List<Java.Util.Locale>();
|
||||
}
|
||||
localesByCode[loc.Language].Add(loc);
|
||||
|
||||
}
|
||||
var localesByCodeUnique = localesByCode.Select(l => new KeyValuePair<string, Java.Util.Locale>(l.Key, l.Value.First())).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
||||
List<KeyValuePair<string, List<Java.Util.Locale>>> codesWithMultiple = localesByCode.Where(l => l.Value.Count > 1).ToList();
|
||||
List<KeyValuePair<string, Java.Util.Locale>> localesByLanguageList = localesByCodeUnique
|
||||
.OrderBy(kvp => kvp.Value.DisplayLanguage).ToList();
|
||||
appLanguagePref.SetEntries(localesByLanguageList.Select(kvp => kvp.Value.DisplayLanguage).ToArray());
|
||||
appLanguagePref.SetEntryValues(localesByLanguageList.Select(kvp => kvp.Value.Language).ToArray());
|
||||
string languageCode = appLanguagePref.Value;
|
||||
string summary = GetDisplayLanguage(localesByCodeUnique, languageCode);
|
||||
((ListPreference)FindPreference(GetString(Resource.String.app_language_pref_key))).Summary = summary;
|
||||
appLanguagePref.PreferenceChange += (sender, args) =>
|
||||
{
|
||||
((ListPreference)FindPreference(GetString(Resource.String.app_language_pref_key))).Summary = GetDisplayLanguage(localesByCodeUnique, (string)args.NewValue);
|
||||
LocaleManager.Language = (string)args.NewValue;
|
||||
};
|
||||
|
||||
|
||||
UpdateAutofillPref();
|
||||
|
||||
@@ -184,7 +217,7 @@ namespace keepass2android
|
||||
{
|
||||
|
||||
var intent = new Intent(Settings.ActionRequestSetAutofillService);
|
||||
if (((AutofillManager) Activity.GetSystemService(Java.Lang.Class.FromType(typeof(AutofillManager))))
|
||||
if (((AutofillManager)Activity.GetSystemService(Java.Lang.Class.FromType(typeof(AutofillManager))))
|
||||
.HasEnabledAutofillServices)
|
||||
{
|
||||
intent.SetData(Android.Net.Uri.Parse("package:" + Context.PackageName + "notexisting")); //if we use our package name, the activity won't launch
|
||||
@@ -218,45 +251,45 @@ namespace keepass2android
|
||||
|
||||
|
||||
PrepareNoDonatePreference(Activity, FindPreference(GetString(Resource.String.NoDonateOption_key)));
|
||||
PrepareNoDonationReminderPreference(Activity, ((PreferenceScreen)FindPreference(GetString(Resource.String.display_prefs_key))), FindPreference(GetString(Resource.String.NoDonationReminder_key)));
|
||||
PrepareNoDonationReminderPreference(Activity, ((PreferenceScreen)FindPreference(GetString(Resource.String.display_prefs_key))), FindPreference(GetString(Resource.String.NoDonationReminder_key)));
|
||||
|
||||
FindPreference(GetString(Resource.String.design_key)).PreferenceChange += (sender, args) => Activity.Recreate();
|
||||
|
||||
FindPreference(GetString(Resource.String.design_key)).PreferenceChange += (sender, args) => Activity.Recreate();
|
||||
|
||||
Database db = App.Kp2a.CurrentDb;
|
||||
if (db != null)
|
||||
{
|
||||
ListPreference kdfPref = (ListPreference) FindPreference(GetString(Resource.String.kdf_key));
|
||||
kdfPref.SetEntries(KdfPool.Engines.Select(eng => eng.Name).ToArray());
|
||||
string[] kdfValues = KdfPool.Engines.Select(eng => eng.Uuid.ToHexString()).ToArray();
|
||||
kdfPref.SetEntryValues(kdfValues);
|
||||
kdfPref.SetValueIndex(kdfValues.Select((v, i) => new {kdf = v, index = i}).First(el => el.kdf == db.KpDatabase.KdfParameters.KdfUuid.ToHexString()).index);
|
||||
kdfPref.PreferenceChange += OnKdfChange;
|
||||
|
||||
aesRounds = FindPreference(GetString(Resource.String.rounds_key));
|
||||
argon2rounds = FindPreference("argon2rounds");
|
||||
argon2memory = FindPreference("argon2memory");
|
||||
argon2parallelism = FindPreference("argon2parallelism");
|
||||
ListPreference kdfPref = (ListPreference)FindPreference(GetString(Resource.String.kdf_key));
|
||||
kdfPref.SetEntries(KdfPool.Engines.Select(eng => eng.Name).ToArray());
|
||||
string[] kdfValues = KdfPool.Engines.Select(eng => eng.Uuid.ToHexString()).ToArray();
|
||||
kdfPref.SetEntryValues(kdfValues);
|
||||
kdfPref.SetValueIndex(kdfValues.Select((v, i) => new { kdf = v, index = i }).First(el => el.kdf == db.KpDatabase.KdfParameters.KdfUuid.ToHexString()).index);
|
||||
kdfPref.PreferenceChange += OnKdfChange;
|
||||
|
||||
aesRounds.PreferenceChange += (sender, e) => UpdateKdfSummary(e.Preference);
|
||||
argon2rounds.PreferenceChange += (sender, e) => UpdateKdfSummary(e.Preference);
|
||||
argon2memory.PreferenceChange += (sender, e) => UpdateKdfSummary(e.Preference);
|
||||
argon2parallelism.PreferenceChange += (sender, e) => UpdateKdfSummary(e.Preference);
|
||||
aesRounds = FindPreference(GetString(Resource.String.rounds_key));
|
||||
argon2rounds = FindPreference("argon2rounds");
|
||||
argon2memory = FindPreference("argon2memory");
|
||||
argon2parallelism = FindPreference("argon2parallelism");
|
||||
|
||||
aesRounds.PreferenceChange += (sender, e) => UpdateKdfSummary(e.Preference);
|
||||
argon2rounds.PreferenceChange += (sender, e) => UpdateKdfSummary(e.Preference);
|
||||
argon2memory.PreferenceChange += (sender, e) => UpdateKdfSummary(e.Preference);
|
||||
argon2parallelism.PreferenceChange += (sender, e) => UpdateKdfSummary(e.Preference);
|
||||
|
||||
UpdateKdfScreen();
|
||||
|
||||
UpdateKdfScreen();
|
||||
|
||||
PrepareDefaultUsername(db);
|
||||
PrepareDatabaseName(db);
|
||||
PrepareMasterPassword();
|
||||
PrepareTemplates(db);
|
||||
|
||||
PrepareTemplates(db);
|
||||
|
||||
ListPreference algorithmPref = (ListPreference)FindPreference(GetString(Resource.String.algorithm_key));
|
||||
algorithmPref.SetEntries(CipherPool.GlobalPool.Engines.Select(eng => eng.DisplayName).ToArray());
|
||||
string[] algoValues = CipherPool.GlobalPool.Engines.Select(eng => eng.CipherUuid.ToHexString()).ToArray();
|
||||
algorithmPref.SetEntryValues(algoValues);
|
||||
algorithmPref.SetValueIndex(algoValues.Select((v, i) => new { kdf = v, index = i }).First(el => el.kdf == db.KpDatabase.DataCipherUuid.ToHexString()).index);
|
||||
algorithmPref.PreferenceChange += AlgorithmPrefChange;
|
||||
algorithmPref.Summary =
|
||||
CipherPool.GlobalPool.GetCipher(App.Kp2a.CurrentDb.KpDatabase.DataCipherUuid).DisplayName;
|
||||
algorithmPref.SetEntries(CipherPool.GlobalPool.Engines.Select(eng => eng.DisplayName).ToArray());
|
||||
string[] algoValues = CipherPool.GlobalPool.Engines.Select(eng => eng.CipherUuid.ToHexString()).ToArray();
|
||||
algorithmPref.SetEntryValues(algoValues);
|
||||
algorithmPref.SetValueIndex(algoValues.Select((v, i) => new { kdf = v, index = i }).First(el => el.kdf == db.KpDatabase.DataCipherUuid.ToHexString()).index);
|
||||
algorithmPref.PreferenceChange += AlgorithmPrefChange;
|
||||
algorithmPref.Summary =
|
||||
CipherPool.GlobalPool.GetCipher(App.Kp2a.CurrentDb.KpDatabase.DataCipherUuid).DisplayName;
|
||||
UpdateImportDbPref();
|
||||
UpdateImportKeyfilePref();
|
||||
}
|
||||
@@ -292,26 +325,36 @@ namespace keepass2android
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Kp2aLog.LogUnexpectedError(ex);
|
||||
Kp2aLog.LogUnexpectedError(ex);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//AppSettingsActivity.PrepareKeyboardSwitchingPreferences(this);
|
||||
_switchPrefManager = new KeyboardSwitchPrefManager(this);
|
||||
PrepareSeparateNotificationsPreference();
|
||||
|
||||
FindPreference("IconSetKey").PreferenceChange += (sender, args) =>
|
||||
{
|
||||
if (App.Kp2a.CurrentDb!= null)
|
||||
App.Kp2a.CurrentDb.DrawableFactory.Clear();
|
||||
FindPreference("IconSetKey").PreferenceChange += (sender, args) =>
|
||||
{
|
||||
if (App.Kp2a.CurrentDb != null)
|
||||
App.Kp2a.CurrentDb.DrawableFactory.Clear();
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
Preference cachingPreference = FindPreference(GetString(Resource.String.UseOfflineCache_key));
|
||||
cachingPreference.PreferenceChange += OnUseOfflineCacheChanged;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private string GetDisplayLanguage(Dictionary<string, Java.Util.Locale> localesByCode, string languageCode)
|
||||
{
|
||||
return languageCode != null && localesByCode.ContainsKey(languageCode) ? localesByCode[languageCode]?.DisplayLanguage : GetString(Resource.String.SystemLanguage);
|
||||
}
|
||||
|
||||
private void AppLanguagePref_PreferenceChange(object sender, Preference.PreferenceChangeEventArgs e)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void UpdateAutofillPref()
|
||||
@@ -320,6 +363,8 @@ namespace keepass2android
|
||||
var autofillPref = FindPreference(GetString(Resource.String.AutoFill_prefs_key));
|
||||
var autofillDisabledPref = FindPreference(GetString(Resource.String.AutofillDisabledQueriesPreference_key));
|
||||
var autofillSavePref = FindPreference(GetString(Resource.String.OfferSaveCredentials_key));
|
||||
var autofillInlineSuggestions = FindPreference(GetString(Resource.String.InlineSuggestions_key));
|
||||
var autofillNoDalVerification = FindPreference(GetString(Resource.String.NoDalVerification_key));
|
||||
if (autofillPref == null)
|
||||
return;
|
||||
if ((Android.OS.Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.O) ||
|
||||
@@ -337,17 +382,28 @@ namespace keepass2android
|
||||
{
|
||||
autofillDisabledPref.Enabled = true;
|
||||
autofillSavePref.Enabled = true;
|
||||
autofillNoDalVerification.Enabled = true;
|
||||
autofillInlineSuggestions.Enabled = true;
|
||||
autofillPref.Summary = Activity.GetString(Resource.String.plugin_enabled);
|
||||
autofillPref.Intent = new Intent(Intent.ActionView);
|
||||
autofillPref.Intent.SetData(Android.Net.Uri.Parse("https://philippc.github.io/keepass2android/OreoAutoFill.html"));
|
||||
}
|
||||
else
|
||||
{
|
||||
autofillNoDalVerification.Enabled = false;
|
||||
autofillDisabledPref.Enabled = false;
|
||||
autofillSavePref.Enabled = false;
|
||||
autofillInlineSuggestions.Enabled = false;
|
||||
autofillPref.Summary = Activity.GetString(Resource.String.not_enabled);
|
||||
}
|
||||
|
||||
if ((int)Android.OS.Build.VERSION.SdkInt < 30)
|
||||
{
|
||||
autofillInlineSuggestions.Summary = Activity.GetString(Resource.String.requires_android11);
|
||||
CheckBoxPreference cbp = autofillInlineSuggestions as CheckBoxPreference;
|
||||
if (cbp != null)
|
||||
cbp.Checked = false;
|
||||
autofillInlineSuggestions.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -612,7 +668,7 @@ namespace keepass2android
|
||||
catch (Exception ex)
|
||||
{
|
||||
Kp2aLog.LogUnexpectedError(ex);
|
||||
Toast.MakeText(Application.Context, ex.Message, ToastLength.Long).Show();
|
||||
Toast.MakeText(LocaleManager.LocalizedAppContext, ex.Message, ToastLength.Long).Show();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@@ -67,7 +67,7 @@ namespace keepass2android
|
||||
AlarmManager am = (AlarmManager)ctx.GetSystemService(Context.AlarmService);
|
||||
|
||||
Kp2aLog.Log("Timeout start");
|
||||
am.Set(AlarmType.Rtc, triggerTime, BuildPendingBroadcastIntent(App.Context));
|
||||
am.Set(AlarmType.Rtc, triggerTime, BuildPendingBroadcastIntent(LocaleManager.LocalizedAppContext));
|
||||
}
|
||||
|
||||
public static void ResumingApp(Context ctx)
|
||||
@@ -77,7 +77,7 @@ namespace keepass2android
|
||||
AlarmManager am = (AlarmManager)ctx.GetSystemService(Context.AlarmService);
|
||||
//cancel alarm
|
||||
Kp2aLog.Log("Timeout cancel");
|
||||
am.Cancel(BuildPendingBroadcastIntent(App.Context));
|
||||
am.Cancel(BuildPendingBroadcastIntent(LocaleManager.LocalizedAppContext));
|
||||
App.Kp2a.TimeoutTime = DateTime.MaxValue;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user