Compare commits
240 Commits
persist-ft
...
update-lib
Author | SHA1 | Date | |
---|---|---|---|
![]() |
830494851d | ||
![]() |
6e30dd35ee | ||
![]() |
dad9b0e53f | ||
![]() |
b2b0b8ddc9 | ||
![]() |
9494f28acf | ||
![]() |
a98cd33cff | ||
![]() |
65092dcccf | ||
![]() |
e464c59796 | ||
![]() |
7dcccf1105 | ||
![]() |
8d354bb3f0 | ||
![]() |
5882263ee8 | ||
![]() |
38e305bb4a | ||
![]() |
177b1fc9a3 | ||
![]() |
8bde5ed262 | ||
![]() |
247b37262d | ||
![]() |
84230b32ef | ||
![]() |
a54444e919 | ||
![]() |
4b55e2ce8b | ||
![]() |
5ae718c58e | ||
![]() |
669022ddf0 | ||
![]() |
f0fd21a6ec | ||
![]() |
73a8ec27d4 | ||
![]() |
51902c9bc4 | ||
![]() |
32d3abf5d6 | ||
![]() |
543eeb69ef | ||
![]() |
ec6e1593b0 | ||
![]() |
ee27bea111 | ||
![]() |
de93b12877 | ||
![]() |
71d2a332c7 | ||
![]() |
37d1481658 | ||
![]() |
a8cc1ad66d | ||
![]() |
3056ee9d45 | ||
![]() |
0ec5996c8d | ||
![]() |
01666d8402 | ||
![]() |
422fa01ba1 | ||
![]() |
ca9c19e8a9 | ||
![]() |
093f7683b8 | ||
![]() |
d4cf908f4a | ||
![]() |
55d62144fb | ||
![]() |
c181565aaa | ||
![]() |
c0c4524562 | ||
![]() |
eac1803084 | ||
![]() |
58904f1166 | ||
![]() |
54eb1baee2 | ||
![]() |
ada01924ba | ||
![]() |
e38e7df221 | ||
![]() |
fb4ab84ceb | ||
![]() |
4475fac51e | ||
![]() |
13ef4ca9ff | ||
![]() |
f297ebcd40 | ||
![]() |
a5ef4ccc7a | ||
![]() |
dfd9c32251 | ||
![]() |
5397a1c88f | ||
![]() |
fdcd4321e0 | ||
![]() |
11013791ef | ||
![]() |
6958a2d189 | ||
![]() |
94ec8cf1ac | ||
![]() |
63631fa81f | ||
![]() |
107d9c6235 | ||
![]() |
8e4ee4f588 | ||
![]() |
f0a06faae1 | ||
![]() |
99db263833 | ||
![]() |
e2e42cd177 | ||
![]() |
a376c6ee0b | ||
![]() |
0326e02ddd | ||
![]() |
d75482f3bd | ||
![]() |
bca0d042a1 | ||
![]() |
29eaf5f205 | ||
![]() |
78da5e2973 | ||
![]() |
20541618f9 | ||
![]() |
e459d280f2 | ||
![]() |
705e2e4a86 | ||
![]() |
cf9b368afc | ||
![]() |
f1c6a5365c | ||
![]() |
6a61bf6364 | ||
![]() |
814571c746 | ||
![]() |
fc5587260f | ||
![]() |
674ba7bd71 | ||
![]() |
556f82f786 | ||
![]() |
58c5c5882b | ||
![]() |
a706571e66 | ||
![]() |
3997b21aec | ||
![]() |
c354612369 | ||
![]() |
4fea731c87 | ||
![]() |
e189776ba9 | ||
![]() |
31255f0c52 | ||
![]() |
059280efd0 | ||
![]() |
5edc070aa8 | ||
![]() |
95843b1134 | ||
![]() |
d2ea9b18a8 | ||
![]() |
828425ab0e | ||
![]() |
4395f422b3 | ||
![]() |
be2c28811c | ||
![]() |
fcc4d44786 | ||
![]() |
337e6324ff | ||
![]() |
310143c612 | ||
![]() |
49cb33a4da | ||
![]() |
c934755e1c | ||
![]() |
64355a3da7 | ||
![]() |
9579f3bf51 | ||
![]() |
674ae26bd7 | ||
![]() |
d2778e8496 | ||
![]() |
cc19e6f326 | ||
![]() |
dd7a2718c9 | ||
![]() |
9c50d2d98a | ||
![]() |
8ee13acdde | ||
![]() |
aeda304919 | ||
![]() |
9f08e0039b | ||
![]() |
dfd101da77 | ||
![]() |
f4b5eee171 | ||
![]() |
98e31942e1 | ||
![]() |
385aad8fb0 | ||
![]() |
3e383d50f8 | ||
![]() |
8c089a8711 | ||
![]() |
098123787d | ||
![]() |
a22b8474c3 | ||
![]() |
8fc4607a34 | ||
![]() |
4b56405960 | ||
![]() |
c4b41001b3 | ||
![]() |
cb51be349e | ||
![]() |
13170bb88c | ||
![]() |
88a20d947c | ||
![]() |
4fcc2625c0 | ||
![]() |
324cf74a2b | ||
![]() |
e3d14221f9 | ||
![]() |
7d0a43397a | ||
![]() |
a6d1b26479 | ||
![]() |
79ad753218 | ||
![]() |
24ee49ea9f | ||
![]() |
ab6e8e3685 | ||
![]() |
81e8820732 | ||
![]() |
93c72ee04e | ||
![]() |
8a53357e3d | ||
![]() |
c12ae13077 | ||
![]() |
071fc3fd51 | ||
![]() |
ad6ced3aad | ||
![]() |
6ef8b8fc3b | ||
![]() |
825793f385 | ||
![]() |
bd6af10fd5 | ||
![]() |
2e9400cf4d | ||
![]() |
c719043159 | ||
![]() |
c6e32937ce | ||
![]() |
081b77c2bd | ||
![]() |
a950298c11 | ||
![]() |
eafd3bb702 | ||
![]() |
0e53f91d01 | ||
![]() |
96156bf8b9 | ||
![]() |
8efc1f3c1f | ||
![]() |
67d20124ff | ||
![]() |
b93739926d | ||
![]() |
4afac75bb4 | ||
![]() |
cea41d1446 | ||
![]() |
dd5b744bfb | ||
![]() |
47cbe5b0ab | ||
![]() |
99950e3c93 | ||
![]() |
df8f375b59 | ||
![]() |
fdc213bfc1 | ||
![]() |
428b008017 | ||
![]() |
3d4a0a79f9 | ||
![]() |
008e55598c | ||
![]() |
7c3832830e | ||
![]() |
c3e234da25 | ||
![]() |
6ba0b29c77 | ||
![]() |
b16f747913 | ||
![]() |
35ac1cf642 | ||
![]() |
5d2da784b9 | ||
![]() |
86b225034c | ||
![]() |
727cf74201 | ||
![]() |
6f8ae7be34 | ||
![]() |
a84d26b151 | ||
![]() |
6f7419e38a | ||
![]() |
bdb11f4873 | ||
![]() |
87603cd9c1 | ||
![]() |
e6cec96504 | ||
![]() |
fb478af6c7 | ||
![]() |
9991964c9b | ||
![]() |
d761f07fc9 | ||
![]() |
b18515dd8c | ||
![]() |
2677cae5e6 | ||
![]() |
cb832c412f | ||
![]() |
97018b15f7 | ||
![]() |
6b06d4ba8d | ||
![]() |
902fc6f6d3 | ||
![]() |
d4fd8db455 | ||
![]() |
9f1be03dc4 | ||
![]() |
7b863e115f | ||
![]() |
06fa5a5fcd | ||
![]() |
b1837468d7 | ||
![]() |
0ffe6cda16 | ||
![]() |
0ba1e946d1 | ||
![]() |
ba2890cc80 | ||
![]() |
ee9750e689 | ||
![]() |
3f358fed38 | ||
![]() |
4eb7b4519e | ||
![]() |
9b61f651c4 | ||
![]() |
c716fa0c12 | ||
![]() |
013d69b520 | ||
![]() |
fec2875e6a | ||
![]() |
1a1036f7b8 | ||
![]() |
b9fcf8deda | ||
![]() |
a9a88dbdbe | ||
![]() |
d3f505fb55 | ||
![]() |
da10ebd2f4 | ||
![]() |
daeee50e09 | ||
![]() |
f602367a6c | ||
![]() |
db2ad49f36 | ||
![]() |
a782843b29 | ||
![]() |
e35babb8eb | ||
![]() |
e6b296c0b9 | ||
![]() |
44692afa98 | ||
![]() |
491912a6ab | ||
![]() |
5cb02e88bf | ||
![]() |
69ce92a7b7 | ||
![]() |
a09e2656be | ||
![]() |
445923e12c | ||
![]() |
6499c97206 | ||
![]() |
41ef1900a1 | ||
![]() |
290f61d114 | ||
![]() |
11f45c61e8 | ||
![]() |
ac6df5d10f | ||
![]() |
206ab3ac42 | ||
![]() |
33847deb00 | ||
![]() |
baf9a29646 | ||
![]() |
66166e44a0 | ||
![]() |
8ace491d84 | ||
![]() |
39deef4053 | ||
![]() |
1faa0b06bd | ||
![]() |
1eb1e1cb2b | ||
![]() |
d551969b04 | ||
![]() |
0f0c1ddbfd | ||
![]() |
b46f2984a3 | ||
![]() |
cce1e2794e | ||
![]() |
3d2ae980b7 | ||
![]() |
a8f4fcde7b | ||
![]() |
add8b2dad6 | ||
![]() |
50074d547f | ||
![]() |
e6b425a30e | ||
![]() |
9af9d34d87 | ||
![]() |
4fee92f591 | ||
![]() |
1b658f1c39 |
67
.github/workflows/build.yml
vendored
67
.github/workflows/build.yml
vendored
@@ -1,6 +1,10 @@
|
||||
name: Build keepass2android app
|
||||
|
||||
on: [push, pull_request]
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
# macos:
|
||||
@@ -10,16 +14,15 @@ jobs:
|
||||
# runs-on: macos-12
|
||||
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
|
||||
# - name: Fetch submodules
|
||||
# run: git submodule init && git submodule update
|
||||
# - uses: actions/checkout@v4
|
||||
# with:
|
||||
# submodules: true
|
||||
|
||||
# - name: Setup Gradle
|
||||
# uses: gradle/gradle-build-action@v2
|
||||
# uses: gradle/actions/setup-gradle@v3
|
||||
|
||||
# - name: Cache NuGet packages
|
||||
# uses: actions/cache@v3
|
||||
# uses: actions/cache@v4
|
||||
# with:
|
||||
# path: ~/.nuget/packages
|
||||
# key: ${{ runner.os }}-nuget-${{ hashFiles('src/**/*.csproj', 'src/**/packages.config') }}
|
||||
@@ -52,7 +55,7 @@ jobs:
|
||||
# # $VM_ASSETS/select-xamarin-sdk-v2.sh --mono=6.12 --android=11.2
|
||||
|
||||
# - name: Switch to JDK-11
|
||||
# uses: actions/setup-java@v3
|
||||
# uses: actions/setup-java@v4
|
||||
# with:
|
||||
# java-version: '11'
|
||||
# distribution: 'temurin'
|
||||
@@ -82,7 +85,7 @@ jobs:
|
||||
# make apk Flavor=Net
|
||||
|
||||
# - name: Archive production artifacts (net)
|
||||
# uses: actions/upload-artifact@v3
|
||||
# uses: actions/upload-artifact@v4
|
||||
# with:
|
||||
# name: signed APK ('net' built on ${{ github.job }})
|
||||
# path: |
|
||||
@@ -100,7 +103,7 @@ jobs:
|
||||
# make apk Flavor=NoNet
|
||||
|
||||
# - name: Archive production artifacts (nonet)
|
||||
# uses: actions/upload-artifact@v3
|
||||
# uses: actions/upload-artifact@v4
|
||||
# with:
|
||||
# name: signed APK ('nonet' built on ${{ github.job }})
|
||||
# path: |
|
||||
@@ -130,16 +133,15 @@ jobs:
|
||||
# # Build Artifact of xamarin.android-oss dated 2022-02-16, master branch (= version 12.2.99)
|
||||
# xamarin_url: https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzU0OTUzL2FydGlmYWN0TmFtZS9pbnN0YWxsZXJzLXVuc2lnbmVkKy0rTGludXg1/content?format=zip
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
|
||||
# - name: Fetch submodules
|
||||
# run: git submodule init && git submodule update
|
||||
# - uses: actions/checkout@v4
|
||||
# with:
|
||||
# submodules: true
|
||||
|
||||
# - name: Setup Gradle
|
||||
# uses: gradle/gradle-build-action@v2
|
||||
# uses: gradle/actions/setup-gradle@v3
|
||||
|
||||
# - name: Cache NuGet packages
|
||||
# uses: actions/cache@v3
|
||||
# uses: actions/cache@v4
|
||||
# with:
|
||||
# path: ~/.nuget/packages
|
||||
# key: ${{ runner.os }}-nuget-${{ hashFiles('src/**/*.csproj', 'src/**/packages.config') }}
|
||||
@@ -148,7 +150,7 @@ jobs:
|
||||
|
||||
# - name: Cache Xamarin.Android packages
|
||||
# id: xamarin_cache
|
||||
# uses: actions/cache@v3
|
||||
# uses: actions/cache@v4
|
||||
# with:
|
||||
# path: ~/xamarin.android-oss
|
||||
# key: ${{ runner.os }}-xamarin.android-oss-${{ env.xamarin_url }}
|
||||
@@ -183,7 +185,7 @@ jobs:
|
||||
# echo "$HOME/xamarin.android-oss/bin/Release/bin" >> $GITHUB_PATH
|
||||
|
||||
# - name: Switch to JDK-11
|
||||
# uses: actions/setup-java@v3
|
||||
# uses: actions/setup-java@v4
|
||||
# with:
|
||||
# java-version: '11'
|
||||
# distribution: 'temurin'
|
||||
@@ -217,7 +219,7 @@ jobs:
|
||||
# make apk Flavor=Net
|
||||
|
||||
# - name: Archive production artifacts (net)
|
||||
# uses: actions/upload-artifact@v3
|
||||
# uses: actions/upload-artifact@v4
|
||||
# with:
|
||||
# name: signed APK ('net' built on ${{ github.job }})
|
||||
# path: |
|
||||
@@ -235,7 +237,7 @@ jobs:
|
||||
# make apk Flavor=NoNet
|
||||
|
||||
# - name: Archive production artifacts (nonet)
|
||||
# uses: actions/upload-artifact@v3
|
||||
# uses: actions/upload-artifact@v4
|
||||
# with:
|
||||
# name: signed APK ('nonet' built on ${{ github.job }})
|
||||
# path: |
|
||||
@@ -254,39 +256,38 @@ jobs:
|
||||
runs-on: windows-2022
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/gradle-build-action@v2
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
|
||||
- name: Cache NuGet packages
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.nuget/packages
|
||||
key: ${{ runner.os }}-nuget-${{ hashFiles('src/**/*.csproj', 'src/**/packages.config') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-nuget-
|
||||
|
||||
- name: Fetch submodules
|
||||
run: git submodule init && git submodule update
|
||||
|
||||
# Workaround an issue when building on windows-2022. Error was
|
||||
# D8 : OpenJDK 64-Bit Server VM warning : INFO: os::commit_memory(0x00000000ae400000, 330301440, 0) failed; error='The paging file is too small for this operation to complete' (DOS error/errno=1455) [D:\a\keepass2android\keepass2android\src\keepass2android\keepass2android-app.csproj]
|
||||
# C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.D8.targets(81,5): error MSB6006: "java.exe" exited with code 1. [D:\a\keepass2android\keepass2android\src\keepass2android\keepass2android-app.csproj]
|
||||
- name: Configure Pagefile
|
||||
uses: al-cheb/configure-pagefile-action@v1.3
|
||||
uses: al-cheb/configure-pagefile-action@a3b6ebd6b634da88790d9c58d4b37a7f4a7b8708 # v1.4
|
||||
with:
|
||||
minimum-size: 8GB
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v1.1
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
# If we want to also have nmake, use this instead
|
||||
#uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Switch to JDK-11
|
||||
uses: actions/setup-java@v3
|
||||
- name: Switch to JDK-17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
|
||||
- name: Display java version
|
||||
@@ -320,7 +321,7 @@ jobs:
|
||||
make apk Flavor=Net
|
||||
|
||||
- name: Archive production artifacts (net)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: signed APK ('net' built on ${{ github.job }})
|
||||
path: |
|
||||
@@ -341,7 +342,7 @@ jobs:
|
||||
make apk Flavor=NoNet
|
||||
|
||||
- name: Archive production artifacts (nonet)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: signed APK ('nonet' built on ${{ github.job }})
|
||||
path: |
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -176,3 +176,4 @@ src/java/Keepass2AndroidPluginSDK2/build/generated/mockable-Google-Inc.-Google-A
|
||||
/src/ActionViewFilterTest
|
||||
/docs/gdrive-verification
|
||||
/src/MegaTest
|
||||
*.dtbcache.json
|
||||
|
@@ -68,6 +68,9 @@ Please see the [How to use Keepass2Android with YubiKey NEO](How-to-use-Keepass2
|
||||
## Advanced usage of the Keepass2Android keyboard
|
||||
Please see the [Advanced usage of the Keepass2Android keyboard](Advanced-usage-of-the-Keepass2Android-keyboard.md) page.
|
||||
|
||||
## Using Keepass2Android like an authenticator app to generate Time-based One-Time-Passwords (TOTPs)
|
||||
Please see [Generating TOTPs with Keepass2Android](Generating-TOTPs.md)
|
||||
|
||||
# FAQ
|
||||
|
||||
## Should I use the KP2A keyboard for entering passwords?
|
||||
|
53
docs/Generating-TOTPs.md
Normal file
53
docs/Generating-TOTPs.md
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
## TOTP in brief
|
||||
TOTP stands for [Time-based One-Time Password algorithm](https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm) which is one of the most common way proposed by websites to do a [two-factor authentication (2FA)](https://en.wikipedia.org/wiki/Multi-factor_authentication).
|
||||
|
||||
On these websites, this option will often be mentioned in the 2FA configuration menu as things like "_use code generated by an application_", "_use [Google] Authenticator app_".
|
||||
|
||||
You're prompted to scan a QR code with the app, which essentially contains a code called "_seed_", usually with a form like "_AZER TYUI OPQS DFGH JKLM_", used to generate TOTPs. The seed can be also directly copied if there is no scanning option on the app.
|
||||
|
||||
Most common apps:
|
||||
|
||||
- Google Authenticator
|
||||
- Authy
|
||||
- Microsoft Authenticator
|
||||
- FreeOTP
|
||||
- LastPass Authenticator
|
||||
|
||||
## TOTP in KeePass and benefits
|
||||
In KeePass (by Dominik Reichl) there is are several ways to enable this Authenticator app ability:
|
||||
|
||||
- built-in TOTP support: https://keepass.info/help/base/placeholders.html#otp
|
||||
- [KeePassOTP plugin](https://keepass.info/plugins.html#kpotp)
|
||||
- [KeeOtp plugin](https://keepass.info/plugins.html#keeotp)
|
||||
- [KeeTrayTOTP plugin](https://keepass.info/plugins.html#keetraytotp) (note the name "_TrayTOTP_" on this one for later)
|
||||
|
||||
KeePassXC also supports TOTP: https://keepassxc.org/docs/KeePassXC_UserGuide#_adding_totp_to_an_entry
|
||||
|
||||
The greatest benefits are:
|
||||
|
||||
- the seed stays available contrary to the above apps (for which it's more or less hard to backup/restore/switch with another app)
|
||||
- TOTPs are available wherever the KeePass database is available. But conceptually it's not really 2FA anymore (all things are stored in the same place).
|
||||
|
||||
The different implementations use different ways of storing the TOTP seed (or secret, or key) and optional settings (e.g. the length of the TOTP to generate) within an entry inside the kdbx database. Keepass2Android attempts to be able to read the different formats, but can only write one:
|
||||
|
||||
## TOTP in Keepass2Android
|
||||
|
||||
If you use any of the tools mentioned above, you can set up TOTP entries with them. Keepass2Android can read those entries and generate TOTPs if any of the following styles are used:
|
||||
|
||||
* Keepass2 style: used when there are TimeOtp-Secret(-XXX) fields in the entry
|
||||
* KeeOtpPlugin style: used when there is an otp field containing a query string in the form of key=abc&step=X&size=Y (step and size are optional)
|
||||
* KeeWebOtp/Key Uri Format style: used when entry contains a URL starting with otpauth://totp/, e.g. otpauth://totp/?secret=abc (https://github.com/google/google-authenticator/wiki/Key-Uri-Format)
|
||||
* KeeTrayTotp style:
|
||||
* requires a non-empty seed field (default key is "TOTP seed", can be changed in KP2A settings), value is base32 encoded data
|
||||
* requires a non-empty settings field (default key is "TOTP Settings", can be changed as well), value is expected to be a csv-separated array with [Duration];Length(;TimeCorrectionURL). Length is either an integer value or "S" to indicate Steam encoding
|
||||
|
||||
In order to view the generated TOTP code in KP2A, open the corresponding entry. You can then
|
||||
* use a dynamically generated field called "_TOTP_" containing the TOTP or
|
||||
* use the "Copy TOTP" button on the system notification for the selected entry or
|
||||
* switch to the KP2A keyboard and use the TOTP button to insert the TOTP value into the target app or browser
|
||||
|
||||
If you want to configure an entry to contain the TOTP fields, it is suggested to enter edit mode for the entry. Then click the "Configure TOTP" button. You can either enter the data manually or scan a QR code with the information.
|
||||
|
||||
### Spaces in otp field
|
||||
Make sure that the URI doesn't contain spaces, otherwise KeePass2Android will fail to generate TOTPs as a space is an invalid character. If your URIs have spaces, check [this comment](https://github.com/PhilippC/keepass2android/issues/1248#issuecomment-628035961)._
|
@@ -3,13 +3,13 @@
|
||||
Creating a plug-in for Keepass2Android or enabling your app to query credentials from Keepass2Android is pretty simple. Please follow the steps below to get started. In case you have any questions, please contact me.
|
||||
|
||||
## Preparations
|
||||
First check out the source code and import the Keepass2AndroidPluginSDK from [https://keepass2android.codeplex.com/SourceControl/latest#src/java/Keepass2AndroidPluginSDK/](https://keepass2android.codeplex.com/SourceControl/latest#src/java/Keepass2AndroidPluginSDK/) into your workspace. You should be able to build this library project.
|
||||
First check out the source code and import the Keepass2AndroidPluginSDK from [https://github.com/PhilippC/keepass2android/tree/master/src/java/Keepass2AndroidPluginSDK2](https://github.com/PhilippC/keepass2android/tree/master/src/java/Keepass2AndroidPluginSDK2/) into your workspace. You should be able to build this library project.
|
||||
|
||||
Now add a reference to the PluginSDK library from your existing app or add a new plug-in app and then add the reference.
|
||||
|
||||
## Authorization
|
||||
|
||||
Keepass2Android stores very sensitive user data and therefore implements a plug-in authorization scheme based on broadcasts sent between the plug-in and the host app (=Keepass2Android or Keepass2Android Offline). Before your app/plug-in gets any information from KP2A, the user will have to grant your app/plug-in access to KP2A. As not every app/plug-in requires access to all information, you must specify which scopes are required by your app. The implemented scopes can be found in [https://keepass2android.codeplex.com/SourceControl/latest#src/java/Keepass2AndroidPluginSDK/src/keepass2android/pluginsdk/Strings.java](https://keepass2android.codeplex.com/SourceControl/latest#src/java/Keepass2AndroidPluginSDK/src/keepass2android/pluginsdk/Strings.java).
|
||||
Keepass2Android stores very sensitive user data and therefore implements a plug-in authorization scheme based on broadcasts sent between the plug-in and the host app (=Keepass2Android or Keepass2Android Offline). Before your app/plug-in gets any information from KP2A, the user will have to grant your app/plug-in access to KP2A. As not every app/plug-in requires access to all information, you must specify which scopes are required by your app. The implemented scopes can be found in [https://github.com/PhilippC/keepass2android/tree/master/src/java/Keepass2AndroidPluginSDK2/src/keepass2android/pluginsdk/Strings.java](https://github.com/PhilippC/keepass2android/tree/master/src/java/Keepass2AndroidPluginSDK2/src/keepass2android/pluginsdk/Strings.java).
|
||||
|
||||
To tell Kp2a that you're a plug-in, you need to add a simple BroadcastReceiver like this:
|
||||
|
||||
@@ -55,8 +55,8 @@ These strings will be displayed to the user when KP2A asks if access should be g
|
||||
|
||||
## Modifying the entry view
|
||||
You can add menu options for the full entry or for individual fields of the entry when displayed to the user. This is done, for example, by the QR plugin ([https://play.google.com/store/apps/details?id=keepass2android.plugin.qr](https://play.google.com/store/apps/details?id=keepass2android.plugin.qr)).
|
||||
In addition, it is even possible to add new fields or modify existing fields. Please see the sample plugin "PluginA" in the KP2A repository for a simple example on how to do this:
|
||||
[https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/src/keepass2android/plugina/PluginAActionReceiver.java](https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/src/keepass2android/plugina/PluginAActionReceiver.java)
|
||||
In addition, it is even possible to add new fields or modify existing fields. Please see the sample plugin "PluginA" for a simple example on how to do this:
|
||||
[https://github.com/PhilippC/keepass2android-sampleplugin/blob/main/src/keepass2android/plugina/PluginAAccessReceiver.java](https://github.com/PhilippC/keepass2android-sampleplugin/blob/main/src/keepass2android/plugina/PluginAAccessReceiver.java)
|
||||
|
||||
## Querying credentials
|
||||
KP2A 0.9.4 adds a great opportunity for third party apps: Instead of prompting the user to enter credentials or a passphrase, the app should try to get the data from KP2A if it is installed: If the user grants (or previously granted) access for the app, KP2A will automatically retrieve the matching entry. User action is only required if the KP2A database is locked (user will usually unlock it with the short QuickUnlock code) or if no matching entry is found (user can then create a new entry or select an existing one. in the latter case KP2A will offer to add entry information so that the entry will be found automatically next time).
|
||||
|
Binary file not shown.
BIN
src/JavaFileStorageBindings/Jars/jackson-core-2.13.5.jar
Normal file
BIN
src/JavaFileStorageBindings/Jars/jackson-core-2.13.5.jar
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.microsoft.services.msa"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="14"
|
||||
android:targetSdkVersion="22" />
|
||||
|
||||
<uses-permission android:name="com.sony.mobile.permission.SYSTEM_UI_VISIBILITY_EXTENSION" />
|
||||
|
||||
</manifest>
|
@@ -1 +0,0 @@
|
||||
int string app_name 0x7f020000
|
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.microsoft.services.msa"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="14"
|
||||
android:targetSdkVersion="22" />
|
||||
|
||||
<uses-permission android:name="com.sony.mobile.permission.SYSTEM_UI_VISIBILITY_EXTENSION" />
|
||||
|
||||
</manifest>
|
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- From: file:/C:/Users/pnied/Documents/git/msa-auth-for-android/src/main/res/values/strings.xml -->
|
||||
<eat-comment/>
|
||||
<string name="app_name">msa-auth</string>
|
||||
</resources>
|
Binary file not shown.
BIN
src/JavaFileStorageBindings/Jars/okhttp-4.12.0.jar
Normal file
BIN
src/JavaFileStorageBindings/Jars/okhttp-4.12.0.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/JavaFileStorageBindings/Jars/okhttp-digest-3.1.0.jar
Normal file
BIN
src/JavaFileStorageBindings/Jars/okhttp-digest-3.1.0.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/JavaFileStorageBindings/Jars/okio-3.6.0.jar
Normal file
BIN
src/JavaFileStorageBindings/Jars/okio-3.6.0.jar
Normal file
Binary file not shown.
BIN
src/JavaFileStorageBindings/Jars/okio-jvm-3.6.0.jar
Normal file
BIN
src/JavaFileStorageBindings/Jars/okio-jvm-3.6.0.jar
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.microsoft.onedrivesdk"
|
||||
android:versionCode="10202"
|
||||
android:versionName="1.2.2" >
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="15"
|
||||
android:targetSdkVersion="23" />
|
||||
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
|
||||
|
||||
</manifest>
|
@@ -1,22 +0,0 @@
|
||||
int dimen activity_horizontal_margin 0x7f030000
|
||||
int dimen activity_vertical_margin 0x7f030001
|
||||
int id LinearLayout1 0x7f060004
|
||||
int id com_microsoft_aad_adal_editDummyText 0x7f060002
|
||||
int id com_microsoft_aad_adal_progressBar 0x7f060003
|
||||
int id com_microsoft_aad_adal_webView1 0x7f060001
|
||||
int id editPassword 0x7f060006
|
||||
int id editUserName 0x7f060005
|
||||
int id webView1 0x7f060000
|
||||
int layout activity_authentication 0x7f020000
|
||||
int layout dialog_authentication 0x7f020001
|
||||
int layout http_auth_dialog 0x7f020002
|
||||
int string app_loading 0x7f050000
|
||||
int string app_name 0x7f050001
|
||||
int string broker_processing 0x7f050002
|
||||
int string http_auth_dialog_cancel 0x7f050003
|
||||
int string http_auth_dialog_login 0x7f050004
|
||||
int string http_auth_dialog_password 0x7f050005
|
||||
int string http_auth_dialog_title 0x7f050006
|
||||
int string http_auth_dialog_username 0x7f050007
|
||||
int style AppBaseTheme 0x7f040000
|
||||
int style AppTheme 0x7f040001
|
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.microsoft.onedrivesdk"
|
||||
android:versionCode="10202"
|
||||
android:versionName="1.2.2" >
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="15"
|
||||
android:targetSdkVersion="23" />
|
||||
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
|
||||
|
||||
</manifest>
|
Binary file not shown.
@@ -183,6 +183,7 @@
|
||||
<LibraryProjectZip Include="..\java\JavaFileStorage\app\build\outputs\aar\JavaFileStorage-debug.aar">
|
||||
<Link>Jars\JavaFileStorage-debug.aar</Link>
|
||||
</LibraryProjectZip>
|
||||
<None Include="app.config" />
|
||||
<None Include="Jars\AboutJars.txt" />
|
||||
<None Include="Additions\AboutAdditions.txt" />
|
||||
<None Include="packages.config" />
|
||||
@@ -212,12 +213,6 @@
|
||||
<Name>PCloudBindings</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\msa-auth-0.8.6\classes-msa-auth.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\onedrive-sdk-android-1.2.2\classes-onedrive-sdk.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\gdrive\commons-logging-1.1.1.jar" />
|
||||
</ItemGroup>
|
||||
@@ -242,21 +237,6 @@
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\gdrive\google-http-client-gson-1.16.0-rc.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\jackson-core-2.7.4.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\okhttp-digest-2.5.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\okio-2.9.0.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\okhttp-4.10.0-RC1.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedJar Include="Jars\dropbox-core-sdk-4.0.0.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\gson-2.8.6.jar" />
|
||||
</ItemGroup>
|
||||
@@ -290,18 +270,30 @@
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\gdrive\opencensus-api-0.24.0.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\okhttp-4.12.0.jar" />
|
||||
<EmbeddedReferenceJar Include="Jars\okio-3.6.0.jar" />
|
||||
<EmbeddedReferenceJar Include="Jars\okio-jvm-3.6.0.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\okhttp-digest-3.1.0.jar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\dropbox-core-sdk-5.4.6.jar" />
|
||||
<EmbeddedReferenceJar Include="Jars\jackson-core-2.13.5.jar" />
|
||||
</ItemGroup>
|
||||
<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>
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Google.Guava.FailureAccess.1.0.1.3\build\monoandroid90\Xamarin.Google.Guava.FailureAccess.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Google.Guava.FailureAccess.1.0.1.3\build\monoandroid90\Xamarin.Google.Guava.FailureAccess.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Google.Guava.28.2.0.1\build\monoandroid90\Xamarin.Google.Guava.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Google.Guava.28.2.0.1\build\monoandroid90\Xamarin.Google.Guava.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.AndroidX.MultiDex.2.0.1.13\build\monoandroid12.0\Xamarin.AndroidX.MultiDex.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.AndroidX.MultiDex.2.0.1.13\build\monoandroid12.0\Xamarin.AndroidX.MultiDex.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.AndroidX.Migration.1.0.10\build\monoandroid120\Xamarin.AndroidX.Migration.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.AndroidX.Migration.1.0.10\build\monoandroid120\Xamarin.AndroidX.Migration.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.AndroidX.Migration.1.0.10\build\monoandroid120\Xamarin.AndroidX.Migration.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.AndroidX.Migration.1.0.10\build\monoandroid120\Xamarin.AndroidX.Migration.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Build.Download.0.11.4\build\Xamarin.Build.Download.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Build.Download.0.11.4\build\Xamarin.Build.Download.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Build.Download.0.11.4\build\Xamarin.Build.Download.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Build.Download.0.11.4\build\Xamarin.Build.Download.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.AndroidX.MultiDex.2.0.1.13\build\monoandroid12.0\Xamarin.AndroidX.MultiDex.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.AndroidX.MultiDex.2.0.1.13\build\monoandroid12.0\Xamarin.AndroidX.MultiDex.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Google.Guava.FailureAccess.1.0.1.3\build\monoandroid90\Xamarin.Google.Guava.FailureAccess.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Google.Guava.FailureAccess.1.0.1.3\build\monoandroid90\Xamarin.Google.Guava.FailureAccess.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Google.Guava.ListenableFuture.1.0.0.9\build\monoandroid12.0\Xamarin.Google.Guava.ListenableFuture.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Google.Guava.ListenableFuture.1.0.0.9\build\monoandroid12.0\Xamarin.Google.Guava.ListenableFuture.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Google.Guava.28.2.0.1\build\monoandroid90\Xamarin.Google.Guava.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Google.Guava.28.2.0.1\build\monoandroid90\Xamarin.Google.Guava.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Jetbrains.Annotations.23.0.0.4\build\monoandroid12.0\Xamarin.Jetbrains.Annotations.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Jetbrains.Annotations.23.0.0.4\build\monoandroid12.0\Xamarin.Jetbrains.Annotations.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Kotlin.StdLib.Common.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Kotlin.StdLib.Common.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Common.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Kotlin.StdLib.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Kotlin.StdLib.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.targets'))" />
|
||||
@@ -326,7 +318,6 @@
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Kotlin.StdLib.Jdk7.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Jdk7.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Kotlin.StdLib.Jdk7.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Jdk7.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.Kotlin.StdLib.Jdk8.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Jdk8.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Kotlin.StdLib.Jdk8.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Jdk8.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.KotlinX.Coroutines.Core.Jvm.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Core.Jvm.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.KotlinX.Coroutines.Core.Jvm.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Core.Jvm.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.KotlinX.Coroutines.Android.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Android.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.KotlinX.Coroutines.Android.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Android.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.2.5.1\build\monoandroid12.0\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.2.5.1\build\monoandroid12.0\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.AndroidX.Activity.1.6.0\build\monoandroid12.0\Xamarin.AndroidX.Activity.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.AndroidX.Activity.1.6.0\build\monoandroid12.0\Xamarin.AndroidX.Activity.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.AndroidX.Fragment.1.5.3\build\monoandroid12.0\Xamarin.AndroidX.Fragment.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.AndroidX.Fragment.1.5.3\build\monoandroid12.0\Xamarin.AndroidX.Fragment.targets'))" />
|
||||
@@ -337,13 +328,14 @@
|
||||
<Error Condition="!Exists('..\packages\Xamarin.GooglePlayServices.Auth.Base.118.0.6\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Auth.Base.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.GooglePlayServices.Auth.Base.118.0.6\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Auth.Base.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.GooglePlayServices.Fido.119.0.0\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Fido.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.GooglePlayServices.Fido.119.0.0\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Fido.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.GooglePlayServices.Auth.120.4.0\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Auth.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.GooglePlayServices.Auth.120.4.0\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Auth.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Xamarin.KotlinX.Coroutines.Android.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Android.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.KotlinX.Coroutines.Android.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Android.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Xamarin.Google.Guava.FailureAccess.1.0.1.3\build\monoandroid90\Xamarin.Google.Guava.FailureAccess.targets" Condition="Exists('..\packages\Xamarin.Google.Guava.FailureAccess.1.0.1.3\build\monoandroid90\Xamarin.Google.Guava.FailureAccess.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Google.Guava.28.2.0.1\build\monoandroid90\Xamarin.Google.Guava.targets" Condition="Exists('..\packages\Xamarin.Google.Guava.28.2.0.1\build\monoandroid90\Xamarin.Google.Guava.targets')" />
|
||||
<Import Project="..\packages\Xamarin.AndroidX.MultiDex.2.0.1.13\build\monoandroid12.0\Xamarin.AndroidX.MultiDex.targets" Condition="Exists('..\packages\Xamarin.AndroidX.MultiDex.2.0.1.13\build\monoandroid12.0\Xamarin.AndroidX.MultiDex.targets')" />
|
||||
<Import Project="..\packages\Xamarin.AndroidX.Migration.1.0.10\build\monoandroid120\Xamarin.AndroidX.Migration.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Migration.1.0.10\build\monoandroid120\Xamarin.AndroidX.Migration.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Build.Download.0.11.4\build\Xamarin.Build.Download.targets" Condition="Exists('..\packages\Xamarin.Build.Download.0.11.4\build\Xamarin.Build.Download.targets')" />
|
||||
<Import Project="..\packages\Xamarin.AndroidX.MultiDex.2.0.1.13\build\monoandroid12.0\Xamarin.AndroidX.MultiDex.targets" Condition="Exists('..\packages\Xamarin.AndroidX.MultiDex.2.0.1.13\build\monoandroid12.0\Xamarin.AndroidX.MultiDex.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Google.Guava.FailureAccess.1.0.1.3\build\monoandroid90\Xamarin.Google.Guava.FailureAccess.targets" Condition="Exists('..\packages\Xamarin.Google.Guava.FailureAccess.1.0.1.3\build\monoandroid90\Xamarin.Google.Guava.FailureAccess.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Google.Guava.ListenableFuture.1.0.0.9\build\monoandroid12.0\Xamarin.Google.Guava.ListenableFuture.targets" Condition="Exists('..\packages\Xamarin.Google.Guava.ListenableFuture.1.0.0.9\build\monoandroid12.0\Xamarin.Google.Guava.ListenableFuture.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Google.Guava.28.2.0.1\build\monoandroid90\Xamarin.Google.Guava.targets" Condition="Exists('..\packages\Xamarin.Google.Guava.28.2.0.1\build\monoandroid90\Xamarin.Google.Guava.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Jetbrains.Annotations.23.0.0.4\build\monoandroid12.0\Xamarin.Jetbrains.Annotations.targets" Condition="Exists('..\packages\Xamarin.Jetbrains.Annotations.23.0.0.4\build\monoandroid12.0\Xamarin.Jetbrains.Annotations.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Kotlin.StdLib.Common.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Common.targets" Condition="Exists('..\packages\Xamarin.Kotlin.StdLib.Common.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Common.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Kotlin.StdLib.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.targets" Condition="Exists('..\packages\Xamarin.Kotlin.StdLib.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.targets')" />
|
||||
@@ -368,7 +360,6 @@
|
||||
<Import Project="..\packages\Xamarin.Kotlin.StdLib.Jdk7.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Jdk7.targets" Condition="Exists('..\packages\Xamarin.Kotlin.StdLib.Jdk7.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Jdk7.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Kotlin.StdLib.Jdk8.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Jdk8.targets" Condition="Exists('..\packages\Xamarin.Kotlin.StdLib.Jdk8.1.7.10\build\monoandroid12.0\Xamarin.Kotlin.StdLib.Jdk8.targets')" />
|
||||
<Import Project="..\packages\Xamarin.KotlinX.Coroutines.Core.Jvm.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Core.Jvm.targets" Condition="Exists('..\packages\Xamarin.KotlinX.Coroutines.Core.Jvm.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Core.Jvm.targets')" />
|
||||
<Import Project="..\packages\Xamarin.KotlinX.Coroutines.Android.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Android.targets" Condition="Exists('..\packages\Xamarin.KotlinX.Coroutines.Android.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Android.targets')" />
|
||||
<Import Project="..\packages\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.2.5.1\build\monoandroid12.0\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.2.5.1\build\monoandroid12.0\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.targets')" />
|
||||
<Import Project="..\packages\Xamarin.AndroidX.Activity.1.6.0\build\monoandroid12.0\Xamarin.AndroidX.Activity.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Activity.1.6.0\build\monoandroid12.0\Xamarin.AndroidX.Activity.targets')" />
|
||||
<Import Project="..\packages\Xamarin.AndroidX.Fragment.1.5.3\build\monoandroid12.0\Xamarin.AndroidX.Fragment.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Fragment.1.5.3\build\monoandroid12.0\Xamarin.AndroidX.Fragment.targets')" />
|
||||
@@ -379,4 +370,5 @@
|
||||
<Import Project="..\packages\Xamarin.GooglePlayServices.Auth.Base.118.0.6\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Auth.Base.targets" Condition="Exists('..\packages\Xamarin.GooglePlayServices.Auth.Base.118.0.6\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Auth.Base.targets')" />
|
||||
<Import Project="..\packages\Xamarin.GooglePlayServices.Fido.119.0.0\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Fido.targets" Condition="Exists('..\packages\Xamarin.GooglePlayServices.Fido.119.0.0\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Fido.targets')" />
|
||||
<Import Project="..\packages\Xamarin.GooglePlayServices.Auth.120.4.0\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Auth.targets" Condition="Exists('..\packages\Xamarin.GooglePlayServices.Auth.120.4.0\build\MonoAndroid12.0\Xamarin.GooglePlayServices.Auth.targets')" />
|
||||
<Import Project="..\packages\Xamarin.KotlinX.Coroutines.Android.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Android.targets" Condition="Exists('..\packages\Xamarin.KotlinX.Coroutines.Android.1.6.4\build\monoandroid12.0\Xamarin.KotlinX.Coroutines.Android.targets')" />
|
||||
</Project>
|
15
src/JavaFileStorageBindings/app.config
Normal file
15
src/JavaFileStorageBindings/app.config
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Google.Apis.Auth" publicKeyToken="4b01fa6e34db77ab" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.67.0.0" newVersion="1.67.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
@@ -24,8 +24,8 @@
|
||||
<package id="Xamarin.AndroidX.VersionedParcelable" version="1.1.1.14" targetFramework="monoandroid13.0" />
|
||||
<package id="Xamarin.AndroidX.ViewPager" version="1.0.0.14" targetFramework="monoandroid13.0" />
|
||||
<package id="Xamarin.Build.Download" version="0.11.4" targetFramework="monoandroid13.0" />
|
||||
<package id="Xamarin.Google.Guava" version="28.2.0.1" targetFramework="monoandroid90" />
|
||||
<package id="Xamarin.Google.Guava.FailureAccess" version="1.0.1.3" targetFramework="monoandroid90" />
|
||||
<package id="Xamarin.Google.Guava" version="28.2.0.1" targetFramework="monoandroid13.0" />
|
||||
<package id="Xamarin.Google.Guava.FailureAccess" version="1.0.1.3" targetFramework="monoandroid13.0" />
|
||||
<package id="Xamarin.Google.Guava.ListenableFuture" version="1.0.0.9" targetFramework="monoandroid13.0" />
|
||||
<package id="Xamarin.GooglePlayServices.Auth" version="120.4.0" targetFramework="monoandroid13.0" />
|
||||
<package id="Xamarin.GooglePlayServices.Auth.Api.Phone" version="118.0.1.2" targetFramework="monoandroid13.0" />
|
||||
|
@@ -27,7 +27,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "keepass2android-app", "keep
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kp2aAutofillParser", "Kp2aAutofillParser\Kp2aAutofillParser.csproj", "{39B12571-BAFE-4D3A-AEE2-4D74F14DFD96}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kp2aAutofillParserTest", "Kp2aAutofillParserTest\Kp2aAutofillParserTest.csproj", "{3D1560FF-86BB-4CB4-8367-80BA13B81C38}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kp2aAutofillParserTest", "Kp2aAutofillParserTest\Kp2aAutofillParserTest.csproj", "{3D1560FF-86BB-4CB4-8367-80BA13B81C38}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
@@ -185,7 +185,7 @@ namespace KeePassLib.Serialization
|
||||
byte[] pbFile = StrUtil.Utf8.GetBytes(sb.ToString());
|
||||
|
||||
s = IOConnection.OpenWrite(iocLockFile);
|
||||
if(s == null) throw new IOException(iocLockFile.GetDisplayName());
|
||||
if(s == null) throw new IOException(UrlUtil.GetFileName(iocLockFile.Path));
|
||||
s.Write(pbFile, 0, pbFile.Length);
|
||||
}
|
||||
finally { if(s != null) s.Close(); }
|
||||
@@ -205,8 +205,7 @@ namespace KeePassLib.Serialization
|
||||
if(lfiEx != null)
|
||||
{
|
||||
m_iocLockFile = null; // Otherwise Dispose deletes the existing one
|
||||
throw new FileLockException(iocBaseFile.GetDisplayName(),
|
||||
lfiEx.GetOwner());
|
||||
throw new FileLockException(UrlUtil.GetFileName(iocBaseFile.Path), lfiEx.GetOwner());
|
||||
}
|
||||
|
||||
LockFileInfo.Create(m_iocLockFile);
|
||||
|
@@ -28,6 +28,7 @@ using System.Diagnostics;
|
||||
|
||||
using KeePassLib.Resources;
|
||||
using KeePassLib.Serialization;
|
||||
using Android.Webkit;
|
||||
|
||||
namespace KeePassLib.Utility
|
||||
{
|
||||
@@ -411,7 +412,7 @@ Clipboard.SetText(ObjectsToMessage(vLines, true));*/
|
||||
public static void ShowLoadWarning(IOConnectionInfo ioConnection, Exception ex)
|
||||
{
|
||||
if (ioConnection != null)
|
||||
ShowLoadWarning(ioConnection.GetDisplayName(), ex, false);
|
||||
ShowLoadWarning(UrlUtil.GetFileName(ioConnection.Path), ex, false);
|
||||
else ShowWarning(ex);
|
||||
}
|
||||
|
||||
@@ -444,7 +445,7 @@ Clipboard.SetText(ObjectsToMessage(vLines, true));*/
|
||||
bool bCorruptionWarning)
|
||||
{
|
||||
if (ioConnection != null)
|
||||
ShowSaveWarning(ioConnection.GetDisplayName(), ex, bCorruptionWarning);
|
||||
ShowSaveWarning(UrlUtil.GetFileName(ioConnection.Path), ex, bCorruptionWarning);
|
||||
else ShowWarning(ex);
|
||||
}
|
||||
|
||||
|
@@ -434,7 +434,7 @@ namespace Kp2aAutofillParser
|
||||
public static List<string> ConvertToCanonicalLowerCaseHints(string[] supportedHints)
|
||||
{
|
||||
List<string> result = new List<string>();
|
||||
foreach (string hint in supportedHints)
|
||||
foreach (string hint in supportedHints.Where(h => h != null))
|
||||
{
|
||||
var canonicalHint = ToCanonicalHint(hint);
|
||||
result.Add(canonicalHint.ToLower());
|
||||
@@ -829,7 +829,7 @@ namespace Kp2aAutofillParser
|
||||
// * if there is no such autofill hint, we use IsPassword to
|
||||
|
||||
HashSet<string> autofillHintsOfAllFields = autofillView.InputFields.Where(f => f.AutofillHints != null)
|
||||
.SelectMany(f => f.AutofillHints).Select(AutofillHintsHelper.ToCanonicalHint).ToHashSet();
|
||||
.SelectMany(f => f.AutofillHints).Where(x => x != null).Select(AutofillHintsHelper.ToCanonicalHint).ToHashSet();
|
||||
bool hasLoginAutofillHints = autofillHintsOfAllFields.Intersect(_autofillHintsForLogin).Any();
|
||||
|
||||
if (hasLoginAutofillHints)
|
||||
@@ -839,9 +839,9 @@ namespace Kp2aAutofillParser
|
||||
string[] viewHints = viewNode.AutofillHints;
|
||||
if (viewHints == null)
|
||||
continue;
|
||||
if (viewHints.Select(AutofillHintsHelper.ToCanonicalHint).Intersect(_autofillHintsForLogin).Any())
|
||||
if (viewHints.Where(h => h != null).Select(AutofillHintsHelper.ToCanonicalHint).Intersect(_autofillHintsForLogin).Any())
|
||||
{
|
||||
AddFieldToHintMap(viewNode, viewHints.Select(AutofillHintsHelper.ToCanonicalHint).ToHashSet().ToArray());
|
||||
AddFieldToHintMap(viewNode, viewHints.Where(h => h != null).Select(AutofillHintsHelper.ToCanonicalHint).ToHashSet().ToArray());
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -6,7 +6,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@@ -71,6 +71,12 @@ namespace Kp2aAutofillParserTest
|
||||
var resourceName = "Kp2aAutofillParserTest.com-expressvpn-vpn-android13.json";
|
||||
RunTestFromAutofillInput(resourceName, "com.expressvpn.vpn", null);
|
||||
}
|
||||
[Fact]
|
||||
public void TestIgnoresAndroidSettings()
|
||||
{
|
||||
var resourceName = "Kp2aAutofillParserTest.android14-settings.json";
|
||||
RunTestFromAutofillInput(resourceName, "com.android.settings", null);
|
||||
}
|
||||
|
||||
private void RunTestFromAutofillInput(string resourceName, string expectedPackageName = null, string expectedWebDomain = null)
|
||||
{
|
||||
|
@@ -9,6 +9,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="android14-settings.json" />
|
||||
<None Remove="chrome-android10-amazon-it.json" />
|
||||
<None Remove="com-expressvpn-vpn-android13.json" />
|
||||
<None Remove="com-ifs-banking-fiid3364-android13.json" />
|
||||
@@ -19,13 +20,13 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector" Version="3.1.2">
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.2">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
@@ -54,6 +55,9 @@
|
||||
<EmbeddedResource Include="com-servicenet-mobile-no-focus.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="android14-settings.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="imdb.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
|
99
src/Kp2aAutofillParserTest/android14-settings.json
Normal file
99
src/Kp2aAutofillParserTest/android14-settings.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"InputFields": [
|
||||
{
|
||||
"IdEntry": null,
|
||||
"Hint": null,
|
||||
"ClassName": "android.widget.FrameLayout",
|
||||
"AutofillHints": null,
|
||||
"IsFocused": false,
|
||||
"InputType": 0,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null
|
||||
},
|
||||
{
|
||||
"IdEntry": "content_parent",
|
||||
"Hint": null,
|
||||
"ClassName": "android.widget.LinearLayout",
|
||||
"AutofillHints": null,
|
||||
"IsFocused": false,
|
||||
"InputType": 0,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null
|
||||
},
|
||||
{
|
||||
"IdEntry": "content_frame",
|
||||
"Hint": null,
|
||||
"ClassName": "android.widget.FrameLayout",
|
||||
"AutofillHints": null,
|
||||
"IsFocused": false,
|
||||
"InputType": 0,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null
|
||||
},
|
||||
{
|
||||
"IdEntry": "main_content",
|
||||
"Hint": null,
|
||||
"ClassName": "android.widget.FrameLayout",
|
||||
"AutofillHints": null,
|
||||
"IsFocused": false,
|
||||
"InputType": 0,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null
|
||||
},
|
||||
{
|
||||
"IdEntry": "password_entry",
|
||||
"Hint": null,
|
||||
"ClassName": "android.widget.EditText",
|
||||
"AutofillHints": [
|
||||
"passwordAuto"
|
||||
],
|
||||
"IsFocused": true,
|
||||
"InputType": 18,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null,
|
||||
"ExpectedAssignedHints": [ "password" ]
|
||||
},
|
||||
{
|
||||
"IdEntry": "checkbox",
|
||||
"Hint": null,
|
||||
"ClassName": "android.widget.CheckBox",
|
||||
"AutofillHints": null,
|
||||
"IsFocused": false,
|
||||
"InputType": 0,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null
|
||||
},
|
||||
{
|
||||
"IdEntry": "button_bar",
|
||||
"Hint": null,
|
||||
"ClassName": "android.widget.RelativeLayout",
|
||||
"AutofillHints": null,
|
||||
"IsFocused": false,
|
||||
"InputType": 0,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null
|
||||
},
|
||||
{
|
||||
"IdEntry": "switch_bar",
|
||||
"Hint": null,
|
||||
"ClassName": "android.widget.LinearLayout",
|
||||
"AutofillHints": null,
|
||||
"IsFocused": false,
|
||||
"InputType": 0,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null
|
||||
},
|
||||
{
|
||||
"IdEntry": "action_bar",
|
||||
"Hint": null,
|
||||
"ClassName": "android.view.ViewGroup",
|
||||
"AutofillHints": null,
|
||||
"IsFocused": false,
|
||||
"InputType": 0,
|
||||
"HtmlInfoTag": null,
|
||||
"HtmlInfoTypeAttribute": null
|
||||
}
|
||||
],
|
||||
"PackageId": "com.android.settings",
|
||||
"WebDomain": null
|
||||
}
|
@@ -124,7 +124,7 @@ namespace keepass2android.Io
|
||||
&& File.Exists(VersionFilePath(ioc))
|
||||
&& File.Exists(BaseVersionFilePath(ioc));
|
||||
|
||||
Kp2aLog.Log(ioc.GetDisplayName() + " isCached = " + result);
|
||||
Kp2aLog.Log(GetDisplayName(ioc) + " isCached = " + result);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -598,13 +598,14 @@ namespace keepass2android.Io
|
||||
public string GetBaseVersionHash(IOConnectionInfo ioc)
|
||||
{
|
||||
string hash = File.ReadAllText(BaseVersionFilePath(ioc));
|
||||
Kp2aLog.Log(ioc.GetDisplayName() + " baseVersionHash = " + hash);
|
||||
Kp2aLog.Log(GetDisplayName(ioc) + " baseVersionHash = " + hash);
|
||||
return hash;
|
||||
}
|
||||
public string GetLocalVersionHash(IOConnectionInfo ioc)
|
||||
{
|
||||
string hash = File.ReadAllText(VersionFilePath(ioc));
|
||||
Kp2aLog.Log(ioc.GetDisplayName() + " localVersionHash = " + hash);
|
||||
|
||||
Kp2aLog.Log(GetDisplayName(ioc) + " localVersionHash = " + hash);
|
||||
return hash;
|
||||
}
|
||||
public bool HasLocalChanges(IOConnectionInfo ioc)
|
||||
|
@@ -348,7 +348,7 @@ namespace keepass2android.Io
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new Exception("Error finding " + filename + " in " + folderPath.GetDisplayName(), e);
|
||||
throw new Exception("Error finding " + filename + " in " + GetDisplayName(folderPath), e);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,31 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using KeePassLib.Serialization;
|
||||
#if !EXCLUDE_JAVAFILESTORAGE
|
||||
using Keepass2android.Javafilestorage;
|
||||
using Exception = Java.Lang.Exception;
|
||||
|
||||
namespace keepass2android.Io
|
||||
{
|
||||
public class OneDriveFileStorage: JavaFileStorage
|
||||
/// <summary>
|
||||
/// This IFileStorage implementation becomes picked if a user is using a skydrive:// or onedrive:// file.
|
||||
/// These refer to an old (Java) implementation which was replaced starting in 2019. The successor uses onedrive2:// (see OneDrive2FileStorage)
|
||||
/// The Java implementation was removed in 2024 when the jar files became unavailable. We are keeping this file to notify any user who haven't updated their
|
||||
/// file storage within 5 years.
|
||||
/// This file should be removed around mid 2025.
|
||||
/// </summary>
|
||||
public class OneDriveFileStorage: IFileStorage
|
||||
{
|
||||
private const string ClientId = "000000004010C234";
|
||||
|
||||
public OneDriveFileStorage(Context ctx, IKp2aApp app) :
|
||||
base(new Keepass2android.Javafilestorage.OneDriveStorage(ctx, ClientId), app)
|
||||
{
|
||||
}
|
||||
|
||||
public override IEnumerable<string> SupportedProtocols
|
||||
public IEnumerable<string> SupportedProtocols
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -34,10 +26,146 @@ namespace keepass2android.Io
|
||||
}
|
||||
}
|
||||
|
||||
public override bool UserShouldBackup
|
||||
private Exception GetDeprecatedMessage()
|
||||
{
|
||||
return new Exception(
|
||||
"You have opened your file through a deprecated Microsoft API. Please select Change database, Open Database and then select One Drive again.");
|
||||
}
|
||||
|
||||
public bool UserShouldBackup
|
||||
{
|
||||
get { return false; }
|
||||
}
|
||||
|
||||
public void Delete(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public bool CheckForFileChangeFast(IOConnectionInfo ioc, string previousFileVersion)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public string GetCurrentFileVersionFast(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public Stream OpenFileForRead(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public IWriteTransaction OpenWriteTransaction(IOConnectionInfo ioc, bool useFileTransaction)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public string GetFilenameWithoutPathAndExt(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public string GetFileExtension(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public bool RequiresCredentials(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public void CreateDirectory(IOConnectionInfo ioc, string newDirName)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public IEnumerable<FileDescription> ListContents(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public FileDescription GetFileDescription(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public bool RequiresSetup(IOConnectionInfo ioConnection)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public string IocToPath(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public void StartSelectFile(IFileStorageSetupInitiatorActivity activity, bool isForSave, int requestCode, string protocolId)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode,
|
||||
bool alwaysReturnSuccess)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public void PrepareFileUsage(Context ctx, IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public void OnCreate(IFileStorageSetupActivity activity, Bundle savedInstanceState)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public void OnResume(IFileStorageSetupActivity activity)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public void OnStart(IFileStorageSetupActivity activity)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public void OnActivityResult(IFileStorageSetupActivity activity, int requestCode, int resultCode, Intent data)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public string GetDisplayName(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public string CreateFilePath(string parent, string newFilename)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public IOConnectionInfo GetParentPath(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public IOConnectionInfo GetFilePath(IOConnectionInfo folderPath, string filename)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public bool IsPermanentLocation(IOConnectionInfo ioc)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
|
||||
public bool IsReadOnly(IOConnectionInfo ioc, OptionalOut<UiStringKey> reason = null)
|
||||
{
|
||||
throw GetDeprecatedMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@@ -5,7 +5,7 @@ namespace keepass2android.Io
|
||||
{
|
||||
public class PCloudFileStorage: JavaFileStorage
|
||||
{
|
||||
private const string ClientId = "CkRWTQXY6Lm";
|
||||
private const string ClientId = "yCeH59Ffgtm";
|
||||
|
||||
public PCloudFileStorage(Context ctx, IKp2aApp app) :
|
||||
base(new Keepass2android.Javafilestorage.PCloudFileStorage(ctx, ClientId, "pcloud", ""), app)
|
||||
|
@@ -1,9 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" InitialTargets="showFlavor">
|
||||
<Target Name="showFlavor" AfterTargets="Build">
|
||||
<Message Importance="high" Text="building flavor $(Flavor)"></Message>
|
||||
<Target Name="showFlavor" AfterTargets="Build">
|
||||
<Message Importance="high" Text="building flavor $(Flavor)">
|
||||
</Message>
|
||||
</Target>
|
||||
<Import Project="../build-properties.props"/>
|
||||
<Import Project="../build-properties.props" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
@@ -182,10 +183,10 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(Flavor)'!='NoNet' ">
|
||||
<PackageReference Include="FluentFTP">
|
||||
<Version>48.0.0</Version>
|
||||
<Version>51.1.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MegaApiClient">
|
||||
<Version>1.10.3</Version>
|
||||
<Version>1.10.4</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Graph">
|
||||
<Version>1.21.0</Version>
|
||||
|
@@ -91,6 +91,28 @@ namespace keepass2android
|
||||
|
||||
}
|
||||
|
||||
public PwGroup SearchForUuid(Database database, string uuid)
|
||||
{
|
||||
SearchParameters sp = SearchParameters.None;
|
||||
sp.SearchInUuids = true;
|
||||
sp.SearchString = uuid;
|
||||
|
||||
if (sp.RegularExpression) // Validate regular expression
|
||||
{
|
||||
new Regex(sp.SearchString);
|
||||
}
|
||||
|
||||
string strGroupName = _app.GetResourceString(UiStringKey.search_results);
|
||||
PwGroup pgResults = new PwGroup(true, true, strGroupName, PwIcon.EMailSearch) { IsVirtual = true };
|
||||
|
||||
PwObjectList<PwEntry> listResults = pgResults.Entries;
|
||||
|
||||
database.Root.SearchEntries(sp, listResults, new NullStatusLogger());
|
||||
|
||||
return pgResults;
|
||||
|
||||
}
|
||||
|
||||
private static String ExtractHost(String url)
|
||||
{
|
||||
return UrlUtil.GetHost(url.Trim());
|
||||
|
@@ -72,6 +72,7 @@ namespace keepass2android
|
||||
}
|
||||
|
||||
private IDatabaseFormat _databaseFormat = new KdbxDatabaseFormat(KdbxFormat.Default);
|
||||
private bool? _hasTotpEntries;
|
||||
|
||||
public bool ReloadRequested { get; set; }
|
||||
|
||||
@@ -104,6 +105,7 @@ namespace keepass2android
|
||||
SearchHelper = new SearchDbHelper(app);
|
||||
|
||||
_databaseFormat = databaseFormat;
|
||||
_hasTotpEntries = null;
|
||||
|
||||
CanWrite = databaseFormat.CanWrite && !fileStorage.IsReadOnly(iocInfo);
|
||||
}
|
||||
@@ -175,6 +177,13 @@ namespace keepass2android
|
||||
|
||||
return group;
|
||||
|
||||
}
|
||||
public PwGroup SearchForUuid(String uuid)
|
||||
{
|
||||
PwGroup group = SearchHelper.SearchForUuid(this, uuid);
|
||||
|
||||
return group;
|
||||
|
||||
}
|
||||
|
||||
public PwGroup SearchForHost(String url, bool allowSubdomains) {
|
||||
@@ -193,9 +202,22 @@ namespace keepass2android
|
||||
|
||||
trans.CommitWrite();
|
||||
}
|
||||
_hasTotpEntries = null;
|
||||
|
||||
}
|
||||
|
||||
public bool HasTotpEntries
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_hasTotpEntries == null)
|
||||
{
|
||||
_hasTotpEntries = true;
|
||||
}
|
||||
return _hasTotpEntries.Value;
|
||||
}
|
||||
}
|
||||
|
||||
private void PopulateGlobals(PwGroup currentGroup, bool checkForDuplicateUuids )
|
||||
{
|
||||
|
||||
|
Binary file not shown.
BIN
src/PCloudBindings/Jars/pcloud-sdk-android-1.9.1.aar
Normal file
BIN
src/PCloudBindings/Jars/pcloud-sdk-android-1.9.1.aar
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/PCloudBindings/Jars/pcloud-sdk-java-core-1.9.1.jar
Normal file
BIN
src/PCloudBindings/Jars/pcloud-sdk-java-core-1.9.1.jar
Normal file
Binary file not shown.
@@ -56,7 +56,7 @@
|
||||
<ItemGroup>
|
||||
<None Include="Jars\AboutJars.txt" />
|
||||
<None Include="Additions\AboutAdditions.txt" />
|
||||
<LibraryProjectZip Include="Jars\pcloud-sdk-android-1.8.1.aar" />
|
||||
<LibraryProjectZip Include="Jars\pcloud-sdk-android-1.9.1.aar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<TransformFile Include="Transforms\Metadata.xml" />
|
||||
@@ -72,6 +72,6 @@
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\pcloud-sdk-java-core-1.8.1.jar" />
|
||||
<EmbeddedReferenceJar Include="Jars\pcloud-sdk-java-core-1.9.1.jar" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
@@ -4,11 +4,10 @@ android {
|
||||
|
||||
namespace 'keepass2android.javafilestorage'
|
||||
|
||||
compileSdkVersion 33
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 15
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
compileSdk 34
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
@@ -22,6 +21,10 @@ android {
|
||||
sourceCompatibility 11
|
||||
targetCompatibility 11
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
exclude 'META-INF/DEPENDENCIES'
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -30,27 +33,21 @@ NOTE: If you change dependencies here, don't forget to update the jar files in J
|
||||
|
||||
dependencies {
|
||||
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.10.0-RC1'
|
||||
implementation 'com.burgstaller:okhttp-digest:2.5'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
|
||||
implementation 'io.github.rburgst:okhttp-digest:3.1.0'
|
||||
|
||||
implementation 'com.google.http-client:google-http-client-gson:1.20.0'
|
||||
implementation('com.google.api-client:google-api-client-android:1.30.5') {
|
||||
exclude group: 'com.google.android.google-play-services'
|
||||
}
|
||||
implementation 'com.google.apis:google-api-services-drive:v2-rev102-1.16.0-rc'
|
||||
implementation 'com.dropbox.core:dropbox-core-sdk:4.0.0'
|
||||
implementation 'com.dropbox.core:dropbox-core-sdk:5.4.6'
|
||||
implementation 'com.google.api-client:google-api-client:1.30.5'
|
||||
implementation 'com.google.api-client:google-api-client-android:1.30.5'
|
||||
|
||||
implementation 'com.google.android.gms:play-services-auth:20.4.0'
|
||||
//onedrive:
|
||||
implementation('com.onedrive.sdk:onedrive-sdk-android:1.2.0') {
|
||||
transitive = false
|
||||
}
|
||||
implementation 'com.pcloud.sdk:java-core:1.8.1'
|
||||
implementation 'com.pcloud.sdk:android:1.8.1'
|
||||
implementation 'com.pcloud.sdk:java-core:1.9.1'
|
||||
implementation 'com.pcloud.sdk:android:1.9.1'
|
||||
implementation 'com.google.code.gson:gson:2.8.6'
|
||||
implementation 'com.microsoft.services.msa:msa-auth:0.8.6'
|
||||
implementation 'com.microsoft.aad:adal:1.14.0'
|
||||
|
||||
}
|
||||
|
@@ -1,436 +0,0 @@
|
||||
package keepass2android.javafilestorage;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
|
||||
import com.onedrive.sdk.core.DefaultClientConfig;
|
||||
import com.onedrive.sdk.core.IClientConfig;
|
||||
import com.onedrive.sdk.core.OneDriveErrorCodes;
|
||||
import com.onedrive.sdk.extensions.IItemCollectionPage;
|
||||
import com.onedrive.sdk.extensions.IItemCollectionRequestBuilder;
|
||||
import com.onedrive.sdk.extensions.IOneDriveClient;
|
||||
import com.onedrive.sdk.extensions.Item;
|
||||
import com.onedrive.sdk.extensions.OneDriveClient;
|
||||
import com.onedrive.sdk.http.OneDriveServiceException;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Philipp on 20.11.2016.
|
||||
*/
|
||||
public class OneDriveStorage extends JavaFileStorageBase
|
||||
{
|
||||
final IClientConfig oneDriveConfig;
|
||||
final keepass2android.javafilestorage.onedrive.MyMSAAuthenticator msaAuthenticator;
|
||||
|
||||
IOneDriveClient oneDriveClient;
|
||||
|
||||
public OneDriveStorage(final Context context, final String clientId) {
|
||||
msaAuthenticator = new keepass2android.javafilestorage.onedrive.MyMSAAuthenticator(context) {
|
||||
@Override
|
||||
public String getClientId() {
|
||||
return clientId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getScopes() {
|
||||
return new String[] { "offline_access", "onedrive.readwrite" };
|
||||
}
|
||||
};
|
||||
oneDriveConfig = DefaultClientConfig.createWithAuthenticator(msaAuthenticator);
|
||||
initAuthenticator(null);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean requiresSetup(String path) {
|
||||
return !isConnected(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startSelectFile(FileStorageSetupInitiatorActivity activity, boolean isForSave, int requestCode) {
|
||||
|
||||
initAuthenticator((Activity)activity.getActivity());
|
||||
|
||||
String path = getProtocolId()+":///";
|
||||
Log.d("KP2AJ", "startSelectFile "+path+", connected: "+path);
|
||||
if (isConnected(null))
|
||||
{
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(EXTRA_IS_FOR_SAVE, isForSave);
|
||||
intent.putExtra(EXTRA_PATH, path);
|
||||
activity.onImmediateResult(requestCode, RESULT_FILECHOOSER_PREPARED, intent);
|
||||
}
|
||||
else
|
||||
{
|
||||
activity.startSelectFileProcess(path, isForSave, requestCode);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isConnected(Activity activity) {
|
||||
if (oneDriveClient == null)
|
||||
{
|
||||
try
|
||||
{
|
||||
Log.d("KP2AJ", "trying silent login");
|
||||
if (msaAuthenticator.loginSilent() != null)
|
||||
{
|
||||
Log.d("KP2AJ", "ok: silent login");
|
||||
|
||||
oneDriveClient = buildClient(activity);
|
||||
|
||||
|
||||
}
|
||||
else Log.d("KP2AJ", "trying silent login failed.");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return oneDriveClient != null;
|
||||
}
|
||||
|
||||
private void initAuthenticator(Activity activity) {
|
||||
msaAuthenticator.init(
|
||||
oneDriveConfig.getExecutors(),
|
||||
oneDriveConfig.getHttpProvider(),
|
||||
activity,
|
||||
oneDriveConfig.getLogger());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void prepareFileUsage(FileStorageSetupInitiatorActivity activity, String path, int requestCode, boolean alwaysReturnSuccess) {
|
||||
initAuthenticator((Activity)activity.getActivity());
|
||||
if (isConnected((Activity)activity.getActivity()))
|
||||
{
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(EXTRA_PATH, path);
|
||||
activity.onImmediateResult(requestCode, RESULT_FILEUSAGE_PREPARED, intent);
|
||||
}
|
||||
else
|
||||
{
|
||||
activity.startFileUsageProcess(path, requestCode, alwaysReturnSuccess);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProtocolId() {
|
||||
return "onedrive";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareFileUsage(Context appContext, String path) throws UserInteractionRequiredException {
|
||||
if (!isConnected(null))
|
||||
{
|
||||
throw new UserInteractionRequiredException();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(FileStorageSetupActivity activity, Bundle savedInstanceState) {
|
||||
|
||||
Log.d("KP2AJ", "OnCreate");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume(final FileStorageSetupActivity activity) {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private IOneDriveClient buildClient(Activity activity) {
|
||||
|
||||
return new OneDriveClient.Builder()
|
||||
.fromConfig(oneDriveConfig)
|
||||
.loginAndBuildClient(activity);
|
||||
|
||||
}
|
||||
|
||||
String getPathFromSkydrivePath(String skydrivePath)
|
||||
{
|
||||
String path = "";
|
||||
if (skydrivePath.equals(""))
|
||||
return "";
|
||||
|
||||
String[] parts = skydrivePath.split("/");
|
||||
|
||||
for (int i = 0; i < parts.length; i++) {
|
||||
String part = parts[i];
|
||||
logDebug("parsing part " + part);
|
||||
int indexOfSeparator = part.lastIndexOf(NAME_ID_SEP);
|
||||
if (indexOfSeparator < 0) {
|
||||
// seems invalid, but we're very generous here
|
||||
path += "/" + part;
|
||||
continue;
|
||||
}
|
||||
String name = part.substring(0, indexOfSeparator);
|
||||
try {
|
||||
name = decode(name);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// ignore
|
||||
}
|
||||
path += "/" + name;
|
||||
}
|
||||
logDebug("return " +path + ". original was " + skydrivePath);
|
||||
return path;
|
||||
|
||||
}
|
||||
|
||||
String removeProtocol(String path) throws Exception {
|
||||
if (path == null)
|
||||
return null;
|
||||
if (path.startsWith("skydrive"))
|
||||
return getPathFromSkydrivePath(path.substring("skydrive://".length()));
|
||||
return path.substring(getProtocolId().length()+3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName(String path) {
|
||||
|
||||
if (path == null)
|
||||
return null;
|
||||
if (path.startsWith("skydrive"))
|
||||
return getProtocolId()+"://"+getPathFromSkydrivePath(path.substring("skydrive://".length()));
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFilename(String path) throws Exception {
|
||||
return path.substring(path.lastIndexOf("/")+1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkForFileChangeFast(String path, String previousFileVersion) throws Exception {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCurrentFileVersionFast(String path) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream openFileForRead(String path) throws Exception {
|
||||
try {
|
||||
path = removeProtocol(path);
|
||||
logDebug("openFileForRead. Path="+path);
|
||||
InputStream result = oneDriveClient.getDrive()
|
||||
.getRoot()
|
||||
.getItemWithPath(path)
|
||||
.getContent()
|
||||
.buildRequest()
|
||||
.get();
|
||||
logDebug("ok");
|
||||
return result;
|
||||
|
||||
}
|
||||
catch (OneDriveServiceException e)
|
||||
{
|
||||
throw convertException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private Exception convertException(OneDriveServiceException e) {
|
||||
if (e.isError(OneDriveErrorCodes.ItemNotFound))
|
||||
return new FileNotFoundException(e.getMessage());
|
||||
return e;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadFile(String path, byte[] data, boolean writeTransactional) throws Exception {
|
||||
try {
|
||||
path = removeProtocol(path);
|
||||
oneDriveClient.getDrive()
|
||||
.getRoot()
|
||||
.getItemWithPath(path)
|
||||
.getContent()
|
||||
.buildRequest()
|
||||
.put(data);
|
||||
} catch (OneDriveServiceException e) {
|
||||
throw convertException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createFolder(String parentPath, String newDirName) throws Exception {
|
||||
throw new Exception("not implemented.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createFilePath(String parentPath, String newFileName) throws Exception {
|
||||
String path = parentPath;
|
||||
if (!path.endsWith("/"))
|
||||
path = path + "/";
|
||||
path = path + newFileName;
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FileEntry> listFiles(String parentPath) throws Exception {
|
||||
try {
|
||||
ArrayList<FileEntry> result = new ArrayList<FileEntry>();
|
||||
parentPath = removeProtocol(parentPath);
|
||||
IItemCollectionPage itemsPage = oneDriveClient.getDrive()
|
||||
.getRoot()
|
||||
.getItemWithPath(parentPath)
|
||||
.getChildren()
|
||||
.buildRequest()
|
||||
.get();
|
||||
if (parentPath.endsWith("/"))
|
||||
parentPath = parentPath.substring(0,parentPath.length()-1);
|
||||
while (true)
|
||||
{
|
||||
List<Item> items = itemsPage.getCurrentPage();
|
||||
if (items.isEmpty())
|
||||
return result;
|
||||
|
||||
for (Item i: items)
|
||||
{
|
||||
FileEntry e = getFileEntry(parentPath + "/" + i.name, i);
|
||||
Log.d("KP2AJ", e.path);
|
||||
result.add(e);
|
||||
}
|
||||
IItemCollectionRequestBuilder nextPageReqBuilder = itemsPage.getNextPage();
|
||||
if (nextPageReqBuilder == null)
|
||||
return result;
|
||||
itemsPage = nextPageReqBuilder.buildRequest().get();
|
||||
|
||||
}
|
||||
} catch (OneDriveServiceException e) {
|
||||
throw convertException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private FileEntry getFileEntry(String path, Item i) {
|
||||
FileEntry e = new FileEntry();
|
||||
if (i.size != null)
|
||||
e.sizeInBytes = i.size;
|
||||
else if ((i.remoteItem != null) && (i.remoteItem.size != null))
|
||||
e.sizeInBytes = i.remoteItem.size;
|
||||
|
||||
e.displayName = i.name;
|
||||
e.canRead = e.canWrite = true;
|
||||
e.path = getProtocolId() +"://"+path;
|
||||
if (i.lastModifiedDateTime != null)
|
||||
e.lastModifiedTime = i.lastModifiedDateTime.getTimeInMillis();
|
||||
else if ((i.remoteItem != null)&&(i.remoteItem.lastModifiedDateTime != null))
|
||||
e.lastModifiedTime = i.remoteItem.lastModifiedDateTime.getTimeInMillis();
|
||||
e.isDirectory = (i.folder != null) || ((i.remoteItem != null) && (i.remoteItem.folder != null));
|
||||
return e;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileEntry getFileEntry(String filename) throws Exception {
|
||||
try {
|
||||
filename = removeProtocol(filename);
|
||||
Item item = oneDriveClient.getDrive()
|
||||
.getRoot()
|
||||
.getItemWithPath(filename)
|
||||
.buildRequest()
|
||||
.get();
|
||||
return getFileEntry(filename, item);
|
||||
} catch (OneDriveServiceException e) {
|
||||
throw convertException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String path) throws Exception {
|
||||
try {
|
||||
path = removeProtocol(path);
|
||||
oneDriveClient.getDrive()
|
||||
.getRoot()
|
||||
.getItemWithPath(path)
|
||||
.buildRequest()
|
||||
.delete();
|
||||
} catch (OneDriveServiceException e) {
|
||||
throw convertException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(final FileStorageSetupActivity activity) {
|
||||
Log.d("KP2AJ", "onStart");
|
||||
if (activity.getProcessName().equals(PROCESS_NAME_SELECTFILE))
|
||||
activity.getState().putString(EXTRA_PATH, activity.getPath());
|
||||
|
||||
JavaFileStorage.FileStorageSetupActivity storageSetupAct = activity;
|
||||
|
||||
if (oneDriveClient != null) {
|
||||
Log.d("KP2AJ", "auth successful");
|
||||
try {
|
||||
|
||||
finishActivityWithSuccess(activity);
|
||||
return;
|
||||
|
||||
} catch (Exception e) {
|
||||
Log.d("KP2AJ", "finish with error: " + e.toString());
|
||||
finishWithError(activity, e);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
Log.d("KP2AJ", "Starting auth");
|
||||
new AsyncTask<Object, Object, Object>() {
|
||||
|
||||
@Override
|
||||
protected Object doInBackground(Object... params) {
|
||||
try {
|
||||
return buildClient((Activity) activity);
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Object o) {
|
||||
if (o == null)
|
||||
{
|
||||
Log.i(TAG, "authenticating not successful");
|
||||
Intent data = new Intent();
|
||||
data.putExtra(EXTRA_ERROR_MESSAGE, "authenticating not succesful");
|
||||
((Activity)activity).setResult(Activity.RESULT_CANCELED, data);
|
||||
((Activity)activity).finish();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.i(TAG, "authenticating successful");
|
||||
|
||||
oneDriveClient = (IOneDriveClient) o;
|
||||
finishActivityWithSuccess(activity);
|
||||
}
|
||||
}
|
||||
}.execute();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(FileStorageSetupActivity activity, int requestCode, int resultCode, Intent data) {
|
||||
|
||||
}
|
||||
}
|
@@ -1,102 +0,0 @@
|
||||
package keepass2android.javafilestorage.onedrive;
|
||||
|
||||
/**
|
||||
* Created by Philipp on 22.11.2016.
|
||||
*/
|
||||
|
||||
import com.microsoft.services.msa.LiveConnectSession;
|
||||
import com.onedrive.sdk.authentication.AccountType;
|
||||
import com.onedrive.sdk.authentication.IAccountInfo;
|
||||
import com.onedrive.sdk.authentication.MSAAccountInfo;
|
||||
import com.onedrive.sdk.authentication.MSAAuthenticator;
|
||||
import com.onedrive.sdk.logger.ILogger;
|
||||
|
||||
import com.microsoft.services.msa.LiveConnectSession;
|
||||
import com.onedrive.sdk.logger.ILogger;
|
||||
|
||||
/**
|
||||
* Account information for a MSA based account.
|
||||
*/
|
||||
public class MyMSAAccountInfo implements IAccountInfo {
|
||||
|
||||
/**
|
||||
* The service root for the OneDrive personal API.
|
||||
*/
|
||||
public static final String ONE_DRIVE_PERSONAL_SERVICE_ROOT = "https://api.onedrive.com/v1.0";
|
||||
|
||||
/**
|
||||
* The authenticator that can refresh this account.
|
||||
*/
|
||||
private final MyMSAAuthenticator mAuthenticator;
|
||||
|
||||
/**
|
||||
* The session this account is based off of.
|
||||
*/
|
||||
private LiveConnectSession mSession;
|
||||
|
||||
/**
|
||||
* The logger.
|
||||
*/
|
||||
private final ILogger mLogger;
|
||||
|
||||
/**
|
||||
* Creates an MSAAccountInfo object.
|
||||
* @param authenticator The authenticator that this account info was created from.
|
||||
* @param liveConnectSession The session this account is based off of.
|
||||
* @param logger The logger.
|
||||
*/
|
||||
public MyMSAAccountInfo(final MyMSAAuthenticator authenticator,
|
||||
final LiveConnectSession liveConnectSession,
|
||||
final ILogger logger) {
|
||||
mAuthenticator = authenticator;
|
||||
mSession = liveConnectSession;
|
||||
mLogger = logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the type of the account.
|
||||
* @return The MicrosoftAccount account type.
|
||||
*/
|
||||
@Override
|
||||
public AccountType getAccountType() {
|
||||
return AccountType.MicrosoftAccount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the access token for requests against the service root.
|
||||
* @return The access token for requests against the service root.
|
||||
*/
|
||||
@Override
|
||||
public String getAccessToken() {
|
||||
return mSession.getAccessToken();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the OneDrive service root for this account.
|
||||
* @return the OneDrive service root for this account.
|
||||
*/
|
||||
@Override
|
||||
public String getServiceRoot() {
|
||||
return ONE_DRIVE_PERSONAL_SERVICE_ROOT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the account access token is expired and needs to be refreshed.
|
||||
* @return true if refresh() needs to be called and
|
||||
* false if the account is still valid.
|
||||
*/
|
||||
@Override
|
||||
public boolean isExpired() {
|
||||
return mSession.isExpired();
|
||||
}
|
||||
|
||||
/**
|
||||
* Refreshes the authentication token for this account info.
|
||||
*/
|
||||
@Override
|
||||
public void refresh() {
|
||||
mLogger.logDebug("Refreshing access token...");
|
||||
final MyMSAAccountInfo newInfo = (MyMSAAccountInfo)mAuthenticator.loginSilent();
|
||||
mSession = newInfo.mSession;
|
||||
}
|
||||
}
|
@@ -1,446 +0,0 @@
|
||||
package keepass2android.javafilestorage.onedrive;
|
||||
|
||||
/**
|
||||
* Created by Philipp on 22.11.2016.
|
||||
*/
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Log;
|
||||
|
||||
import com.microsoft.onedrivesdk.BuildConfig;
|
||||
import com.microsoft.services.msa.LiveAuthClient;
|
||||
import com.microsoft.services.msa.LiveAuthException;
|
||||
import com.microsoft.services.msa.LiveAuthListener;
|
||||
import com.microsoft.services.msa.LiveConnectSession;
|
||||
import com.microsoft.services.msa.LiveStatus;
|
||||
import com.onedrive.sdk.authentication.ClientAuthenticatorException;
|
||||
import com.onedrive.sdk.authentication.IAccountInfo;
|
||||
import com.onedrive.sdk.authentication.IAuthenticator;
|
||||
import com.onedrive.sdk.authentication.MSAAccountInfo;
|
||||
import com.onedrive.sdk.concurrency.ICallback;
|
||||
import com.onedrive.sdk.core.ClientException;
|
||||
import com.onedrive.sdk.concurrency.SimpleWaiter;
|
||||
import com.onedrive.sdk.concurrency.IExecutors;
|
||||
import com.onedrive.sdk.core.OneDriveErrorCodes;
|
||||
import com.onedrive.sdk.http.IHttpProvider;
|
||||
import com.onedrive.sdk.logger.ILogger;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/**
|
||||
* Wrapper around the MSA authentication library.
|
||||
* https://github.com/MSOpenTech/msa-auth-for-android
|
||||
*/
|
||||
@SuppressWarnings("ThrowableResultOfMethodCallIgnored")
|
||||
public abstract class MyMSAAuthenticator implements IAuthenticator {
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
public MyMSAAuthenticator(Context context)
|
||||
{
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* The sign in cancellation message.
|
||||
*/
|
||||
private static final String SIGN_IN_CANCELLED_MESSAGE = "The user cancelled the login operation.";
|
||||
|
||||
/**
|
||||
* The preferences for this authenticator.
|
||||
*/
|
||||
private static final String MSA_AUTHENTICATOR_PREFS = "MSAAuthenticatorPrefs";
|
||||
|
||||
/**
|
||||
* The key for the user id.
|
||||
*/
|
||||
private static final String USER_ID_KEY = "userId";
|
||||
|
||||
/**
|
||||
* The key for the version code
|
||||
*/
|
||||
public static final String VERSION_CODE_KEY = "versionCode";
|
||||
|
||||
/**
|
||||
* The default user id
|
||||
*/
|
||||
private static final String DEFAULT_USER_ID = "@@defaultUser";
|
||||
|
||||
/**
|
||||
* The active user id.
|
||||
*/
|
||||
private final AtomicReference<String> mUserId = new AtomicReference<>();
|
||||
|
||||
/**
|
||||
* The executors.
|
||||
*/
|
||||
private IExecutors mExecutors;
|
||||
|
||||
/**
|
||||
* Indicates whether this authenticator has been initialized.
|
||||
*/
|
||||
private boolean mInitialized;
|
||||
|
||||
/**
|
||||
* The context UI interactions should happen with.
|
||||
*/
|
||||
private Activity mActivity;
|
||||
|
||||
/**
|
||||
* The logger.
|
||||
*/
|
||||
private ILogger mLogger;
|
||||
|
||||
/**
|
||||
* The client id for this authenticator.
|
||||
* https://dev.onedrive.com/auth/msa_oauth.htm#to-register-your-app
|
||||
* @return The client id.
|
||||
*/
|
||||
public abstract String getClientId();
|
||||
|
||||
/**
|
||||
* The scopes for this application.
|
||||
* https://dev.onedrive.com/auth/msa_oauth.htm#authentication-scopes
|
||||
* @return The scopes for this application.
|
||||
*/
|
||||
public abstract String[] getScopes();
|
||||
|
||||
/**
|
||||
* The live authentication client.
|
||||
*/
|
||||
private LiveAuthClient mAuthClient;
|
||||
|
||||
/**
|
||||
* Initializes the authenticator.
|
||||
* @param executors The executors to schedule foreground and background tasks.
|
||||
* @param httpProvider The http provider for sending requests.
|
||||
* @param activity The activity to create interactive UI on.
|
||||
* @param logger The logger for diagnostic information.
|
||||
*/
|
||||
@Override
|
||||
public synchronized void init(final IExecutors executors,
|
||||
final IHttpProvider httpProvider,
|
||||
final Activity activity,
|
||||
final ILogger logger) {
|
||||
mActivity = activity;
|
||||
|
||||
if (mInitialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
mExecutors = executors;
|
||||
mLogger = logger;
|
||||
mInitialized = true;
|
||||
mAuthClient = new LiveAuthClient(mContext, getClientId(), Arrays.asList(getScopes()));
|
||||
|
||||
final SharedPreferences prefs = getSharedPreferences();
|
||||
mUserId.set(prefs.getString(USER_ID_KEY, null));
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts an interactive login asynchronously.
|
||||
* @param emailAddressHint The hint for the email address during the interactive login.
|
||||
* @param loginCallback The callback to be called when the login is complete.
|
||||
*/
|
||||
@Override
|
||||
public void login(final String emailAddressHint, final ICallback<IAccountInfo> loginCallback) {
|
||||
Log.d("KP2AJ", "login()");
|
||||
if (!mInitialized) {
|
||||
throw new IllegalStateException("init must be called");
|
||||
}
|
||||
|
||||
if (loginCallback == null) {
|
||||
throw new InvalidParameterException("loginCallback");
|
||||
}
|
||||
|
||||
mLogger.logDebug("Starting login async");
|
||||
|
||||
mExecutors.performOnBackground(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
mExecutors.performOnForeground(login(emailAddressHint), loginCallback);
|
||||
} catch (final ClientException e) {
|
||||
mExecutors.performOnForeground(e, loginCallback);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts an interactive login.
|
||||
* @param emailAddressHint The hint for the email address during the interactive login.
|
||||
* @return The account info.
|
||||
* @throws ClientException An exception occurs if the login was unable to complete for any reason.
|
||||
*/
|
||||
@Override
|
||||
public synchronized IAccountInfo login(final String emailAddressHint) throws ClientException {
|
||||
if (!mInitialized) {
|
||||
throw new IllegalStateException("init must be called");
|
||||
}
|
||||
|
||||
mLogger.logDebug("Starting login");
|
||||
|
||||
final AtomicReference<ClientException> error = new AtomicReference<>();
|
||||
final SimpleWaiter waiter = new SimpleWaiter();
|
||||
|
||||
final LiveAuthListener listener = new LiveAuthListener() {
|
||||
@Override
|
||||
public void onAuthComplete(final LiveStatus liveStatus,
|
||||
final LiveConnectSession liveConnectSession,
|
||||
final Object o) {
|
||||
if (liveStatus == LiveStatus.NOT_CONNECTED) {
|
||||
mLogger.logDebug("Received invalid login failure from silent authentication with MSA, ignoring.");
|
||||
} else {
|
||||
mLogger.logDebug("Successful interactive login");
|
||||
waiter.signal();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAuthError(final LiveAuthException e,
|
||||
final Object o) {
|
||||
OneDriveErrorCodes code = OneDriveErrorCodes.AuthenticationFailure;
|
||||
if (e.getError().equals(SIGN_IN_CANCELLED_MESSAGE)) {
|
||||
code = OneDriveErrorCodes.AuthenticationCancelled;
|
||||
}
|
||||
|
||||
error.set(new ClientAuthenticatorException("Unable to login with MSA", e, code));
|
||||
mLogger.logError(error.get().getMessage(), error.get());
|
||||
waiter.signal();
|
||||
}
|
||||
};
|
||||
|
||||
mActivity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mAuthClient.login(mActivity, /* scopes */null, /* user object */ null, emailAddressHint, listener);
|
||||
}
|
||||
});
|
||||
|
||||
mLogger.logDebug("Waiting for MSA callback");
|
||||
waiter.waitForSignal();
|
||||
|
||||
final ClientException exception = error.get();
|
||||
if (exception != null) {
|
||||
throw exception;
|
||||
}
|
||||
|
||||
final String userId;
|
||||
if (emailAddressHint != null) {
|
||||
userId = emailAddressHint;
|
||||
} else {
|
||||
userId = DEFAULT_USER_ID;
|
||||
}
|
||||
|
||||
mUserId.set(userId);
|
||||
|
||||
final SharedPreferences prefs = getSharedPreferences();
|
||||
prefs.edit()
|
||||
.putString(USER_ID_KEY, mUserId.get())
|
||||
.putInt(VERSION_CODE_KEY, BuildConfig.VERSION_CODE)
|
||||
.apply();
|
||||
|
||||
return getAccountInfo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a silent login asynchronously.
|
||||
* @param loginCallback The callback to be called when the login is complete.
|
||||
*/
|
||||
@Override
|
||||
public void loginSilent(final ICallback<IAccountInfo> loginCallback) {
|
||||
if (!mInitialized) {
|
||||
throw new IllegalStateException("init must be called");
|
||||
}
|
||||
|
||||
if (loginCallback == null) {
|
||||
throw new InvalidParameterException("loginCallback");
|
||||
}
|
||||
|
||||
mLogger.logDebug("Starting login silent async");
|
||||
|
||||
mExecutors.performOnBackground(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
mExecutors.performOnForeground(loginSilent(), loginCallback);
|
||||
} catch (final ClientException e) {
|
||||
mExecutors.performOnForeground(e, loginCallback);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a silent login.
|
||||
* @return The account info.
|
||||
* @throws ClientException An exception occurs if the login was unable to complete for any reason.
|
||||
*/
|
||||
@Override
|
||||
public synchronized IAccountInfo loginSilent() throws ClientException {
|
||||
if (!mInitialized) {
|
||||
throw new IllegalStateException("init must be called");
|
||||
}
|
||||
|
||||
mLogger.logDebug("Starting login silent");
|
||||
|
||||
final int userIdStoredMinVersion = 10112;
|
||||
if (getSharedPreferences().getInt(VERSION_CODE_KEY, 0) >= userIdStoredMinVersion
|
||||
&& mUserId.get() == null) {
|
||||
mLogger.logDebug("No login information found for silent authentication");
|
||||
return null;
|
||||
}
|
||||
|
||||
final SimpleWaiter loginSilentWaiter = new SimpleWaiter();
|
||||
final AtomicReference<ClientException> error = new AtomicReference<>();
|
||||
|
||||
final boolean waitForCallback = mAuthClient.loginSilent(new LiveAuthListener() {
|
||||
@Override
|
||||
public void onAuthComplete(final LiveStatus liveStatus,
|
||||
final LiveConnectSession liveConnectSession,
|
||||
final Object o) {
|
||||
if (liveStatus == LiveStatus.NOT_CONNECTED) {
|
||||
error.set(new ClientAuthenticatorException("Failed silent login, interactive login required",
|
||||
OneDriveErrorCodes.AuthenticationFailure));
|
||||
mLogger.logError(error.get().getMessage(), error.get());
|
||||
} else {
|
||||
mLogger.logDebug("Successful silent login");
|
||||
}
|
||||
loginSilentWaiter.signal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAuthError(final LiveAuthException e,
|
||||
final Object o) {
|
||||
OneDriveErrorCodes code = OneDriveErrorCodes.AuthenticationFailure;
|
||||
if (e.getError().equals(SIGN_IN_CANCELLED_MESSAGE)) {
|
||||
code = OneDriveErrorCodes.AuthenticationCancelled;
|
||||
}
|
||||
|
||||
error.set(new ClientAuthenticatorException("Login silent authentication error", e, code));
|
||||
mLogger.logError(error.get().getMessage(), error.get());
|
||||
loginSilentWaiter.signal();
|
||||
}
|
||||
});
|
||||
|
||||
if (!waitForCallback) {
|
||||
mLogger.logDebug("MSA silent auth fast-failed");
|
||||
return null;
|
||||
}
|
||||
|
||||
mLogger.logDebug("Waiting for MSA callback");
|
||||
loginSilentWaiter.waitForSignal();
|
||||
final ClientException exception = error.get();
|
||||
if (exception != null) {
|
||||
throw exception;
|
||||
}
|
||||
|
||||
return getAccountInfo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Log the current user out.
|
||||
* @param logoutCallback The callback to be called when the logout is complete.
|
||||
*/
|
||||
@Override
|
||||
public void logout(final ICallback<Void> logoutCallback) {
|
||||
if (!mInitialized) {
|
||||
throw new IllegalStateException("init must be called");
|
||||
}
|
||||
|
||||
if (logoutCallback == null) {
|
||||
throw new InvalidParameterException("logoutCallback");
|
||||
}
|
||||
|
||||
mLogger.logDebug("Starting logout async");
|
||||
|
||||
mExecutors.performOnBackground(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
logout();
|
||||
mExecutors.performOnForeground((Void) null, logoutCallback);
|
||||
} catch (final ClientException e) {
|
||||
mExecutors.performOnForeground(e, logoutCallback);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Log the current user out.
|
||||
* @throws ClientException An exception occurs if the logout was unable to complete for any reason.
|
||||
*/
|
||||
@Override
|
||||
public synchronized void logout() throws ClientException {
|
||||
if (!mInitialized) {
|
||||
throw new IllegalStateException("init must be called");
|
||||
}
|
||||
|
||||
mLogger.logDebug("Starting logout");
|
||||
|
||||
final SimpleWaiter logoutWaiter = new SimpleWaiter();
|
||||
final AtomicReference<ClientException> error = new AtomicReference<>();
|
||||
mAuthClient.logout(new LiveAuthListener() {
|
||||
@Override
|
||||
public void onAuthComplete(final LiveStatus liveStatus,
|
||||
final LiveConnectSession liveConnectSession,
|
||||
final Object o) {
|
||||
mLogger.logDebug("Logout completed");
|
||||
logoutWaiter.signal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAuthError(final LiveAuthException e, final Object o) {
|
||||
error.set(new ClientAuthenticatorException("MSA Logout failed",
|
||||
e,
|
||||
OneDriveErrorCodes.AuthenticationFailure));
|
||||
mLogger.logError(error.get().getMessage(), error.get());
|
||||
logoutWaiter.signal();
|
||||
}
|
||||
});
|
||||
|
||||
mLogger.logDebug("Waiting for logout to complete");
|
||||
logoutWaiter.waitForSignal();
|
||||
|
||||
mLogger.logDebug("Clearing all MSA Authenticator shared preferences");
|
||||
final SharedPreferences prefs = getSharedPreferences();
|
||||
prefs.edit()
|
||||
.clear()
|
||||
.putInt(VERSION_CODE_KEY, BuildConfig.VERSION_CODE)
|
||||
.apply();
|
||||
mUserId.set(null);
|
||||
|
||||
final ClientException exception = error.get();
|
||||
if (exception != null) {
|
||||
throw exception;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current account info for this authenticator.
|
||||
* @return NULL if no account is available.
|
||||
*/
|
||||
@Override
|
||||
public IAccountInfo getAccountInfo() {
|
||||
final LiveConnectSession session = mAuthClient.getSession();
|
||||
if (session == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new MyMSAAccountInfo(this, session, mLogger);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the shared preferences for this authenticator.
|
||||
* @return The shared preferences.
|
||||
*/
|
||||
private SharedPreferences getSharedPreferences() {
|
||||
return mContext.getSharedPreferences(MSA_AUTHENTICATOR_PREFS, Context.MODE_PRIVATE);
|
||||
}
|
||||
|
||||
}
|
@@ -6,7 +6,7 @@ buildscript {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:7.4.0"
|
||||
classpath "com.android.tools.build:gradle:8.4.0"
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1 +1,2 @@
|
||||
org.gradle.jvmargs=-Xmx1536m
|
||||
android.useAndroidX=true
|
||||
|
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
|
@@ -1,13 +1,3 @@
|
||||
package com.crocoapps.javafilestoragetest2;
|
||||
|
||||
import android.app.Application;
|
||||
import android.test.ApplicationTestCase;
|
||||
|
||||
/**
|
||||
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
|
||||
*/
|
||||
public class ApplicationTest extends ApplicationTestCase<Application> {
|
||||
public ApplicationTest() {
|
||||
super(Application.class);
|
||||
}
|
||||
}
|
@@ -145,7 +145,9 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
//import keepass2android.javafilestorage.DropboxCloudRailStorage;
|
||||
import keepass2android.javafilestorage.DropboxV2Storage;
|
||||
import keepass2android.javafilestorage.GoogleDriveAppDataFileStorage;
|
||||
import keepass2android.javafilestorage.ICertificateErrorHandler;
|
||||
import keepass2android.javafilestorage.JavaFileStorage;
|
||||
import keepass2android.javafilestorage.JavaFileStorage.FileEntry;
|
||||
import keepass2android.javafilestorage.PCloudFileStorage;
|
||||
@@ -347,7 +349,7 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
|
||||
fileList = fs.listFiles(path);
|
||||
checkFileList(path, fileList, false, true); //second param indicates the file must be gone
|
||||
|
||||
Log.d("KP2AJ", "Delete a folder recursive");
|
||||
Log.d("KP2AJ", "xDelete a folder recursive: " + subfolderPath);
|
||||
fs.delete(subfolderPath);
|
||||
|
||||
Log.d("KP2AJ", "List files again to check if deleting the folder was successful:");
|
||||
@@ -540,12 +542,12 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
|
||||
|
||||
static JavaFileStorage createStorageToTest(Context ctx, Context appContext, boolean simulateRestart) {
|
||||
//storageToTest = new SftpStorage(ctx.getApplicationContext());
|
||||
storageToTest = new PCloudFileStorage(ctx, "FLm22de7bdS", "pcloud", "pcloudtest");
|
||||
//storageToTest = new PCloudFileStorage(ctx, "FLm22de7bdS", "pcloud", "pcloudtest");
|
||||
//storageToTest = new SkyDriveFileStorage("000000004010C234", appContext);
|
||||
|
||||
|
||||
//storageToTest = new GoogleDriveAppDataFileStorage();
|
||||
/*storageToTest = new WebDavStorage(new ICertificateErrorHandler() {
|
||||
storageToTest = new WebDavStorage(new ICertificateErrorHandler() {
|
||||
@Override
|
||||
public boolean onValidationError(String error) {
|
||||
return false;
|
||||
@@ -555,7 +557,7 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
|
||||
public boolean alwaysFailOnValidationError() {
|
||||
return false;
|
||||
}
|
||||
});*/
|
||||
});
|
||||
|
||||
//storageToTest = new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
||||
//storageToTest = new DropboxFileStorage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
||||
|
@@ -15,7 +15,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:inputType="textNoSuggestions"
|
||||
android:text="https://daigers.diskstation.me:5006/Keepass2Android/Apps/Keepass2Android/"
|
||||
android:text="https://webdav.hidrive.ionos.com/users/philippcro"
|
||||
android:hint="Server URL" />
|
||||
</LinearLayout>
|
||||
<EditText
|
||||
@@ -23,7 +23,7 @@
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:text="Keepass"
|
||||
android:text="PhilippCro"
|
||||
android:hint="@string/hint_username" />
|
||||
|
||||
<EditText
|
||||
@@ -32,7 +32,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textPassword"
|
||||
android:singleLine="true"
|
||||
android:text="$T3st17$"
|
||||
android:text="WSBa1wh4o4YyLK"
|
||||
android:hint="@string/hint_pass"
|
||||
android:importantForAccessibility="no" />
|
||||
|
||||
|
@@ -7,7 +7,7 @@ buildscript {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:7.4.0"
|
||||
classpath "com.android.tools.build:gradle:8.4.0"
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
|
@@ -4,11 +4,13 @@ android {
|
||||
|
||||
namespace 'keepass2android.kp2akeytransform'
|
||||
|
||||
compileSdkVersion 33
|
||||
|
||||
|
||||
defaultConfig {
|
||||
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
|
||||
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 34
|
||||
compileSdk 34
|
||||
|
||||
}
|
||||
|
||||
|
@@ -5,7 +5,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:7.4.0"
|
||||
classpath "com.android.tools.build:gradle:8.4.0"
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
|
@@ -3,10 +3,12 @@ android {
|
||||
|
||||
namespace 'keepass2android.softkeyboard'
|
||||
|
||||
compileSdkVersion 33
|
||||
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 18
|
||||
minSdkVersion 21
|
||||
compileSdk 34
|
||||
targetSdk 34
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
|
@@ -33,11 +33,11 @@
|
||||
<!-- Option to enable using nearby keys when correcting/predicting -->
|
||||
<string name="hit_correction">Corregir errores de escritura</string>
|
||||
<!-- Description for hit_correction -->
|
||||
<string name="hit_correction_summary">Habilitar la introducción de corrección de errores</string>
|
||||
<string name="hit_correction_summary">Habilitar corrección de errores de entrada</string>
|
||||
<!-- Option to enable using nearby keys when correcting/predicting in landscape-->
|
||||
<string name="hit_correction_land">Errores de introducción de datos en vista horizontal</string>
|
||||
<!-- Description for hit_correction in landscape -->
|
||||
<string name="hit_correction_land_summary">Habilitar la introducción de corrección de errores</string>
|
||||
<string name="hit_correction_land_summary">Habilitar corrección de errores de entrada</string>
|
||||
<!-- Option to automatically correct word on hitting space -->
|
||||
<string name="auto_correction">Sugerencias de palabras</string>
|
||||
<!-- Description for auto_correction -->
|
||||
|
@@ -47,15 +47,15 @@
|
||||
<!-- Category title for text prediction -->
|
||||
<string name="prediction_category">Instellingen voor woordsuggesties</string>
|
||||
<!-- Description for text prediction -->
|
||||
<string name="prediction_summary">Automatisch voltooien tijdens typen inschakelen</string>
|
||||
<string name="prediction_summary">Automatisch aanvullen tijdens typen inschakelen</string>
|
||||
<!-- Dialog title for auto complete choices -->
|
||||
<string name="auto_complete_dialog_title">Automatisch voltooien</string>
|
||||
<string name="auto_complete_dialog_title">Automatisch aanvullen</string>
|
||||
<!-- Option to enable text prediction in landscape -->
|
||||
<string name="prediction_landscape">Tekstveld vergroten</string>
|
||||
<!-- Description for text prediction -->
|
||||
<string name="prediction_landscape_summary">Woordsuggesties verbergen in liggende weergave</string>
|
||||
<!-- Option to enable auto capitalization of sentences -->
|
||||
<string name="auto_cap">Auto-hoofdlettergebruik</string>
|
||||
<string name="auto_cap">Automatisch hoofdlettergebruik</string>
|
||||
<!-- Description for auto cap -->
|
||||
<string name="auto_cap_summary">Hoofdletter gebruiken aan het begin van een zin</string>
|
||||
<!-- Option to enable auto punctuate -->
|
||||
@@ -64,15 +64,15 @@
|
||||
<!-- Option to enable quick fixes -->
|
||||
<string name="quick_fixes">Snelle oplossingen</string>
|
||||
<!-- Description for quick fixes -->
|
||||
<string name="quick_fixes_summary">Hiermee worden veelvoorkomende typefouten gecorrigeerd</string>
|
||||
<string name="quick_fixes_summary">Corrigeert veelgemaakte typefouten</string>
|
||||
<!-- Option to enable showing suggestions -->
|
||||
<string name="show_suggestions">Suggesties weergeven</string>
|
||||
<!-- Description for show suggestions -->
|
||||
<string name="show_suggestions_summary">Voorgestelde woorden weergeven tijdens typen</string>
|
||||
<string name="show_suggestions_summary">Woordsuggesties tijdens het typen tonen</string>
|
||||
<!-- Option to enable auto completion -->
|
||||
<string name="auto_complete">Auto-aanvullen</string>
|
||||
<!-- Description for auto completion -->
|
||||
<string name="auto_complete_summary">Gemarkeerd woord automatisch invoegen met spatiebalk en interpunctie</string>
|
||||
<string name="auto_complete_summary">Spatiebalk en interpunctie voegen automatisch gemarkeerd woord in</string>
|
||||
<!-- Option to show/hide the settings key -->
|
||||
<string name="prefs_settings_key">Instellingscode weergeven</string>
|
||||
<!-- Array of the settings key mode values -->
|
||||
|
@@ -5,7 +5,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:7.4.0"
|
||||
classpath "com.android.tools.build:gradle:8.4.0"
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
|
@@ -6,7 +6,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:7.4.0"
|
||||
classpath "com.android.tools.build:gradle:8.4.0"
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
|
@@ -18,6 +18,10 @@ android {
|
||||
debuggable false
|
||||
}
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
buildConfig true
|
||||
}
|
||||
compileOptions {
|
||||
targetCompatibility 11
|
||||
sourceCompatibility 11
|
||||
|
@@ -42,7 +42,7 @@
|
||||
<string name="afc_pmsg_file_has_been_deleted">%1$s「%2$s」が削除されました</string>
|
||||
<string name="afc_pmsg_filename_is_directory">「%1$s」はフォルダーです</string>
|
||||
<string name="afc_pmsg_filename_is_invalid">ファイル名「%1$s」は無効です</string>
|
||||
<string name="afc_pmsg_max_file_count_allowed">ファイルが多すぎます。最大: %1$,d</string>
|
||||
<string name="afc_pmsg_max_file_count_allowed">…のファイルが多すぎます。最大: %1$,d</string>
|
||||
<string name="afc_pmsg_unknown_error">不明なエラー: %1$s</string>
|
||||
<string name="afc_root">ルート</string>
|
||||
<string name="afc_title_advanced_selection">選択…</string>
|
||||
|
@@ -36,9 +36,9 @@
|
||||
<string name="afc_pmsg_cannot_access_dir">Geen toegang tot \"%1$s\"</string>
|
||||
<string name="afc_pmsg_cannot_create_folder">Kan map \"%1$s\" niet maken</string>
|
||||
<string name="afc_pmsg_cannot_delete_file">Kan %1$s \"%2$s\" niet verwijderen</string>
|
||||
<string name="afc_pmsg_confirm_delete_file">Weet je zeker dat je deze %1$s wilt verwijderen: \"%2$s\"?</string>
|
||||
<string name="afc_pmsg_confirm_delete_file">Weet je zeker dat je dit wilt verwijderen: %1$s \"%2$s\"?</string>
|
||||
<string name="afc_pmsg_confirm_replace_file">Het bestand \"%1$s\" bestaat al.\n\nWilt u het vervangen?</string>
|
||||
<string name="afc_pmsg_deleting_file">%1$s \"%2$s\" verwijderen…</string>
|
||||
<string name="afc_pmsg_deleting_file">Verwijdert %1$s \"%2$s\" …</string>
|
||||
<string name="afc_pmsg_file_has_been_deleted">%1$s \"%2$s\" is verwijderd</string>
|
||||
<string name="afc_pmsg_filename_is_directory">\"%1$s\" is een map</string>
|
||||
<string name="afc_pmsg_filename_is_invalid">Bestandsnaam \"%1$s\" is ongeldig</string>
|
||||
@@ -56,15 +56,15 @@
|
||||
<string name="afc_title_sort_by">Sorteer op…</string>
|
||||
<string name="afc_yesterday">Gisteren</string>
|
||||
<plurals name="afc_title_choose_directories">
|
||||
<item quantity="one">Kies map…</item>
|
||||
<item quantity="other">Kies mappen…</item>
|
||||
<item quantity="one">Kies map…</item>
|
||||
<item quantity="other">Kies mappen…</item>
|
||||
</plurals>
|
||||
<plurals name="afc_title_choose_files">
|
||||
<item quantity="one">Kies bestand…</item>
|
||||
<item quantity="other">Kies bestanden…</item>
|
||||
<item quantity="one">Kies bestand…</item>
|
||||
<item quantity="other">Kies bestanden…</item>
|
||||
</plurals>
|
||||
<plurals name="afc_title_choose_files_directories">
|
||||
<item quantity="one">Kies bestand/ map…</item>
|
||||
<item quantity="other">Kies bestanden/ mappen…</item>
|
||||
<item quantity="one">Kies bestand/ map…</item>
|
||||
<item quantity="other">Kies bestanden/ mappen…</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
@@ -6,7 +6,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:7.4.0"
|
||||
classpath "com.android.tools.build:gradle:8.4.0"
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#Tue Sep 20 20:32:06 CEST 2016
|
||||
#Tue Oct 08 15:41:22 CEST 2024
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
|
@@ -27,6 +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, new List<int>{Resource.Array.ChangeLog_1_11,Resource.Array.ChangeLog_1_11_net}, "1.11"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_10, "1.10"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_09e, "1.09e"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_09d, "1.09d"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_09c, "1.09c"),
|
||||
@@ -121,9 +123,18 @@ namespace keepass2android
|
||||
}
|
||||
|
||||
private static string BuildChangelogString(Context ctx, int changeLogResId, string version)
|
||||
{
|
||||
return BuildChangelogString(ctx, new List<int>() { changeLogResId }, version);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static string BuildChangelogString(Context ctx, List<int> changeLogResIds, string version)
|
||||
{
|
||||
string result = "Version " + version + "\n";
|
||||
string previous = "";
|
||||
foreach (var changeLogResId in changeLogResIds)
|
||||
{
|
||||
foreach (var item in ctx.Resources.GetStringArray(changeLogResId))
|
||||
{
|
||||
if (item == previous) //there was some trouble with crowdin translations, remove duplicates
|
||||
@@ -131,6 +142,8 @@ namespace keepass2android
|
||||
result += " * " + item + "\n";
|
||||
previous = item;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
@@ -32,6 +32,7 @@ using Android.Text.Method;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
using Android.Content.PM;
|
||||
using Android.Webkit;
|
||||
using Android.Graphics;
|
||||
@@ -49,7 +50,9 @@ using PluginTOTP;
|
||||
using File = Java.IO.File;
|
||||
using Uri = Android.Net.Uri;
|
||||
using keepass2android.fileselect;
|
||||
using KeeTrayTOTP.Libraries;
|
||||
using Boolean = Java.Lang.Boolean;
|
||||
using Android.Util;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
@@ -286,6 +289,8 @@ namespace keepass2android
|
||||
extraGroup.AddView(view.View);
|
||||
}
|
||||
|
||||
SetPasswordStyle();
|
||||
|
||||
//update the Entry output in the App database and notify the CopyToClipboard service
|
||||
|
||||
if (App.Kp2a.LastOpenedEntry != null)
|
||||
@@ -488,10 +493,11 @@ namespace keepass2android
|
||||
_pluginFieldReceiver = new PluginFieldReceiver(this);
|
||||
RegisterReceiver(_pluginFieldReceiver, new IntentFilter(Strings.ActionSetEntryField));
|
||||
|
||||
new Thread(NotifyPluginsOnOpen).Start();
|
||||
var notifyPluginsOnOpenThread = new Thread(NotifyPluginsOnOpen);
|
||||
notifyPluginsOnOpenThread.Start();
|
||||
|
||||
//the rest of the things to do depends on the current app task:
|
||||
AppTask.CompleteOnCreateEntryActivity(this);
|
||||
AppTask.CompleteOnCreateEntryActivity(this, notifyPluginsOnOpenThread);
|
||||
}
|
||||
|
||||
private void RemoveFromHistory()
|
||||
@@ -664,7 +670,7 @@ namespace keepass2android
|
||||
EditModeBase editMode = new DefaultEdit();
|
||||
if (KpEntryTemplatedEdit.IsTemplated(App.Kp2a.CurrentDb, this.Entry))
|
||||
editMode = new KpEntryTemplatedEdit(App.Kp2a.CurrentDb, this.Entry);
|
||||
foreach (var key in editMode.SortExtraFieldKeys(Entry.Strings.GetKeys().Where(key=> !PwDefs.IsStandardField(key))))
|
||||
foreach (var key in editMode.SortExtraFieldKeys(Entry.Strings.GetKeys().Where(key=> !PwDefs.IsStandardField(key) && key != Kp2aTotp.TotpKey)))
|
||||
{
|
||||
if (editMode.IsVisible(key))
|
||||
{
|
||||
@@ -715,7 +721,7 @@ namespace keepass2android
|
||||
var stringView = new ExtraStringView(layout, valueView, valueViewVisible, keyView);
|
||||
|
||||
_stringViews.Add(key, stringView);
|
||||
RegisterTextPopup(valueViewContainer, valueViewContainer.FindViewById(Resource.Id.extra_vdots), key, isProtected);
|
||||
RegisterTextPopup(valueViewContainer, valueViewContainer.FindViewById(Resource.Id.extra_vdots), key, isProtected, layout);
|
||||
|
||||
return stringView;
|
||||
|
||||
@@ -725,6 +731,7 @@ namespace keepass2android
|
||||
|
||||
private List<IPopupMenuItem> RegisterPopup(string popupKey, View clickView, View anchorView)
|
||||
{
|
||||
|
||||
clickView.Click += (sender, args) =>
|
||||
{
|
||||
ShowPopup(anchorView, popupKey);
|
||||
@@ -840,7 +847,7 @@ namespace keepass2android
|
||||
{
|
||||
if (!_showPassword.ContainsKey(protectedTextView))
|
||||
{
|
||||
_showPassword[protectedTextView] = fieldKey == UpdateTotpTimerTask.TotpKey ? _showTotpDefault : _showPasswordDefault;
|
||||
_showPassword[protectedTextView] = fieldKey == Kp2aTotp.TotpKey ? _showTotpDefault : _showPasswordDefault;
|
||||
}
|
||||
var protectedTextviewGroup = new ProtectedTextviewGroup { ProtectedField = protectedTextView, VisibleProtectedField = visibleTextView};
|
||||
_protectedTextViews.Add(protectedTextviewGroup);
|
||||
@@ -937,9 +944,8 @@ namespace keepass2android
|
||||
iv.SetImageDrawable(Resources.GetDrawable(Resource.Drawable.ic00));
|
||||
}
|
||||
|
||||
|
||||
|
||||
SupportActionBar.Title = Entry.Strings.ReadSafe(PwDefs.TitleField);
|
||||
SupportActionBar.Title = SprEngine.Compile(SupportActionBar.Title, new SprContext(Entry, App.Kp2a.CurrentDb.KpDatabase, SprCompileFlags.All));
|
||||
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
SupportActionBar.SetHomeButtonEnabled(true);
|
||||
|
||||
@@ -947,21 +953,29 @@ namespace keepass2android
|
||||
|
||||
PopulateStandardText(Resource.Id.entry_user_name, Resource.Id.entryfield_container_username, PwDefs.UserNameField);
|
||||
PopulateStandardText(Resource.Id.entry_url, Resource.Id.entryfield_container_url, PwDefs.UrlField);
|
||||
PopulateStandardText(new List<int> { Resource.Id.entry_totp, Resource.Id.entry_totp_visible }, Resource.Id.entryfield_container_totp, Kp2aTotp.TotpKey);
|
||||
PopulateStandardText(new List<int> { Resource.Id.entry_password, Resource.Id.entry_password_visible}, Resource.Id.entryfield_container_password, PwDefs.PasswordField);
|
||||
|
||||
RegisterProtectedTextView(PwDefs.PasswordField, FindViewById<TextView>(Resource.Id.entry_password), FindViewById<TextView>(Resource.Id.entry_password_visible));
|
||||
RegisterProtectedTextView(Kp2aTotp.TotpKey, FindViewById<TextView>(Resource.Id.entry_totp), FindViewById<TextView>(Resource.Id.entry_totp_visible));
|
||||
|
||||
RegisterTextPopup(FindViewById<RelativeLayout> (Resource.Id.groupname_container),
|
||||
FindViewById (Resource.Id.entry_group_name), KeyGroupFullPath);
|
||||
FindViewById (Resource.Id.entry_group_name), KeyGroupFullPath,
|
||||
FindViewById(Resource.Id.entryfield_group_container));
|
||||
|
||||
RegisterTextPopup(FindViewById<RelativeLayout>(Resource.Id.username_container),
|
||||
FindViewById(Resource.Id.username_vdots), PwDefs.UserNameField);
|
||||
FindViewById(Resource.Id.username_vdots), PwDefs.UserNameField,
|
||||
FindViewById(Resource.Id.entryfield_container_username));
|
||||
|
||||
RegisterTextPopup(FindViewById<RelativeLayout>(Resource.Id.url_container),
|
||||
FindViewById(Resource.Id.url_vdots), PwDefs.UrlField)
|
||||
FindViewById(Resource.Id.url_vdots), PwDefs.UrlField,
|
||||
FindViewById(Resource.Id.entryfield_container_url))
|
||||
.Add(new GotoUrlMenuItem(this, PwDefs.UrlField));
|
||||
RegisterTextPopup(FindViewById<RelativeLayout>(Resource.Id.password_container),
|
||||
FindViewById(Resource.Id.password_vdots), PwDefs.PasswordField);
|
||||
FindViewById(Resource.Id.password_vdots), PwDefs.PasswordField,
|
||||
FindViewById(Resource.Id.entryfield_container_password));
|
||||
RegisterTextPopup(FindViewById<RelativeLayout>(Resource.Id.totp_container),
|
||||
FindViewById(Resource.Id.totp_vdots), Kp2aTotp.TotpKey, FindViewById(Resource.Id.entryfield_container_totp));
|
||||
|
||||
|
||||
PopulateText(Resource.Id.entry_created, Resource.Id.entryfield_container_created, getDateTime(Entry.CreationTime));
|
||||
@@ -978,7 +992,8 @@ namespace keepass2android
|
||||
}
|
||||
PopulateStandardText(Resource.Id.entry_comment, Resource.Id.entryfield_container_comment, PwDefs.NotesField);
|
||||
RegisterTextPopup(FindViewById<RelativeLayout>(Resource.Id.comment_container),
|
||||
FindViewById(Resource.Id.comment_vdots), PwDefs.NotesField);
|
||||
FindViewById(Resource.Id.comment_vdots), PwDefs.NotesField,
|
||||
FindViewById(Resource.Id.entryfield_container_comment));
|
||||
|
||||
PopulateText(Resource.Id.entry_tags, Resource.Id.entryfield_container_tags, concatTags(Entry.Tags));
|
||||
PopulateText(Resource.Id.entry_override_url, Resource.Id.entryfield_container_overrideurl, Entry.OverrideUrl);
|
||||
@@ -992,6 +1007,40 @@ namespace keepass2android
|
||||
SetPasswordStyle();
|
||||
}
|
||||
|
||||
private async Task UpdateTotpCountdown()
|
||||
{
|
||||
if (App.Kp2a.LastOpenedEntry == null)
|
||||
return;
|
||||
var totpData = new Kp2aTotp().TryGetTotpData(App.Kp2a.LastOpenedEntry);
|
||||
|
||||
if (totpData == null || !totpData.IsTotpEntry)
|
||||
return;
|
||||
|
||||
var totpProvider = new TOTPProvider(totpData);
|
||||
|
||||
var progressBar = FindViewById<ProgressBar>(Resource.Id.TotpCountdownProgressBar);
|
||||
|
||||
int lastSecondsLeft = -1;
|
||||
while (!isPaused && progressBar != null)
|
||||
{
|
||||
|
||||
int secondsLeft = totpProvider.Timer;
|
||||
|
||||
if (secondsLeft != lastSecondsLeft)
|
||||
{
|
||||
lastSecondsLeft = secondsLeft;
|
||||
// Update the progress bar on the UI thread
|
||||
RunOnUiThread(() =>
|
||||
{
|
||||
progressBar.Progress = secondsLeft;
|
||||
progressBar.Max = totpProvider.Duration;
|
||||
});
|
||||
}
|
||||
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
private void PopulatePreviousVersions()
|
||||
{
|
||||
ViewGroup historyGroup = (ViewGroup)FindViewById(Resource.Id.previous_versions);
|
||||
@@ -1041,12 +1090,12 @@ namespace keepass2android
|
||||
SendBroadcast(i);
|
||||
}
|
||||
}
|
||||
private List<IPopupMenuItem> RegisterTextPopup(View container, View anchor, string fieldKey)
|
||||
private List<IPopupMenuItem> RegisterTextPopup(View container, View anchor, string fieldKey, View outerContainer)
|
||||
{
|
||||
return RegisterTextPopup(container, anchor, fieldKey, Entry.Strings.GetSafe(fieldKey).IsProtected);
|
||||
return RegisterTextPopup(container, anchor, fieldKey, Entry.Strings.GetSafe(fieldKey).IsProtected || fieldKey == Kp2aTotp.TotpKey, outerContainer);
|
||||
}
|
||||
|
||||
private List<IPopupMenuItem> RegisterTextPopup(View container, View anchor, string fieldKey, bool isProtected)
|
||||
private List<IPopupMenuItem> RegisterTextPopup(View container, View anchor, string fieldKey, bool isProtected, View outerContainer)
|
||||
{
|
||||
string popupKey = Strings.PrefixString + fieldKey;
|
||||
var popupItems = RegisterPopup(
|
||||
@@ -1056,10 +1105,20 @@ namespace keepass2android
|
||||
popupItems.Add(new CopyToClipboardPopupMenuIcon(this, _stringViews[fieldKey], isProtected));
|
||||
if (isProtected)
|
||||
{
|
||||
var valueView = container.FindViewById<TextView>(fieldKey == PwDefs.PasswordField ? Resource.Id.entry_password : Resource.Id.entry_extra);
|
||||
var valueView = container.FindViewById<TextView>(fieldKey switch
|
||||
{
|
||||
PwDefs.PasswordField => Resource.Id.entry_password,
|
||||
Kp2aTotp.TotpKey => Resource.Id.entry_totp,
|
||||
_ => Resource.Id.entry_extra
|
||||
});
|
||||
popupItems.Add(new ToggleVisibilityPopupMenuItem(this, valueView));
|
||||
}
|
||||
|
||||
//copy text to clipboard when the outer container (including the field icon on the left) or the inner container
|
||||
// (containing the textview and the vertical dots for the popup menu) is long-clicked.
|
||||
RegisterCopyOnLongClick(outerContainer, fieldKey, isProtected);
|
||||
RegisterCopyOnLongClick(container, fieldKey, isProtected);
|
||||
|
||||
if (fieldKey != PwDefs.UrlField //url already has a go-to-url menu
|
||||
&& (_stringViews[fieldKey].Text.StartsWith(KeePass.AndroidAppScheme)
|
||||
|| _stringViews[fieldKey].Text.StartsWith("http://")
|
||||
@@ -1070,6 +1129,11 @@ namespace keepass2android
|
||||
return popupItems;
|
||||
}
|
||||
|
||||
private void RegisterCopyOnLongClick(View container, string fieldKey, bool isProtected)
|
||||
{
|
||||
container.LongClick += (sender, args) =>
|
||||
CopyToClipboardService.CopyValueToClipboardWithTimeout(this, _stringViews[fieldKey].Text, isProtected);
|
||||
}
|
||||
|
||||
|
||||
private void ShowPopup(View anchor, string popupKey)
|
||||
@@ -1136,6 +1200,8 @@ namespace keepass2android
|
||||
value = SprEngine.Compile(value, new SprContext(Entry, App.Kp2a.CurrentDb.KpDatabase, SprCompileFlags.All));
|
||||
PopulateText(viewIds, containerViewId, value);
|
||||
_stringViews.Add(key, new StandardStringView(viewIds, containerViewId, this));
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void PopulateGroupText(int viewId, int containerViewId, String key)
|
||||
@@ -1283,8 +1349,13 @@ namespace keepass2android
|
||||
return base.OnPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
bool isPaused = false;
|
||||
|
||||
|
||||
protected override void OnPause()
|
||||
{
|
||||
base.OnPause();
|
||||
isPaused = true;
|
||||
}
|
||||
|
||||
|
||||
private void UpdateTogglePasswordMenu()
|
||||
@@ -1324,6 +1395,8 @@ namespace keepass2android
|
||||
ClearCache();
|
||||
base.OnResume();
|
||||
_activityDesign.ReapplyTheme();
|
||||
isPaused = false;
|
||||
Task.Run(UpdateTotpCountdown);
|
||||
}
|
||||
|
||||
public void ClearCache()
|
||||
|
@@ -39,6 +39,9 @@ using Android.Support.V4.View;
|
||||
using Android.Views.Autofill;
|
||||
using CursorAdapter = Android.Support.V4.Widget.CursorAdapter;
|
||||
using Object = Java.Lang.Object;
|
||||
using Android.Text;
|
||||
using keepass2android.search;
|
||||
using KeeTrayTOTP.Libraries;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
@@ -115,6 +118,8 @@ namespace keepass2android
|
||||
FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
|
||||
|
||||
FindViewById(Resource.Id.fabAddNew).Visibility = (showAddGroup || showAddEntry) ? ViewStates.Visible : ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabSearch).Visibility = (showAddGroup || showAddEntry) ? ViewStates.Visible : ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabTotpOverview).Visibility = CanShowTotpFab() ? ViewStates.Visible : ViewStates.Gone;
|
||||
}
|
||||
|
||||
UpdateBottomBarElementVisibility(Resource.Id.insert_element, false);
|
||||
@@ -262,6 +267,7 @@ namespace keepass2android
|
||||
private bool hasCalledOtherActivity = false;
|
||||
private IMenuItem searchItem;
|
||||
private IMenuItem searchItemDummy;
|
||||
private bool isPaused;
|
||||
|
||||
protected override void OnResume()
|
||||
{
|
||||
@@ -281,8 +287,39 @@ namespace keepass2android
|
||||
RefreshIfDirty();
|
||||
|
||||
SetSearchItemVisibility();
|
||||
}
|
||||
|
||||
isPaused = false;
|
||||
System.Threading.Tasks.Task.Run(UpdateTotpCountdown);
|
||||
}
|
||||
private async System.Threading.Tasks.Task UpdateTotpCountdown()
|
||||
{
|
||||
|
||||
while (!isPaused )
|
||||
{
|
||||
RunOnUiThread(() =>
|
||||
{
|
||||
var listView = FragmentManager.FindFragmentById<GroupListFragment>(Resource.Id.list_fragment)
|
||||
.ListView;
|
||||
if (listView != null)
|
||||
{
|
||||
int count = listView.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
var item = listView.GetChildAt(i);
|
||||
if (item is PwEntryView)
|
||||
{
|
||||
var entryView = (PwEntryView)item;
|
||||
entryView.UpdateTotp();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
await System.Threading.Tasks.Task.Delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateInfotexts()
|
||||
{
|
||||
@@ -390,6 +427,13 @@ namespace keepass2android
|
||||
}
|
||||
|
||||
|
||||
protected override void OnPause()
|
||||
{
|
||||
base.OnPause();
|
||||
isPaused = true;
|
||||
}
|
||||
|
||||
|
||||
private void UpdatePostNotificationsPermissionInfo(bool hideForever=false)
|
||||
{
|
||||
const string prefsKey = "DidShowNotificationPermissionInfo";
|
||||
@@ -572,6 +616,25 @@ namespace keepass2android
|
||||
};
|
||||
}
|
||||
|
||||
if (FindViewById(Resource.Id.fabSearch) != null)
|
||||
{
|
||||
FindViewById(Resource.Id.fabSearch).Click += (sender, args) =>
|
||||
{
|
||||
if (searchView?.Iconified != false)
|
||||
ActivateSearchView();
|
||||
else
|
||||
searchView.Iconified = true;
|
||||
};
|
||||
}
|
||||
|
||||
if (FindViewById(Resource.Id.fabTotpOverview) != null)
|
||||
{
|
||||
FindViewById(Resource.Id.fabTotpOverview).Click += (sender, args) =>
|
||||
{
|
||||
SearchTotpResults.Launch(this, this.AppTask);
|
||||
};
|
||||
}
|
||||
|
||||
if (FindViewById(Resource.Id.fabCancelAddNew) != null)
|
||||
{
|
||||
FindViewById(Resource.Id.fabAddNew).Click += (sender, args) =>
|
||||
@@ -580,6 +643,8 @@ namespace keepass2android
|
||||
FindViewById(Resource.Id.fabAddNewGroup).Visibility = AddGroupEnabled ? ViewStates.Visible : ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabAddNewEntry).Visibility = AddEntryEnabled ? ViewStates.Visible : ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabSearch).Visibility = ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabTotpOverview).Visibility = ViewStates.Gone;
|
||||
};
|
||||
|
||||
FindViewById(Resource.Id.fabCancelAddNew).Click += (sender, args) =>
|
||||
@@ -588,6 +653,8 @@ namespace keepass2android
|
||||
FindViewById(Resource.Id.fabAddNewGroup).Visibility = ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Visible;
|
||||
FindViewById(Resource.Id.fabSearch).Visibility = ViewStates.Visible;
|
||||
FindViewById(Resource.Id.fabTotpOverview).Visibility = CanShowTotpFab() ? ViewStates.Visible : ViewStates.Gone;
|
||||
};
|
||||
|
||||
|
||||
@@ -666,6 +733,11 @@ namespace keepass2android
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected virtual bool CanShowTotpFab()
|
||||
{
|
||||
return App.Kp2a.CurrentDb.HasTotpEntries && Group == App.Kp2a.CurrentDb.Root;
|
||||
}
|
||||
|
||||
private bool IsTimeForInfotext(out string lastInfoText)
|
||||
@@ -1029,6 +1101,7 @@ namespace keepass2android
|
||||
searchView.Iconified = false;
|
||||
AppTask.CanActivateSearchViewOnStart = false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void UpdateOfflineModeMenu()
|
||||
@@ -1067,6 +1140,15 @@ namespace keepass2android
|
||||
|
||||
public abstract ElementAndDatabaseId FullGroupId { get; }
|
||||
|
||||
public virtual bool MayPreviewTotp
|
||||
{
|
||||
get
|
||||
{
|
||||
return !PreferenceManager.GetDefaultSharedPreferences(this).GetBoolean(GetString(Resource.String.masktotp_key),
|
||||
Resources.GetBoolean(Resource.Boolean.masktotp_default));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override bool OnPrepareOptionsMenu(IMenu menu)
|
||||
{
|
||||
@@ -1267,6 +1349,7 @@ namespace keepass2android
|
||||
FindViewById(Resource.Id.fabAddNewGroup).Visibility = ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Gone;
|
||||
FindViewById(Resource.Id.fabSearch).Visibility = ViewStates.Gone;
|
||||
|
||||
UpdateBottomBarElementVisibility(Resource.Id.insert_element, true);
|
||||
UpdateBottomBarElementVisibility(Resource.Id.cancel_insert_element, true);
|
||||
@@ -1331,6 +1414,7 @@ namespace keepass2android
|
||||
|
||||
ListView.ItemClick += (sender, args) => ((GroupListItemView)args.View).OnClick();
|
||||
|
||||
|
||||
StyleListView();
|
||||
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionCode="197"
|
||||
android:versionName="1.09e-r7"
|
||||
android:versionCode="200"
|
||||
android:versionName="1.11-r0"
|
||||
package="keepass2android.keepass2android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="auto">
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionCode="197"
|
||||
android:versionName="1.09e-r7"
|
||||
android:versionCode="200"
|
||||
android:versionName="1.11-r0"
|
||||
package="keepass2android.keepass2android_nonet"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="auto">
|
||||
@@ -40,7 +40,7 @@
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="33" />
|
||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
|
||||
<permission android:description="@string/permission_desc2" android:icon="@drawable/ic_launcher_offline" 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_offline" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android_nonet.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
||||
<application
|
||||
|
@@ -140,7 +140,7 @@ namespace keepass2android
|
||||
//will return the results later
|
||||
Intent i = new Intent(this, typeof (SelectCurrentDbActivity));
|
||||
//don't show user notifications when an entry is opened.
|
||||
var task = new SearchUrlTask() {UrlToSearchFor = _requestedUrl, ShowUserNotifications = ShowUserNotificationsMode.WhenTotp};
|
||||
var task = new SearchUrlTask() {UrlToSearchFor = _requestedUrl, ShowUserNotifications = ActivationCondition.WhenTotp, ActivateKeyboard = ActivationCondition.Never };
|
||||
task.ToIntent(i);
|
||||
StartActivityForResult(i, RequestCodeQuery);
|
||||
_startedQuery = true;
|
||||
|
BIN
src/keepass2android/Resources/drawable-mdpi/ic_entry_totp.png
Normal file
BIN
src/keepass2android/Resources/drawable-mdpi/ic_entry_totp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
BIN
src/keepass2android/Resources/drawable-mdpi/ic_fab_search.png
Normal file
BIN
src/keepass2android/Resources/drawable-mdpi/ic_fab_search.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.9 KiB |
BIN
src/keepass2android/Resources/drawable-mdpi/ic_fab_totp.png
Normal file
BIN
src/keepass2android/Resources/drawable-mdpi/ic_fab_totp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.3 KiB |
BIN
src/keepass2android/Resources/drawable-xhdpi/ic_entry_totp.png
Normal file
BIN
src/keepass2android/Resources/drawable-xhdpi/ic_entry_totp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
BIN
src/keepass2android/Resources/drawable-xhdpi/ic_fab_search.png
Normal file
BIN
src/keepass2android/Resources/drawable-xhdpi/ic_fab_search.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
src/keepass2android/Resources/drawable-xhdpi/ic_fab_totp.png
Normal file
BIN
src/keepass2android/Resources/drawable-xhdpi/ic_fab_totp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.3 KiB |
@@ -61,6 +61,28 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:text="group detail"
|
||||
style="@style/GroupDetailInSearchResult" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/totp_layout"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/totp_text"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:text=""/>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/TotpCountdownProgressBar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginRight="30dp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView android:id="@+id/right_arrow"
|
||||
|
@@ -184,6 +184,68 @@
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/entryfield_container_totp"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
style="@style/EntryEditSingleLine_ImageView"
|
||||
android:src="@drawable/ic_entry_totp" />
|
||||
|
||||
<LinearLayout
|
||||
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
<!-- TOTP -->
|
||||
<TextView
|
||||
android:id="@+id/entry_totp_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/TOTP"
|
||||
style="@style/EntryFieldHeader" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/totp_container"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
<ImageView
|
||||
android:id="@+id/totp_vdots"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="15dp"
|
||||
android:src="@drawable/vdots"
|
||||
android:gravity="right|bottom"
|
||||
android:layout_alignParentRight="true" />
|
||||
<TextView
|
||||
android:id="@+id/entry_totp"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:password="true"
|
||||
android:typeface="monospace"
|
||||
android:layout_toLeftOf="@id/totp_vdots"
|
||||
style="@style/EntryItem" />
|
||||
<TextView
|
||||
android:id="@+id/entry_totp_visible"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toLeftOf="@id/totp_vdots"
|
||||
style="@style/EntryItem" />
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/TotpCountdownProgressBar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginRight="30dp" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/entryfield_container_comment"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
|
@@ -400,5 +400,23 @@
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="160dp"
|
||||
android:visibility="gone"/>
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fabSearch"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|bottom|right"
|
||||
android:src="@drawable/ic_fab_search"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="88dp"
|
||||
android:visibility="gone"/>
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fabTotpOverview"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|bottom|right"
|
||||
android:src="@drawable/ic_fab_totp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="160dp"
|
||||
android:visibility="gone"/>
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</RelativeLayout>
|
@@ -22,8 +22,8 @@
|
||||
<string name="short_app_name_nonet">KP2A Offline</string>
|
||||
<string name="app_timeout">مهلة التطبيق</string>
|
||||
<string name="app_timeout_summary">المدة الزمنية قبل تأمين قاعدة البيانات في حال كان التطبيق غير نشط.</string>
|
||||
<string name="kill_app_label">إنهاء عملية التطبيق</string>
|
||||
<string name="show_kill_app">زر الإغلاق</string>
|
||||
<string name="kill_app_label">إنهاء عملية التطبيق</string>
|
||||
<string name="show_kill_app_summary">عرض زر في شاشة كلمة المرور للإقاف معالجة التطبيق (للمستخدمين المتخوفين)</string>
|
||||
<string name="application">التطبيق</string>
|
||||
<string name="application_settings">إعدادات التطبيق</string>
|
||||
@@ -611,18 +611,6 @@
|
||||
<string name="Continue">استمر</string>
|
||||
<string name="NoFilenameWarning">الـ URI المدرجة لا تبدو اسم ملف. هل أنت متأكد من أن هذا ملف صحيح؟</string>
|
||||
<string name="FirstInvalidCompositeKeyError">تركيبة مفتاح المرور غير صالحة! يرجى المحاولة مجدداً.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">تركيبة مفتاح المرور غير صالحة! حاول الخطوات التالية لفتح قاعدة بياناتك:\n
|
||||
•تأكد من ادخالك لكلمة مرورك بصحة. ايقونة العين تكشف الكلمة.\n
|
||||
•تأكد من تحديدك لنوع كلمة المرور الصحيح. هذا عليه ان يطابق النوع الذي أستخدم عند تأليف القاعدة لأول مرة.\n
|
||||
•تأكد انك اخترت ملف قاعدة البيانات الصحيح.
|
||||
</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• تلميح: إذا كنت تعتقد أن ملف قاعدة البيانات الخاص بك قد يكون فاسدا أو أنك لا تتذكر المفتاح الرئيسي بعد تعديله، يمكنك محاولة آخر إصدار ملف فتح بنجاح عن طريق النقر فوق \"%1$s\" واختيار النسخة الاحتياطية المحلية.</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• تلميح: قام Keepass2Android بتخزين آخر إصدار فتح للملف بنجاح على وحدة التخزين الداخلية. يمكنك فتحه بالنقر على \"%1$s\" واختيار النسخة الاحتياطية المحلية.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp">الملف معطوب.\n
|
||||
هنا هي بعض التلميحات التي قد تساعد على تشخيص المسألة: \n إن قمت بنسخ الملف عبر USB (وضع الخطة المتوسطة الأجل)، الرجاء المحاولة مرة أخرى باستخدام أدوات مثل MyPhoneExplorer. الخطة المتوسطة الأجل تقتطع الملفات في بعض الحالات. \n • إذا تعذر عليك فتح الملف من نفس الموقع على جهاز الكمبيوتر الخاص بك، فمن المحتمل جداً أن الملف معطوب فعلا. الرجاء استخدام نسخة احتياطية من قاعدة البيانات. إذا كنت تفترض أن Keepass2Android قد أتلف الملف، الرجاء الاتصال بالمساعدة. \n • إذا تمكنت من فتح الملف على جهاز الكمبيوتر الخاص بك، الرجاء الاتصال بالمساعدة. يمكنك محاولة حفظه باستخدام إعدادات مختلفة (مثلا، غير مضغوط) على جهاز الكمبيوتر وإعادة محاولة فتحه في Keepass2Android. </string>
|
||||
<string name="open_other_db">فتح قاعدة بيانات أخرى…</string>
|
||||
<string name="select_database">حدد قاعدة البيانات</string>
|
||||
<string name="configure_child_dbs">تكوين قواعد بيانات الأطفال…</string>
|
||||
@@ -679,272 +667,7 @@
|
||||
<item>قم بالتبديل إلى API BometricPrompt لتحسين تجربة المستخدم مع فتح بصمة الإصبع والسماح باستخدام إلغاء قفل الوجه، على سبيل المثال على Pixel 4.</item>
|
||||
<item>إصلاح الأخطاء</item>
|
||||
</string-array>
|
||||
<string name="ChangeLog_1_07b"> الإصدار 1. 7b\n
|
||||
* تحسين أداء أرغون2 باستخدام التنفيذ المحلي (شكراً لشيه - هسوان!\n
|
||||
* السماح بتعطيل بصمة الإصبع بالنقر على أيقونة بصمة الإصبع (تجنب مشكلة مع قراء بصمة الإصبع أسفل الشاشة، شكرا للماركودالاس!\n
|
||||
* استعادة موضع المؤشر عند تبديل رؤية كلمة المرور (بفضل DDoSolitary!\n
|
||||
* إدخال تحسينات على تطبيق pCloud (بفضل gilbsgilps مرة أخرى!\n
|
||||
* إضافة دعم تلقائي للعديد من المتصفحات الأخرى \n
|
||||
* تنفيذ جديد لـ OneDrive: يشمل دعم OneDrive للأعمال التجارية، الملفات المشتركة، نطاقات الوصول المحددة، العديد من الحسابات وإصلاح المشكلات مع الوصول دون اتصال\n
|
||||
* إصلاحات الشوائب
|
||||
</string>
|
||||
<string name="ChangeLog_1_07"> الإصدار 1. 7\n
|
||||
* إصلاحات لتعطل الأندرويد 9\nفي سامسونج
|
||||
* السماح بفتح أكثر من قاعدة بيانات واحدة، متوافق مع KeeAutoExec\n
|
||||
* SFTP: السماح بمصادقة المفتاح العمومي، تحقق مما إذا كان مفتاح المضيف قد تغير\n
|
||||
* تقديم دعم pCloud - بفضل gilbsgilb!\n
|
||||
* جعل دعم Nextcloud صريحا\n
|
||||
* تحسين حفظ وتحديث مرفقات الدخول\n
|
||||
* المزيد من الخيارات لتكييف السلوك مع التفضيلات الشخصية\n
|
||||
* SSL: شهادات المستخدم الائتماني\n
|
||||
* تحسين التعبئة التلقائية (يعمل الآن مع Firefox)، السماح بتقليل النوافذ المنبثقة)\n
|
||||
* إصلاحات الشوائب\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_06"> الإصدار 1. 6\n
|
||||
* التبديل إلى ykDroid بدلاً من YubiChallenge كتطبيق لتحدي Yubikey - Response.\n
|
||||
* تنفيذ الدعم للتحدي على نمط KeepassXC. ملاحظة: يجب أن يكون تنسيق قاعدة البيانات KDBX4!\n
|
||||
* رفض تحميل الملفات المحذوفة من Google Drive\n
|
||||
* تبديل تطبيق TLS لـ FTPS ، إضافة العمل إلى مشكلة JSch مع خوادم تدعم gssapi-مع mic\n
|
||||
* إصلاحات الشوائب\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_05"> الإصدار 1. 5\n
|
||||
* استخدام قنوات الإشعار لنظام أندرويد 8، السماح بالتكوين من خلال إعدادات النظام\n
|
||||
* إظهار رمز الإدخال في التنبيهات\n
|
||||
* استخدام أيقونات التكيف للأندرويد 8، استخدام أيقونة مشغل الجولة للأندرويد 7\n
|
||||
* السماح بتنشيط البحث عند فتح القفل (انظر الإعدادات)\n
|
||||
* غيّر طريقة كتابة الملفات من خلال إطار الوصول إلى التخزين، إصلاح المشكلات مع تحديث الملفات على Google Drive التي تم فتحها من خلال منتقي ملفات النظام\n
|
||||
* إضافة بعض نصوص المعلومات لتجنب بعض سوء الفهم الشائعة\n
|
||||
* إنشاء نسخ احتياطية محلية لقواعد البيانات المفتوحة بنجاح للحد من خطر فقدان البيانات\n
|
||||
* تم تحديث JSch لدعم المزيد من شفرات SSH الأحدث\n
|
||||
* السماح بتعديل إعدادات الاتصال، e. . عند تغيير كلمة مرور WebDav\n
|
||||
* تم إضافة دعم لوضع كلمة المرور الثابتة لـ Yubikey Neo\n
|
||||
* السماح بتعطيل اقتراح التعبئة التلقائية\n
|
||||
* تسرب البيانات الثابتة إلى logcat\n
|
||||
* إصلاحات الشوائب\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_04b"> الإصدار 1.04b\n
|
||||
* تجنب الأعطال عندما يحاول المستخدم تمكين التعبئة التلقائية على أجهزة Huawei\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_04"> الإصدار 1.04\n
|
||||
* إضافة خدمة التعبئة التلقائية للأندرويد 8.0 وما بعد.\n
|
||||
* تم ترقية المكتبات، بناء الأدوات والإصدار المستهدف SDK.\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_03"> الإصدار 1.03\n
|
||||
* إزالة خدمة الوصول إلى التعبئة التلقائية كما هو مطلوب من جوجل. الرجاء الاطلاع على إعدادات الوصول إلى كلمة المرور للعثور على إضافة تكرارية للوظيفة السابقة.\n
|
||||
* أضيفت تطبيقات الطرف الثالث كخيار تخزين مرة أخرى\n
|
||||
* مشاهدة الصور المتكاملة لعرض الصور المرفقة دون نقلها إلى تطبيقات أخرى\n
|
||||
* تم ترقية OkHttp لإصلاح المشكلات مع بعض الاتصالات\n
|
||||
* دعم إدخالات KeeTrayTOTP. يدعم الآن إدخالات Steam\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_02"> الإصدار 1.02\n
|
||||
* عدة تحسينات أمنية. شكرا جزيلا على التقرير الأمني الذي أعده jean-baptiste.cayrou@thalesgroup.com و vincent.fargues@thalesgroup. اوم و لتعاونهم!\n
|
||||
* دعم تطبيق KeyboardSwapplugin (انظر خيارات الوصول إلى كلمة المرور): يسمح بتبديل طريقة الإدخال تلقائياً على الأجهزة غير المجذرة. شكراً لمشعل رحمان من مطوري XDA-developers لجعل هذا ممكناً.\n
|
||||
* إصلاح خدمة إمكانية الوصول مع إصدارات كروم الأخيرة\n
|
||||
* إصلاح لإزالة بيانات بصمات الأصابع بلا داع\n
|
||||
* إصلاح الأعطال الثانوية\n
|
||||
* تحديث Dropbox SDK لضمان التوافق في المستقبل\n
|
||||
* إزالة الإبلاغ عن الأخطاء من خلال تصورات Xamarin\n
|
||||
* تحديث أدوات البناء\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01g"> الإصدار 1. 1-g\n
|
||||
* إصلاح الأعطال عند محاولة العمل دون اتصال\n
|
||||
* إصلاح لترميز بيانات اعتماد FTP(S) بشكل غير صحيح\n
|
||||
* إصلاح الأعطال عند استخدام OneDrive وعلى إصدارات الأندرويد الأقدم\n
|
||||
* عرض الأوقات المحلية في شاشة الدخول\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01d"> الإصدار 1. 1-d\n
|
||||
* إصلاح قائمة ملفات OneDrive\n
|
||||
* السماح بتجاهل أخطاء الشهادة أيضًا عندما فشل التحقق من اسم المضيف (غير موصى به للاستخدام في الإنتاج)\n
|
||||
* إصلاح لفتح القفل السريع في بعض الأحيان على الرغم من رمز الفتح الصحيح\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8c">الإصدار 0.9.8c
|
||||
* إصلاح مشكلة ضعف طبقة المقابس الآمنة (SSL) في Microsoft Live SDK (تستخدم عند الوصول إلى الملفات عبر OneDrive)
|
||||
* إصلاح بعض الأخطاء: الإصدار السابق يحتوي على طرقتين للإدخال (واحدة تحطمت) </string>
|
||||
<string name="ChangeLog_1_01">الإصدار 1.01
|
||||
* إضافة دعم لصيغة KDBX-4 الجديدة (متوافق مع Keepass 2.35) ومتضمن اشتقاق مفتاح Argon2 و تشفير ChaCha20.
|
||||
* إعادة تنفيذ لتخزين ملفات WebDav, الآن يسمح بتصفح الملفات ويدعم التشفير الجديد.
|
||||
* إعادة تنفيذ لتخزين ملفات FTP, يسمح الآن بتصفح الملفات ويدعم تشفير (FTPS).
|
||||
* التحديث ل OneDrive SDK ( المستخدم سابقاً من SDK لم يعد محدث).
|
||||
* التحديث ل Dropbox SDK الإصدار 2 ( تم إهمال المستخدم سابقاً من SDK الإصدار 1).
|
||||
*إضافة دعم ل OwnCloud.
|
||||
* طلب إذن للتخزين قبل فتح الملفات المحلية
|
||||
</string>
|
||||
<string name="ChangeLog_1_0_0e"> الإصدار 1.0. e\n
|
||||
* إصلاح لفتح قفل البصمة على أجهزة سامسونج الأقدم مع أندرويد 6\n
|
||||
* إضافة دعم أصلي لأجهزة x86\n
|
||||
* السماح بإخفاء لوحة المفاتيح أثناء فحص بصمات الإصبع\n
|
||||
* إنشاء تحديث النظام
|
||||
</string>
|
||||
<string name="ChangeLog_1_0_0"> الإصدار 1.0.0\n
|
||||
* فتح بصمة الإصبع (يتطلب أندرويد 6. + أو جهاز سامسونج)\n
|
||||
* تمت إضافة خدمة التعبئة التلقائية (يتطلب أندرويد 5. +)\n
|
||||
* تم إضافة دعم لقوالب الإدخال\n
|
||||
* تم إضافة وضع \"العمل دون اتصال\"\n
|
||||
* السماح بنسخ المدخلات\n
|
||||
* وضع الإكمال التلقائي للأسماء الحقول\n
|
||||
* السماح بإزالة العناصر من قائمة الملفات الحديثة\n
|
||||
* طلب أذونات في وقت التشغيل في Android 6.\n
|
||||
* إصلاحات الشوائب (في لوحة المفاتيح المدمجة، عند تحديد الأيقونات\n
|
||||
* يتضمن خيار إرسال تقارير الأخطاء\n
|
||||
* تم إضافة رسائل مساعدة في عدة نقاط\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9"><unk> نسخة 0.9.9\n
|
||||
<unk> * أكمل إعادة تصميم واجهة المستخدم. شكرا جزيلا لستيفانو بيغناتارو (http://www.spstudio). ) لدعمه!\n
|
||||
* السماح بإضافة أيقونات مخصصة\n
|
||||
* دعم وضع النافذة المتعددة على أجهزة سامسونج\n
|
||||
* زيادة العدد الافتراضي لجولات التشفير لقواعد البيانات الجديدة\n
|
||||
* التحقق من المفاتيح المكررة للحقول الإضافية لتجنب فقدان البيانات\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9c"> الإصدار 0.9. c\n
|
||||
* موضوع الظلام عاد\n
|
||||
* يمكنك تثبيت حزم أيقونات أخرى (أيقونات نمط ويندوز القديمة متوفرة على متجر Play)\n
|
||||
* إضافة سؤال تأكيد عند حذف عناصر بدون سلة إعادة التدوير\n
|
||||
* إصلاحات الشوائب (عرض خاطئ لترميز OTP السري، أيقونة التطبيق خاطئة في بعض الأماكن)\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8b"><unk> الإصدار 0.9. (ب)\n
|
||||
<unk> * إصلاحات الشوائب (فشل الحفظ لبعض قواعد البيانات، التصدير إلى الجهاز المحلي لا يعمل، تحديد بعض خيارات التفضيلات تعطل التطبيق)\n</string>
|
||||
<string name="ChangeLog_0_9_8"><unk> الإصدار 0.9.\n
|
||||
<unk> * دعم لإطار الوصول إلى التخزين (يسمح بالكتابة إلى بطاقة SD و Google Drive في KP2A Offline)\n
|
||||
<unk> * حاول الكشف عن إدخال المستخدم الخاطئ عند إدخال عناوين URL لـ WebDAV (الدليل بدلا من الملف)\n
|
||||
<unk> * * تغيير خط كلمة المرور\n
|
||||
<unk> * السماح بتغيير حساب Dropbox\n
|
||||
<unk> * إصلاح خطأ: الآن تذكر كلمة مرور OTP</string>
|
||||
<string name="ChangeLog_0_9_7b"><unk> الإصدار 0.9.7b\n
|
||||
<unk> * الترجمات المحدثة\n
|
||||
<unk> * إصلاحات الشوائب: خط كلمة المرور مفقود في 0. .7، الترتيب حسب الاسم لم يتم فرز المجموعات\n</string>
|
||||
<string name="ChangeLog_0_9_7"><unk> الإصدار 0.9.\n
|
||||
<unk> * دعم الكتابة لقاعدة بيانات Keepass 1 (kdb) (بيتا!\n
|
||||
<unk> * التبديل الأفضل إلى لوحة المفاتيح السابقة (يعمل أيضًا على الأجهزة غير الجذرية)\n
|
||||
<unk> <unk> * دعم تحدي KeeChallenge مع تحديات الطول المتغيرة\n
|
||||
<unk> <unk> <unk> * منع التقاط لقطات الشاشة من QuickUnlock وشاشات كلمة المرور\n
|
||||
<unk> * عكس ترتيب الترتيب للترتيب حسب تاريخ التعديل (التنازل)\n
|
||||
<unk> * إصلاحات الشوائب: يتم تحديث الملاحظات الآن بشكل صحيح بعد التغييرات، عرض كلمة المرور الآن يخفي كلمة المرور بشكل صحيح على (آمل) جميع الأجهزة، وقم بإصلاح المشكلة التي سمحت بإضافة إدخال مرتين، إصلاح المشكلة مع عرض تحذير UUID المكرر حتى بعد إصلاح قاعدة البيانات\n</string>
|
||||
<string name="ChangeLog_0_9_6"><unk> الإصدار 0.9.\n
|
||||
<unk> * السماح باستيراد ملف المفتاح و/أو ملف قاعدة البيانات المحلية إلى الدليل الداخلي للتطبيق (انظر الإعدادات)\n
|
||||
<unk> <unk> * السماح بخيارات فرز مختلفة\n
|
||||
<unk> <unk> * تحسين تفضيلات التبديل التلقائي للوحة المفاتيح\n
|
||||
<unk> <unk> * تحديث تصميم شعار التطبيق والإشعارات تصميم من ستيفانو بيغناتارو (http://www. الاستوديو. ر)\n
|
||||
<unk> * يتذكر مولد كلمة المرور آخر إعدادات\n
|
||||
<unk> <unk> * تعيين ظهور الإشعار لشاشة قفل أندرويد 5\n
|
||||
<unk> * الآن مسح حقل كلمة المرور الرئيسية عند مغادرة التطبيق دون النقر على موافق\n
|
||||
<unk> * ثابت مع غياب لغات الإدخال في إعداد لوحة المفاتيح على بعض الأجهزة\n
|
||||
<unk> * ثابت مع تشغيل لوحة المفاتيح التلقائية على الأجهزة ذات الجذور\n
|
||||
<unk> * إضافة فحص لقواعد البيانات الفاسدة (UIDs)\n
|
||||
<unk> * إعادة تحميل قاعدة البيانات تلقائيا عند اكتشاف التغيير، حل المخاوف الأمنية حول الكشف عن كلمة المرور الرئيسية\n
|
||||
<unk> * تحسين تصميم لوحة المفاتيح الصغيرة المهذبة، تثبيت إعدادات لوحة المفاتيح (بفضل ويكتور <unk> awski)\n</string>
|
||||
<string name="ChangeLog_0_9_5"><unk> <b>الإصدار 0.9.5</b>\n
|
||||
<unk> * إصلاح المشاكل مع تصفح الملفات (خاصة على أندرويد 4. )\n
|
||||
<unk> * مشكلة ثابتة مع التحميل. ملفات db (Keepass 1) على Nexus 5 مع Android Lollipop\n
|
||||
<unk> <unk> * إضافة خيار لمنع التقاط لقطات الشاشة/عرض التطبيق في قائمة التطبيقات الحديثة\n
|
||||
<unk> <unk> * إصلاح مشكلة مع تخزين ملفات Google Drive (الطبعة العادية)\n
|
||||
<unk> * السماح للملفات الرئيسية على أنواع التخزين المتعمدة (الطبعة العادية)\n
|
||||
<unk> * تحديث Dropbox SDK لتضمين تصحيح أمن رسمي (الطبعة العادية)\n
|
||||
<unk> * أدوات البناء المحدثة --> حجم apk زادع:-(\n
|
||||
<unk> I وعدت ببعض التغييرات. سوف تأتي مع الإصدار التالي - آسف. أردت نشر هذه الإصلاحات الساخنة في أقرب وقت ممكن.</string>
|
||||
<string name="ChangeLog_0_9_4"><unk> <b>الإصدار 0.9.</b>\n
|
||||
<unk> * إضافة دعم إضافي: راجع الإعدادات لكيفية الحصول على الإضافات!\n
|
||||
<unk> * نشر ملحق QR (مسح كلمات المرور، عرض كلمات المرور كرمز QR ، نقل الإدخالات إلى أجهزة KP2A الأخرى)\n
|
||||
<unk> * إضافة InputStick منشورة (نقل بيانات الاعتماد إلى جهاز الكمبيوتر الخاص بك عن طريق البلوتوث - يتطلب InputStick USB stick)\n
|
||||
<unk> * يمكن لتطبيقات الطرف الثالث الآن ببساطة تنفيذ الاستعلام KP2A للحصول على بيانات الاعتماد. هل أنت مطور؟ الرجاء إضافة هذا إلى التطبيق الخاص بك إذا كان ذلك مناسباً!\n
|
||||
<unk> * أضاف دعم TOTP (المتوافقة مع KeeOTP و TrayTotp)\n
|
||||
<unk> * يجب ألا يتم قتل التطبيق بواسطة Android عندما تكون قاعدة البيانات مفتوحة\n
|
||||
<unk> <unk> * لم تعد قاعدة البيانات مقفلة عند مغادرة التطبيق مع زر الرجوع (انظر الإعدادات)\n
|
||||
<unk> <unk> * * عرض أسماء المجموعات في عرض نتائج البحث (*)\n
|
||||
<unk> * إضافة قائمة السياق في عرض نتائج البحث بما في ذلك خيار \"الانتقال إلى الأصل\" (*)\n
|
||||
<unk> * إضافة خيار لعرض اسم المجموعة في عرض المدخل (*)\n
|
||||
<unk> * * * (*) بفضل ماثيو *) لتنفيذ هذه الميزاتيو !\n
|
||||
<unk> * دعم KeeChallenge (مع الجسم القريب من يوبيكي). شكرا لبن روش لتشغيل الموصل!\n
|
||||
<unk> * تحسين واجهة المستخدم\n
|
||||
<unk> * أصلح خطأ في واجهة Google Drive\n
|
||||
<unk> * إضافة خيار لتعطيل خيار \"التبرع\"\n
|
||||
<unk> <unk> * رمز فتح القفل المخفي الآن على Android 4. + أجهزة افتراضية\n </string>
|
||||
<string name="ChangeLog_0_9_3_r5"><unk> <b>الإصدار 0.9.3 r5</b>\n
|
||||
<unk> * إصلاحات مدمجة من Xamarin: Keepass2Android متوافقة الآن مع الـ ART على أندرويد 4. .2. أخيراً!\n
|
||||
<unk> * إصلاحات الشوائب: الأخطاء في المزامنة (تحديث العرض، التحقق الصحيح من التغييرات على http)، الأخطاء على أندرويد 2. أجهزة، أخطاء في تطبيقات تخزين Google Drive و OneDrive ، مسح الحافظة على قاعدة البيانات المغلقة، خلل في فتح المرفقات، عرض المشاكل مع لوحة المفاتيح\n</string>
|
||||
<string name="ChangeLog_0_9_3"><unk> <b>الإصدار 0.9.3</b>\n
|
||||
<unk> <unk> * لوحة مفاتيح جديدة مع العديد من التحسينات. راجع الإعدادات للتخصيص.\n
|
||||
<unk> * دعم للكيدب للقراءة فقط (Keepass 1 files). تجريبي!\n
|
||||
<unk> * إضافة دعم SFTP\n
|
||||
<unk> * إضافة عمل للخلل في ART (أندرويد 4. .2)\n
|
||||
<unk> * إصلاحات الشوائب\n</string>
|
||||
<string name="ChangeLog_0_9_2"><unk> <b>الإصدار 0.9.</b>\n
|
||||
<unk> * أضيف دعم OTP (متوافق مع ملحق OtpKeyProv)\n
|
||||
<unk> * دعم NFC المتكامل لبرمجيات OTP من الجسم القريب من YubiKey \n
|
||||
<unk> <unk> * عدة تحسينات في واجهة المستخدم\n
|
||||
<unk> <unk> * مدمج Keepass 2. 4 مكتبة\n
|
||||
<unk> * إضافة خيار لقتل عملية التطبيق (انظر الإعدادات)\n
|
||||
<unk> * تحسين التحقق من صحة شهادة SSL\n
|
||||
<unk> <unk> * إصلاحات الشوائب\n</string>
|
||||
<string name="ChangeLog_0_9_1">الإصدار 0.9.1
|
||||
*دعم متكامل ل SkyDrive (النسخة النظامية فقط منKeepass2Android)
|
||||
*حل مشاكل التكامل مع Google Drive.
|
||||
*إضافة دعم لميزة NTLM</string>
|
||||
<string name="ChangeLog_0_9"><unk> <b>الإصدار 0.</b>\n
|
||||
<unk> * دعم دروببوكس و Google Drive المتكامل (قواعد بيانات القراءة/الكتابة؛ Keepass2Android عدد منتظم فقط)\n
|
||||
<unk> * متصفح الملفات المخصص المدمج (على أساس أندرويد-filechooser بواسطة HBA)\n
|
||||
<unk> <unk> * تحسين واجهة المستخدم لإنشاء قواعد بيانات جديدة\n
|
||||
<unk> * تضمين خط مخصص DjaVu Sans Mono لعرض كلمات المرور\n
|
||||
<unk> * إصلاحات الشوائب</string>
|
||||
<string name="ChangeLog_0_8_6">الإصدار 0.8.6
|
||||
*دعم ميزة Twofish cipher.
|
||||
*السماح بتعديل المجموعات.
|
||||
*السماح بنقل القيود والمجموعات.
|
||||
*يمكن جعل أيقونة(فتح القفل السريع) QuickUnlock شفافة (راجع الإعدادات).
|
||||
*إصلاحات أخرى</string>
|
||||
<string name="ChangeLog_0_8_5"><unk> <b>الإصدار 0.8.</b>\n
|
||||
<unk> * يتم تخزين الملفات البعيدة في ذاكرة التخزين المؤقت للتطبيق المحلي للسماح بالاستخدام دون اتصال (بما في ذلك التحرير والمزامنة لاحقا). عرض الإعدادات. \n
|
||||
<unk> * رمز إشعار لتصور حالة قفل قاعدة البيانات (انظر الإعدادات)\n
|
||||
<unk> * تحسين تحديد حالة القفل في بعض الحالات\n
|
||||
<unk> * يتم تحميل ملفات قاعدة البيانات إلى الذاكرة أثناء كتابة كلمة المرور لزيادة سرعة التحميل (انظر الإعدادات)\n
|
||||
<unk> * يمكن إضافة المدخلات إلى مجموعة الجذر\n
|
||||
<unk> * إصلاحات الأخطاء (حل الحقول المرجعية) مشاكل مع لوحة المفاتيح على الأجهزة الإيطالية والصينية)</string>
|
||||
<string name="ChangeLog_0_8_4"><b>الإصدار 0.8.4</b>\n
|
||||
* يتم الكشف عن تغييرات قاعدة البيانات الخارجية ودمجها عند الحفظ\n
|
||||
* تحسين أداء التحميل\n
|
||||
* تحسين البحث في شريط الأدوات مع تقديم الاقتراحات\n
|
||||
* شعار \"التطبيق الجديد\"!\n
|
||||
* إضافة الدعم لملفات .kdbp لتحميل/حفظ أسرع\n
|
||||
* تحسين تعديل النصوص الإضافية وإخفاء العرض عندما تكون محمية\n
|
||||
شكرًا لـ Alex Vallat على مشاركته في البرمجة!\n
|
||||
شكرًا لـ Niki Hüttner (www.close-cut.de) على تصميم الشعار الجديد!\n</string>
|
||||
<string name="ChangeLog_0_8_3"><b>الإصدار 0.8.3</b>\n
|
||||
* يتم عرض رقم التسلسل لاسم المستخدم/\"رقم العملية\" في قائمة القيود\n
|
||||
* يمكن إنشاء القيود عندما لا يقوم البحث في المتصفح بعرض نتائج\n
|
||||
* لوحة مفاتيح KP2A تقدم إمكانية البحث عن بيانات الدخول للتطبيق الحالي\n
|
||||
* يتم إغلاق التطبيق تلقائيًا عند تحديد قيد للاستخدام في لوحة المفاتيح\n
|
||||
* صندوق اختيار لوحة المفاتيح يظهر تلقائيًا بعد البحث عن رابط (راجع الإعدادات)\n
|
||||
* يتم استبدال نصوص التلميح في حقول القيد قبل النسخ (يدعم معظم نصوص التلميح)\n
|
||||
* إصلاحات لبعض الأخطاء البسيطة </string>
|
||||
<string name="ChangeLog_0_8_2"><b>الإصدار 0.8.2</b>\n
|
||||
* دعم \"مصادقة الملخص\" في WebDAV\n
|
||||
* إصلاح أخطاء برمجية (مدير الملفات، فتح رابط)</string>
|
||||
<string name="ChangeLog_0_8_1"><b>الإصدار 0.8.1</b>\n
|
||||
* يمكن تثبيت KP2A Offline و Online معًا مرة أخرى\n
|
||||
* تمت إضافة ترجمات جديدة (شكرًا لجميع المساهمين!)</string>
|
||||
<string name="ChangeLog_0_8"><b>الإصدار 0.8</b>\n
|
||||
* تحسين واجهة المستخدم خاصة على أجهزة Android 4.x\n
|
||||
* السماح باستخدام مدير ملفات متعمّد لتحديد ملفات متواجدة حاليا\n
|
||||
* إضافة طريقة أكثر أمانًا لفتح المرفقات (من خلال مجلد التخزين المؤقت)\n
|
||||
* إصلاح أخطاء في نافذة \"تعديل\"\n
|
||||
* ربما أوجدنا أخطاء أكثر :-)</string>
|
||||
<string name="ChangeLog_keptDonate">تمديد إمكانية التبرع ببيرة أو أي شيء آخر</string>
|
||||
<string name="ChangeLog_0_7"><b>الإصدار 0.7</b>\n
|
||||
* زيادة سرعة التحميل: التحويلات الأساسية الآن ×10 مرات أسرع!\n
|
||||
* إضافة لوحة مفاتيح Keepass2Android: بدّل إلى هذه اللوحة عند أدخال بيانات الدخول. يحميك هذا من برامج التقاط نقرات لوحة المفاتيح (عطّل إشعارات حافظة لوحة المفاتيح القديمة في الخيارات)\n
|
||||
* إضافة زر للتبرع ببيرة أو أي شيء آخر (انظر للقائمة)</string>
|
||||
<string name="ChangeLog"><b>الإصدار 0.6.2</b>\n
|
||||
* التكامل مع Google Drive/Dropbox...: استخدم تطبيق Google Drive وDropbox الرسمي وقم بفتح ملفات (.kdbx). الآن هذا سيقوم بفتح KP2A.\n
|
||||
*تحسين صندوق حوار البحث\n
|
||||
* تحسين نتائج البحث لـ \"مشاركة رابط\" مع نطاقات فرعية\n
|
||||
* إضافة خيارات لتقديم الآراء، التقييمات وترجمة التطبيق في القائمة\n
|
||||
\n
|
||||
<b>الإصدار 0.6.1</b>\n
|
||||
* يتم الآن الكشف عن التغييرات الخارجية على قاعدة البيانات (مثال: بسبب المزامنة)\n
|
||||
* تحسين البحث عن الروابط من المتصفح\n
|
||||
* صندوق حوار للتأكيد على تجاهل التغييرات\n
|
||||
\n
|
||||
<b>الإصدار 0.6</b>\n
|
||||
أول إصدار علني </string>
|
||||
<string-array name="clipboard_timeout_options">
|
||||
<item>30 ثانية</item>
|
||||
<item>دقيقة</item>
|
||||
@@ -993,7 +716,7 @@
|
||||
</string-array>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>كلمة السر</item>
|
||||
<item>K2A Private/Public key</item>
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
<string-array name="AcceptAllServerCertificates_options">
|
||||
|
@@ -17,8 +17,8 @@
|
||||
<string name="app_name_nonet">Keepass2Android Xətdən Kənar</string>
|
||||
<string name="short_app_name_nonet">KP2A Xətdən Kənar</string>
|
||||
<string name="app_timeout">Tətbiq istifadə vaxtı</string>
|
||||
<string name="kill_app_label">Tətbiqi bağla</string>
|
||||
<string name="show_kill_app">Bağla düyməsi</string>
|
||||
<string name="kill_app_label">Tətbiqi bağla</string>
|
||||
<string name="application">Tətbiq</string>
|
||||
<string name="application_settings">Tətbiq tənzimləmələri</string>
|
||||
<string name="ShowGroupnameInSearchResult_title">Qrup adını axtarış nəticələrində göstər</string>
|
||||
@@ -74,7 +74,7 @@
|
||||
<string name="DbQuicklockedChannel_name">Cəld Kilid Açma</string>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>Şifrə</item>
|
||||
<item>K2A Private/Public key</item>
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
<string name="disable_secure_screen_check">Bu mesajı ləğv et</string>
|
||||
|
@@ -22,8 +22,8 @@
|
||||
<string name="short_app_name_nonet">KP2A Offline</string>
|
||||
<string name="app_timeout">Час чакання праграмы</string>
|
||||
<string name="app_timeout_summary">Час да блакавання базы даных пры бяздзейнасці.</string>
|
||||
<string name="kill_app_label">Прымусовае спыненне</string>
|
||||
<string name="show_kill_app">Кнопка закрыцця</string>
|
||||
<string name="kill_app_label">Прымусовае спыненне</string>
|
||||
<string name="show_kill_app_summary">Паказваць на экране пароля кнопку закрыцця праграмы</string>
|
||||
<string name="application">Праграма</string>
|
||||
<string name="application_settings">Налады праграмы</string>
|
||||
@@ -122,6 +122,7 @@
|
||||
<string name="entry_user_name">Імя карыстальніка</string>
|
||||
<string name="entry_extra_strings">Дадатковыя палі</string>
|
||||
<string name="entry_binaries">Далучаныя файлы</string>
|
||||
<string name="entry_history">Папярэднія версіі</string>
|
||||
<string name="error_can_not_handle_uri">Keepass2Android не можа апрацаваць гэты URI-адрас.</string>
|
||||
<string name="error_could_not_create_group">Не атрымалася стварыць групу.</string>
|
||||
<string name="error_could_not_create_parent">Не атрымалася стварыць бацькоўскі каталог.</string>
|
||||
@@ -151,6 +152,7 @@
|
||||
<string name="hint_keyfile">Файл ключа</string>
|
||||
<string name="hint_length">даўжыня</string>
|
||||
<string name="hint_pass">пароль</string>
|
||||
<string name="hint_keyfile_path">Шлях да прыватнага ключа SSH</string>
|
||||
<string name="hint_login_pass">Пароль</string>
|
||||
<string name="hint_title">назва</string>
|
||||
<string name="hint_url">URL</string>
|
||||
@@ -300,6 +302,8 @@
|
||||
<string name="NoDalVerification_summary">Адключае праверку, калі дамен адпавядае праграме</string>
|
||||
<string name="InlineSuggestions_title">Інтэграцыя з клавіятурай</string>
|
||||
<string name="InlineSuggestions_summary">Паказваць прапановы для аўтазапаўнення як убудаваныя параметры клавіятуры (калі падтрымліваецца метадам уводу)</string>
|
||||
<string name="LogAutofillView_title">Прагляд журнала аўтазапаўнення</string>
|
||||
<string name="LogAutofillView_summary">Запісваць звесткі пра рэжым аўтазапаўненння ў адладачны журнал (калі ўключана вядзенне журнала адладжвання). Гэтыя звесткі можна адправіць распрацоўшчыку, калі аўтазапаўненне не будзе працаваць належным чынам.</string>
|
||||
<string name="requires_android11">Патрэбны Android 11 ці навейшая версія</string>
|
||||
<string name="kp2a_findUrl">Знайсці пароль</string>
|
||||
<string name="excludeExpiredEntries">Выключыць пратэрмінаваныя запісы</string>
|
||||
@@ -414,6 +418,7 @@
|
||||
<string name="ShowUnlockedNotification_summary">Паказваць значок на панэлі аравяшчэнняў, калі база даных разблакаваная.</string>
|
||||
<string name="IconVisibilityInfo_Android8_text">У Android 8 апавяшчэнні працуюць па-іншаму. Калі вы хочаце схаваць значок на панэлі апавяшчэнняў, трэба наладзіць яго ў сістэмных наладах. Абярыце для катэгорыі апавяшчэння важнасць \"Мінімум\".</string>
|
||||
<string name="IconVisibilityInfo_Android8_btnSettings">Адкрыць налады</string>
|
||||
<string name="PostNotificationsPermissionInfo_text">Keepass2Android можа паказваць сістэмныя апавяшчэнні, калі ваша база даных не заблакаваная. Каб гэтая функцыя працавала, дайце дазвол.</string>
|
||||
<string name="DontCare">Мне няма розніцы</string>
|
||||
<string name="DocumentAccessRevoked">Гэты файл цяпер неадаступны для Keepass2Android. Ён або быў выдалены, або доступ да яго быў адкліканы. Паспрабуйце адкрыць файл нанова.</string>
|
||||
<string name="PreloadDatabaseEnabled_title">Папярэдняя загрузка файла базы даных</string>
|
||||
@@ -498,9 +503,18 @@
|
||||
<string name="hint_sftp_host">хост (напрыклад: 192.168.0.1)</string>
|
||||
<string name="hint_sftp_port">порт</string>
|
||||
<string name="initial_directory">Пачатковы каталог (неабавязкова):</string>
|
||||
<string name="connect_timeout">Час чакання злучэння ў секундах (неабавязкова):\"</string>
|
||||
<string name="enter_sftp_login_title">Увядзіце даныя для ўваходу на сервер SFTP:</string>
|
||||
<string name="sftp_auth_mode">Рэжым аўтэнтыфікацыі</string>
|
||||
<string name="send_public_key">Адправіць публічны ключ…</string>
|
||||
<string name="select_private_keyfile">Абраць прыватны ключ...</string>
|
||||
<string name="hint_sftp_key_name">Новая назва ключа</string>
|
||||
<string name="hint_sftp_key_content">Новае змесціва ключа</string>
|
||||
<string name="private_key_saved">Прыватны ключ захаваны</string>
|
||||
<string name="private_key_save_failed">НЕ ЎДАЛОСЯ захаваць прыватны ключ: %1$s</string>
|
||||
<string name="private_key_info">Каб захаваць, увядзіце назву ключа і змесціва</string>
|
||||
<string name="private_key_delete">Выдаліць прыватны ключ: %1$s</string>
|
||||
<string name="private_key_delete_failed">НЕ ЎДАЛОСЯ выдаліць прыватны ключ: %1$s</string>
|
||||
<string name="enter_ftp_login_title">Увядзіце даныя для ўваходу на сервер FTP:</string>
|
||||
<string name="select_storage_type">Абярыце тып сховішча:</string>
|
||||
<string name="filestoragename_file">Лакальны файл</string>
|
||||
@@ -633,25 +647,6 @@
|
||||
<string name="Continue">Працягнуць</string>
|
||||
<string name="NoFilenameWarning">Не падобна, каб URI-адрас сканчаўся назвай файла. Вы ўвялі правільны адрас?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Хібны складаны ключ! Паспрабуйце яшчэ раз.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">Хібны складаны ключ! Каб разблакаваць базу даных, паспрабуйце выканаць наступныя дзеянні:\n
|
||||
|
||||
• Пераканайцеся, што ўводзіце правільны пароль. Націсніце значок вока, каб праверыць пароль.\n
|
||||
• Пераканайцеся, што абралі правільны тып пароля. Пераканайцеся, што абралі гэты тып падчас стварэння базы даных.\n
|
||||
• Пераканайцеся, што абралі правільны файл базы даных.
|
||||
</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Падказка: калі вы думаеце, што ваша база даных пашкоджаная або забыліся на галоўны пароль пасля яго змены, вы можаце паспрабаваць адкрыць апошнюю паспяхова адкрытую версію файла, націснуўшы \"%1$s\" і абраўшы лакальную рэзервовую копію.</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Падказка: Keepass2Android захоўвае ва ўнутраным сховішчы апошнюю паспяхова адкрытую версію файла. Яе можна адкрыць, націснуўшы \"%1$s\" і абраўшы лакальную рэзервовую копію.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp"> Файл пашкоджаны. \n
|
||||
Тут пададзена некалькі падказак, якія могуць дапамагчы вырашыць гэтую праблему:\n
|
||||
|
||||
• Калі вы скапіявалі файл праз USB (Рэжым MTP), паспрабуйце яшчэ раз з дапамогай інструмента кшталту MyPhoneExplorer. MTP можа абразаць файлы.\n
|
||||
• Калі вы не можаце адкрыць файл нават з камп\'ютара, то хутчэй за ўсё файл пашкоджаны. Паспрабуйце адкрыць рэзервовую копію. Калі ёсць нагода вінаваціць у гэтым Keepass2Android, звяжыцеся з намі.\n
|
||||
• Калі файл адкрываецца з камп\'ютара, звяжыцеся з намі. Вы можаце захаваць файл з рознымі параметрамі і паспрабаваць адкрыць яго ў Keepass2Android.
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Адкрыць іншую базу даных…</string>
|
||||
<string name="select_database">Абраць базу даных</string>
|
||||
<string name="configure_child_dbs">Наладжванне даччыных базаў даных…</string>
|
||||
@@ -731,274 +726,7 @@
|
||||
<item>Пераключэнне на BiometricPrompt API для паляпшэння ўзаемадзеяння з дапамогай разблакавання адбіткам пальца і тварам, напрыклад на Pixel 4.</item>
|
||||
<item>Выпраўленні хібаў</item>
|
||||
</string-array>
|
||||
<string name="ChangeLog_1_07b"> Version 1.07b\n
|
||||
* Improve Argon2 performance by using native implementation (Thanks to Chih-Hsuan Yen!)\n
|
||||
* Allow to disable fingerprint by clicking on the fingerprint icon (avoids issue with underscreen fingerprint readers, thanks to marcoDallas!)\n
|
||||
* Restore cursor position when toggling visibility of password (thanks to DDoSolitary!)\n
|
||||
* Improvements to pCloud implementation (thanks to gilbsgilbs again!)\n
|
||||
* Add AutoFill support for several more browsers \n
|
||||
* New implementation for OneDrive: Includes support for OneDrive for Business, shared files, selectable access scopes, multiple accounts and fixes issues with offline access\n
|
||||
* Bug fixes
|
||||
</string>
|
||||
<string name="ChangeLog_1_07"> Version 1.07\n
|
||||
* Fixes for crashes on Samsung\'s Android 9\n
|
||||
* Allow to open more than one database, compatible with KeeAutoExec\n
|
||||
* SFTP: Allow public key authentication, check if host key changed\n
|
||||
* Introduce pCloud support - thanks to gilbsgilbs!\n
|
||||
* Make Nextcloud support explicit\n
|
||||
* Improve saving and updating of entry attachments\n
|
||||
* More options for adapting behavior to personal preferences\n
|
||||
* SSL: Trust user certificates\n
|
||||
* Improve autofill (now works with Firefox, allow to reduce popups)\n
|
||||
* bug fixes\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_06"> Version 1.06\n
|
||||
* Switch to ykDroid instead of YubiChallenge as app for Yubikey Challenge-Response.\n
|
||||
* Implement support for KeepassXC-style Challenge-Response. Note: Database format must be KDBX4!\n
|
||||
* Refuse to load trashed files from Google Drive\n
|
||||
* Switch TLS implementation for FTPS, add workaround to JSch bug with servers supporting gssapi-with-mic\n
|
||||
* bug fixes\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_05"> Version 1.05\n
|
||||
* Use notification channels for Android 8, allowing configuration through system settings\n
|
||||
* Show entry icon in notication\n
|
||||
* Use Adaptive Icons for Android 8, use round launcher icon for Android 7\n
|
||||
* Allow to activate search upon unlock (see settings)\n
|
||||
* Changed the way files are written through Storage Access Framework, fixes issues with updating files on Google Drive opened through System file picker\n
|
||||
* Added some info texts to avoid some common misunderstandings\n
|
||||
* Create local backups of successfully opened databases to reduce risk of data loss\n
|
||||
* Updated JSch to support more recent SSH ciphers\n
|
||||
* Allow to edit connection settings, e.g. when WebDav password changed\n
|
||||
* Added support for Yubikey Neo\'s static password mode\n
|
||||
* Allow to disable Autofill suggestion\n
|
||||
* Fixed data leakage to logcat\n
|
||||
* bug fixes\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_04b"> Version 1.04b\n
|
||||
* Avoid crash when user tries to enable Autofill on Huawei devices.\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_04"> Version 1.04\n
|
||||
* Added Autofill service for Android 8.0 and later.\n
|
||||
* Upgraded libraries, build tools and Target SDK version.\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_03"> Version 1.03\n
|
||||
* Removed accessibility service for AutoFill as requested by Google. Please see password access settings to find a plugin replicating the previous functionality.\n
|
||||
* Added third party apps as storage option again\n
|
||||
* Integrated image viewer for viewing attached images without transferring them to other apps\n
|
||||
* Upgraded OkHttp to fix issues with some connections\n
|
||||
* Support for KeeTrayTOTP entries, now supporting Steam entries\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_02"> Version 1.02\n
|
||||
* Several security improvements. Thanks a lot for the security report by jean-baptiste.cayrou@thalesgroup.com and vincent.fargues@thalesgroup.com and for their collaboration!\n
|
||||
* Support for KeyboardSwapPlugin (see password access options): allows to switch input method automatically on non-rooted devices. Thanks to Mishaal Rahman from XDA-Developers to make this possible.\n
|
||||
* Fix for Accessibility Service with recent Chrome versions\n
|
||||
* Fix for unnecessary clearing of fingerprint data\n
|
||||
* Fix minor crashes\n
|
||||
* Updated Dropbox SDK to ensure future compatibility\n
|
||||
* Removed error reporting through Xamarin Insights\n
|
||||
* Updated build tools\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01g"> Version 1.01-g\n
|
||||
* Fix for crash when trying to work offline\n
|
||||
* Fix for incorrect encoding of FTP(S) credentials\n
|
||||
* Fix for crashes when using OneDrive and on older Android versions\n
|
||||
* Display times as local time in entry screen\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01d"> Version 1.01-d\n
|
||||
* Fix for OneDrive file listing\n
|
||||
* Allow to ignore certificate errors also when host name verification fails (not recommended for production use)\n
|
||||
* Fix for QuickUnlock sometimes failing despite correct unlock code\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8c"> Version 0.9.8c\n
|
||||
* Fix for SSL vulnerability in Microsoft Live SDK (used when accessing files via OneDrive)\n
|
||||
* Bug fix: Previous release contained two input methods (one crashing)\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01"> Version 1.01\n
|
||||
* added support for the new KDBX-4-format (compatible with Keepass 2.35) including Argon2 key derivation and ChaCha20 encryption.\n
|
||||
* Reimplemented WebDav file storage, now allows file browsing and supports modern encryption.\n
|
||||
* Reimpleented FTP file storage, now allows file browsing and supports encryption (FTPS).\n
|
||||
* Updated to OneDrive SDK (previously used Live SDK is no longer updated)\n
|
||||
* Updated to Dropbox SDK version 2 (previously used version 1 SDK is deprecated).\n
|
||||
* Added support for OwnCloud.\n
|
||||
* Prompt for storage permission before opening local files
|
||||
</string>
|
||||
<string name="ChangeLog_1_0_0e"> Version 1.0.0e\n
|
||||
* fix for Fingerprint Unlock on older Samsung devices with Android 6\n
|
||||
* add native support for x86 devices\n
|
||||
* allow to hide softkeyboard during fingerprint scan\n
|
||||
* build system update
|
||||
</string>
|
||||
<string name="ChangeLog_1_0_0"> Version 1.0.0\n
|
||||
* Fingerprint Unlock (requires Android 6.0+ or a Samsung device)\n
|
||||
* Added Auto-Fill service (requires Android 5.0+)\n
|
||||
* Added support for entry templates\n
|
||||
* Added \"work offline\" mode\n
|
||||
* Allow to copy entries\n
|
||||
* Auto-complete mode for field names\n
|
||||
* Allow to remove items from recent files list\n
|
||||
* Request permissions at runtime in Android 6.0\n
|
||||
* Bug fixes (in built-in keyboard, when selecting icons)\n
|
||||
* Included option to send error reports\n
|
||||
* Added help messages at several points\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9">Version 0.9.9\n
|
||||
* Complete UI redesign. Thanks a lot to Stefano Pignataro (http://www.spstudio.at) for his support!\n
|
||||
* Allow to add custom icons\n
|
||||
* Support for Multi Window mode on Samsung devices\n
|
||||
* Increased default number of encryption rounds for new databases\n
|
||||
* Check for duplicate keys of additional fields to avoid losing data\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9c"> Version 0.9.9c\n
|
||||
* Dark theme is back\n
|
||||
* You can install other icon packs (ancient Windows-style icons are available on Play store)\n
|
||||
* Added confirmation question when deleting elements without recycle bin\n
|
||||
* Bug fixes (wrong display of OTP secret encoding, wrong app icon in some places)\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8b">Version 0.9.8b\n
|
||||
* Bug fixes (Saving failed for some databases, exporting to local device not working, selecting some preference options crashed the app)\n</string>
|
||||
<string name="ChangeLog_0_9_8">Version 0.9.8\n
|
||||
* Support for Storage Access Framework (allows write to SD card and Google Drive in KP2A Offline)\n
|
||||
* Try to detect erroneous user input when entering WebDAV URLs (directory instead of file)\n
|
||||
* Changed password font\n
|
||||
* Allow to change Dropbox account\n
|
||||
* Fixed bug: Now remembering OTP password</string>
|
||||
<string name="ChangeLog_0_9_7b">Version 0.9.7b\n
|
||||
* updated translations\n
|
||||
* bug fixes: Password font was missing in 0.9.7, sort by name didn not sort groups\n</string>
|
||||
<string name="ChangeLog_0_9_7">Version 0.9.7\n
|
||||
* write support for Keepass 1 (kdb) databases (beta!)\n
|
||||
* better switching back to previous keyboard (also works on non-rooted devices)\n
|
||||
* support for KeeChallenge with variable length challenges\n
|
||||
* prevent taking screenshots from QuickUnlock and password screens\n
|
||||
* reverse sort order for Sort by Modification Date (now descending)\n
|
||||
* bug fixes: Notes view now updated correctly after changes, Password views now hiding password correctly on (hopefully) all devices, fixed issue that allowed to add an entry twice, fixed issue with showing Duplicate UUID warning even after fixing the database\n</string>
|
||||
<string name="ChangeLog_0_9_6">Version 0.9.6\n
|
||||
* allow to import key file and/or local database file to app internal directory (see settings)\n
|
||||
* allow different sorting options\n
|
||||
* improved preferences for automatic keyboard switching\n
|
||||
* updated app logo and notification design, design by Stefano Pignataro (http://www.spstudio.at)\n
|
||||
* password generator remembers last settings\n
|
||||
* set notification visibility for Android 5 lock screen\n
|
||||
* now clearing master password field when leaving the app without tapping OK\n
|
||||
* fixed issue with missing input languages in keyboard setting on some devices\n
|
||||
* fixed issue with automatic keyboard switching on rooted devices\n
|
||||
* added check for corrupt databases (duplicate UUIDs)\n
|
||||
* automatically reload database when change detected, solves security concern about revealing master password\n
|
||||
* improved polish small keyboard layout, fixed keyboard settings theme (thanks to Wiktor Ławski)\n</string>
|
||||
<string name="ChangeLog_0_9_5"><b>Version 0.9.5</b>\n
|
||||
* Fixed issues with file browsing (especially on Android 4.4)\n
|
||||
* Fixed issue with loading .kdb files (Keepass 1) on Nexus 5 with Android Lollipop\n
|
||||
* Added option to prevent taking screenshots/displaying app in recent apps list\n
|
||||
* Fixed issue with Google Drive file storage (regular edition)\n
|
||||
* Allow key files on deliberate storage types (regular edition)\n
|
||||
* Updated Dropbox SDK to include an official security patch (regular edition)\n
|
||||
* Updated build tools --> apk size increased :-(\n
|
||||
I have promised some more changes. They will come with the next release - sorry. I wanted to publish these hot fixes as soon as possible.</string>
|
||||
<string name="ChangeLog_0_9_4"><b>Version 0.9.4</b>\n
|
||||
* added plug-in support: See settings for how to get plug-ins!\n
|
||||
* published QR plug-in (scan passwords, display passwords as QR code, transfer entries to other KP2A devices)\n
|
||||
* published InputStick plugin (transfer credentials to your PC via bluetooth - requires InputStick USB stick)\n
|
||||
* Third party apps can now simply implement querying KP2A for credentials. Are you a developer? Please add this to your app if suitable!\n
|
||||
* added TOTP support (compatible with KeeOTP and TrayTotp)\n
|
||||
* app should no longer be killed by Android when database is open\n
|
||||
* database is no longer locked when leaving the app with the back button (see settings)\n
|
||||
* display group names in search results view (*)\n
|
||||
* added context menu in search results view including \"Navigate to parent\" option (*)\n
|
||||
* added option to display group name in entry view (*)\n
|
||||
* (*) thanks to Matthieu for implementing these features!\n
|
||||
* support KeeChallenge (with Yubikey NEO). Thanks to Ben Rush for implementing the connector!\n
|
||||
* improved user interface\n
|
||||
* fixed a bug in Google Drive interface\n
|
||||
* added option to disable the \"donate\" option\n
|
||||
* QuickUnlock icon now hidden on Android 4.2+ devices by default\n </string>
|
||||
<string name="ChangeLog_0_9_3_r5"><b>Version 0.9.3 r5</b>\n
|
||||
* Incorporated fixes from Xamarin: Keepass2Android now compatible with ART on Android 4.4.2. Finally!\n
|
||||
* Bug fixes: bugs in synchronization (refresh display, correct check for changes on http), bugs on Android 2.x devices, bugs in Google Drive and OneDrive storage implementations, clear clipboard on close database, bug opening attachments, display problems with keyboard\n</string>
|
||||
<string name="ChangeLog_0_9_3"><b>Version 0.9.3</b>\n
|
||||
* New keyboard with many improvements. See settings to customize.\n
|
||||
* Read-only support for kdb (Keepass 1 files). Experimental!\n
|
||||
* Added SFTP support\n
|
||||
* Added workaround for bug in ART (Android 4.4.2)\n
|
||||
* Bug fixes\n</string>
|
||||
<string name="ChangeLog_0_9_2"><b>Version 0.9.2</b>\n
|
||||
* Added OTP support (compatible with OtpKeyProv plugin)\n
|
||||
* Integrated NFC support for OTPs from YubiKey NEO \n
|
||||
* Several UI improvements\n
|
||||
* Integrated Keepass 2.24 library\n
|
||||
* Added option to kill the app process (see settings)\n
|
||||
* Improved SSL certificate validation\n
|
||||
* Bug fixes\n</string>
|
||||
<string name="ChangeLog_0_9_1"><b>Version 0.9.1</b>\n
|
||||
* Integrated SkyDrive support (Keepass2Android regular edition only)\n
|
||||
* Fixed problems with Google Drive integration\n
|
||||
* Added NTLM support</string>
|
||||
<string name="ChangeLog_0_9"><b>Version 0.9</b>\n
|
||||
* Integrated Dropbox and Google Drive support (read/write databases; Keepass2Android regular edition only)\n
|
||||
* Integrated custom file browser (based on android-filechooser by HBA)\n
|
||||
* Improved user interface for creating new databases\n
|
||||
* Included custom font DejaVu Sans Mono for displaying passwords\n
|
||||
* Bug fixes</string>
|
||||
<string name="ChangeLog_0_8_6"><b>Version 0.8.6</b>\n
|
||||
* Support for Twofish cipher\n
|
||||
* Allow editing of groups\n
|
||||
* Allow moving of entries and groups\n
|
||||
* QuickUnlock icon can be made transparent (see settings)\n
|
||||
* Bug fixes</string>
|
||||
<string name="ChangeLog_0_8_5"><b>Version 0.8.6</b>\n
|
||||
* Support for Twofish cipher\n
|
||||
* Allow editing of groups\n
|
||||
* Allow moving of entries and groups\n
|
||||
* QuickUnlock icon can be made transparent (see settings)\n
|
||||
* Bug fixes</string>
|
||||
<string name="ChangeLog_0_8_4"><b>Version 0.8.4</b>\n
|
||||
* External database changes are detected and merged when saving\n
|
||||
* Improved loading performance\n
|
||||
* Improved search toolbar with suggestions\n
|
||||
* New App logo!\n
|
||||
* Added support for .kdbp format for faster loading/saving\n
|
||||
* Improved editing of extra strings and hidden display when protected\n
|
||||
Thanks to Alex Vallat for his code contributions!\n
|
||||
Thanks to Niki Hüttner (www.close-cut.de) for the new logo!\n</string>
|
||||
<string name="ChangeLog_0_8_3"><b>Version 0.8.3</b>\n
|
||||
* Username/TAN index displayed in entry list (see settings)\n
|
||||
* Entries can be created if search from browser doesn\'t return results\n
|
||||
* KP2A keyboard provides possibility to search for credentials for current app\n
|
||||
* App automatically closes after selecting an entry for use in keyboard\n
|
||||
* Keyboard selection dialog automatically opens after search for URL (see settings)\n
|
||||
* Placeholders in entry fields are replaced before copying (most placeholders supported)\n
|
||||
* minor bug fixes
|
||||
</string>
|
||||
<string name="ChangeLog_0_8_2"><b>Version 0.8.2</b>\n
|
||||
* Support for Digest Authentication in WebDAV\n
|
||||
* Bugfixes (OI File manager, Open URL)</string>
|
||||
<string name="ChangeLog_0_8_1"><b>Version 0.8.1</b>\n
|
||||
* KP2A Offline and \"Online\" can be installed both again\n
|
||||
* Added new translations (thanks to all contributors!)</string>
|
||||
<string name="ChangeLog_0_8"><b>Version 0.8</b>\n
|
||||
* Improved user interface especially for Android 4.x devices\n
|
||||
* Allow using deliberate file managers for selecting existing files\n
|
||||
* Added safer way for opening attachments (through cache directory)\n
|
||||
* fixed bugs in Edit activity\n
|
||||
* probably introduced new bugs :-)</string>
|
||||
<string name="ChangeLog_keptDonate">Дадатковыя спосабы ахвяравання</string>
|
||||
<string name="ChangeLog_0_7"><b>Version 0.7</b>\n
|
||||
* Increased loading speed: key transformations now 10x faster!\n
|
||||
* Added Keepass2Android soft-keyboard: Switch to this keyboard for entering credentials. Shields you from clipboard-based password sniffers (disable old clipboard notifications in the options)\n
|
||||
* Added option to donate a beer or something else (see menu)</string>
|
||||
<string name="ChangeLog"><b>Version 0.6.2</b>\n
|
||||
* Google Drive/Dropbox/... integration: Use the official Google Drive or Dropbox App and open any .kdbx-file. This will now bring up KP2A.\n
|
||||
* Improved Search Dialog \n
|
||||
* Improved search results for Share URL with subdomains\n
|
||||
* Added options to give feedback, and rate and translate the app in the menu\n
|
||||
\n
|
||||
<b>Version 0.6.1</b>\n
|
||||
* Detect when database changes in the background (i.e. due to activity of a sync app)\n
|
||||
* Improved searching for URLs from the browser\n
|
||||
* Confirm dialog when discarding changes\n
|
||||
\n
|
||||
<b>Version 0.6</b>\n
|
||||
Initial public release
|
||||
</string>
|
||||
<string-array name="clipboard_timeout_options">
|
||||
<item>30 секунд</item>
|
||||
<item>1 хвіліна</item>
|
||||
@@ -1047,7 +775,7 @@ Initial public release
|
||||
</string-array>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>Пароль</item>
|
||||
<item>K2A Private/Public key</item>
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
<string-array name="AcceptAllServerCertificates_options">
|
||||
|
@@ -461,7 +461,7 @@
|
||||
</string-array>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>Парола</item>
|
||||
<item>K2A Private/Public key</item>
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
@@ -22,8 +22,8 @@
|
||||
<string name="short_app_name_nonet">KP2A fora de línia</string>
|
||||
<string name="app_timeout">Temps límit de resposta de l\'aplicació</string>
|
||||
<string name="app_timeout_summary">Temps abans de bloquejar la base de dades quan l\'aplicació està inactiva.</string>
|
||||
<string name="kill_app_label">Matar el procés de l\'aplicació</string>
|
||||
<string name="show_kill_app">Botó de tancament</string>
|
||||
<string name="kill_app_label">Matar el procés de l\'aplicació</string>
|
||||
<string name="show_kill_app_summary">Mostra un botó a la pantalla de contrasenya per matar el procés de l\'aplicació (per a usuaris paranoics)</string>
|
||||
<string name="application">Aplicació</string>
|
||||
<string name="application_settings">Configuració de l\'aplicació</string>
|
||||
@@ -599,22 +599,6 @@
|
||||
<string name="Continue">Continuar</string>
|
||||
<string name="NoFilenameWarning">L\'URI que heu introduït no sembla un nom de fitxer. Esteu segurs que és un fitxer vàlid?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Token invàlid! Intenta-ho de nou.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">Token invàlid! Si us plau, proveu els passos següents per obrir la base de dades: \n
|
||||
|
||||
• Assegureu-vos que ha introduït la contrasenya correcta. Utilitzar la icona d\'ull per mostrar la contrasenya introduïda.\n
|
||||
• Assegureu-vos que ha seleccionat el tipus de contrasenya correcta. Assegureu-vos que correspongui el tipus utilitzada en la creació de la base de dades.\n
|
||||
• Assegureu-vos que ha seleccionat l\'arxiu de base de dades correcte.</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Suggeriment: si pensa que el seu arxiu de base de dades podria estar corrupte o no recordes la clau mestra després de modificar-lo, pot provar amb l\'última versió d\'arxiu oberta satisfactòriament fent clic \"%1$s\" i seleccionant la còpia de seguretat local.</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Suggeriment: Keepass2Android ha emmagatzemat l\'última versió d\'arxiu oberta satisfactòriament a la memòria interna. Podeu obrir-lo fent clic \"%1$s\" i seleccionant la còpia de seguretat local.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp">Arxiu està corrupte. \n
|
||||
aquí hi ha alguns consells que poden ajudar a diagnosticar el problema: \n
|
||||
|
||||
• si vostè va copiar l\'arxiu mitjançant USB (MTP Mode), intenteu-ho novament amb eines com MyPhoneExplorer. MTP trunca arxius en certs casos. \n
|
||||
• si no es pot obrir el fitxer des del mateix emplaçament en el seu PC, és molt probable que l\'arxiu estigui corrupte. Si us plau utilitzi una còpia de seguretat de la base de dades. Si vostè creu que Keepass2Android ha malmès el fitxer, si us plau contacte amb suport. \n
|
||||
• si encara pots obrir l\'arxiu en el seu PC, contacteu amb suport. Podria intentar guardar-lo amb diferents configuracions (p. ex. descomprimit) en el PC i provar a obrir-lo de nou en Keepass2Android. </string>
|
||||
<string name="open_other_db">Obrir una altra base de dades…</string>
|
||||
<string name="select_database">Seleccioneu la base de dades</string>
|
||||
<string name="configure_child_dbs">Configura bases de dades fills…</string>
|
||||
@@ -655,250 +639,7 @@
|
||||
<item>Correcció d\'errors</item>
|
||||
<item>Correcció d\'errors</item>
|
||||
</string-array>
|
||||
<string name="ChangeLog_1_07b">Versió 1.07b \n
|
||||
* Millora el rendiment Argon2 mitjançant la implementació nativa (Gràcies al Chih-Hsuan Yen!) \n
|
||||
* Permet desactivar l’empremta digital fent clic a la icona d’empremtes dactilars (evita la incidència en lectors d’empremtes sota la pantalla, gràcies a marcoDallas!) \n
|
||||
* Restaura la posició del cursor quan commuteu la visibilitat de la contrasenya (gràcies a DDoSolitary!) \n
|
||||
* Millores en la implementació de pCloud (gràcies a gilbsgilbs de nou!) \n
|
||||
* Afegit suport per omplir automàticament per diversos navegadors \n
|
||||
* Nova implementació per a OneDrive: inclou suport per a OneDrive per a empreses, fitxers compartits, àmbits d\'accés seleccionables, diversos comptes i soluciona problemes en l\'accés fora de línia \n
|
||||
* Reparació d\'errors </string>
|
||||
<string name="ChangeLog_1_07"> Versió 1.07-pre2\n
|
||||
* Arreglaments de fallades a Android 9 de Samsung\n
|
||||
* Permet obrir més d\'una base de dades, compatible amb KeeAutoExec\n
|
||||
* SFTP: permet autenticació de clau pública, comprova si la clau del servidor ha canviat\n
|
||||
* Suport a pCloud - gràcies a gilbsgilbs!\n
|
||||
* Suport a Nextcloud explícit\n
|
||||
* Millora la guarda i actualització d\'adjunts a les entrades\n
|
||||
* Més opcions d\'adaptació del comportament a les preferències personals\n
|
||||
* SSL: confiar en certificat de l\'usuari\n
|
||||
* Millorar autoemplenat (ara funciona amb Firefox, permet disminuir missatges emergents)\n
|
||||
* Reparació d\'errors\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_06">Versió 1.06\n
|
||||
* Canvieu a ykDroid en comptes de YubiChallenge com a aplicació de Desafiament-Resposta de Yubikey.\n
|
||||
* Implementat suport per a KeepassXC Desafiament-Resposta. Nota: El format de la base de dades ha de ser KDBX4!\n
|
||||
* Es nega a carregar fitxers esborrats de Google Drive\n
|
||||
* Canvieu la implementació de TLS per FTPS, afegiu la solució a l\'error JSch amb servidors que suportin gssapi-amb-mic\n
|
||||
* correccions d\'errors\n </string>
|
||||
<string name="ChangeLog_1_05">Versió 1.05\n
|
||||
* Utilitzeu canals de notificació per a Android 8, que permeten la configuració a través de la configuració del sistema\n
|
||||
* Mostra la icona d\'entrada a la notificació\n
|
||||
* Utilitzeu icones adaptables per a Android 8, utilitzeu la icona de llançador rodó per a Android 7\n
|
||||
* Permet activar la cerca desbloquejada (veure configuració)\n
|
||||
* S\'ha canviat la manera en què els fitxers s\'escriuen a través d\'Access Storage Framework, es solucionen problemes amb l\'actualització de fitxers a Google Drive oberts a través del selector de fitxers del sistema\n
|
||||
* S\'han afegit alguns textos d\'informació per evitar alguns malentesos comuns\n
|
||||
* Crea còpies de seguretat locals de bases de dades obertes amb èxit per reduir el risc de pèrdua de dades\n
|
||||
* Actualitzat JSch per donar suport als xifrats SSH més recents\n
|
||||
* Permet editar la configuració de la connexió, p. Ex. quan la contrasenya del WebDav ha canviat\n
|
||||
* S\'ha afegit suport per al mode de contrasenya estàtica de Yubikey Neo\n
|
||||
* Permet desactivar el suggeriment d\'emplenament automàtic\n
|
||||
* S\'ha solucionat la fuga de dades al logcat\n
|
||||
* correccions d\'errors\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_04b">Versió 1.04b\n
|
||||
* Evita errada quan l\'usuari intenta activar l\'emplenament automàtic als dispositius Huawei.\n </string>
|
||||
<string name="ChangeLog_1_04"> Versió 1.04\n
|
||||
* Afegit servei d\'emplenament automàtic per Android 8.0 i posteriors.\n
|
||||
* Actualitzades les biblioteques, utilitats de compilació i versió de SDK.\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_03">Versió 1.03\n
|
||||
* Eliminat servei d\'accessibilitat d\'emplenament automàtic a petició de Google. Si us plau, vegeu la configuració d\'accés de contrasenya per trobar un connector que repliqui l\'anterior funcionalitat. \n
|
||||
* Afegides de nou apps de tercers com opció emmagatzematge\n
|
||||
* Visualitzador d\'imatges integrat per veure imatges adjuntes sense transferir-les a altres apps\n
|
||||
* Actualitzat OkHttp que soluciona problemes amb algunes connexions\n
|
||||
* Suport per a entrades de KeeTrayTOTP, ara suporta entrades Steam\n </string>
|
||||
<string name="ChangeLog_1_02">Versió 1.02\n
|
||||
* Diverses millores de seguretat. Moltes gràcies per a l\'informe de seguretat de jean-baptiste.cayrou@thalesgroup.com i vincent.fargues@thalesgroup.com i per la seva col·laboració! \n
|
||||
* Suport per al connector KeyboardSwap (mireu les opcions d\'accés de contrasenya): permet canviar automàticament el mètode d\'entrada en dispositius no \"rotejats\". Gràcies a Mishaal Rahman de XDA-Developers per fer això possible. \n
|
||||
* Arreglat servei d\'accessibilitat en versions recents de Chrome\n
|
||||
* Arreglat neteja innecessària de les dades d\'empremta digital\n
|
||||
* Arreglat fallades menors\n
|
||||
* Actualitzat Dropbox SDK per assegurar la compatibilitat futura\n
|
||||
* Eliminat la informació d\'errors a través de Xamarin Insights\n
|
||||
* Actualitzada les eines de compilació\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01g">Versió 1.01-g\n
|
||||
* Arreglat incident quan s\'intenta treballar fora de línea\n
|
||||
* Arreglat codificació incorrecta de credencials d\'FTP(S)\n
|
||||
* Arreglat incident quan s\'utilitza OneDrive en una versió antiga d\'Android\n
|
||||
* Mostrar hora local en pantalla d\'entrada\n </string>
|
||||
<string name="ChangeLog_1_01d"> Versió 1.01-d\n
|
||||
* Arreglat fallo en llistat a OneDrive\n
|
||||
* Permetre ignorar errors de certificat també quan la verificació del nom del domini falla (no recomanat per a ús en producció)\n
|
||||
* Arreglat el desblocatge ràpid que fallava malgrat el codi era correcte\n
|
||||
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8c"> Versió 0.9.8c\n
|
||||
* Arreglat vulnerabilitat SSL en el Microsoft Live SDK (utilitzat en accedir a arxius mitjançant OneDrive) \n
|
||||
* Arreglat error: versió anterior contenia dos mètodes d\'entrada (un petaba) \n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01">Versió 1.01\n
|
||||
* afegit suport per al nou format KDBX-4 (compatible amb Keepass 2.35) incloent derivació clau Argó 2 i encriptació ChaCha20.\n
|
||||
* Re implementat emmagatzematge d\'arxiu WebDav, ara permet navegació d\'arxiu i dóna suport a encriptació moderna.\n
|
||||
* Re implementat emmagatzematge d\'arxiu FTP, ara permet navegació d\'arxiu i dóna suport a encriptació (FTPS).\n
|
||||
* Actualitzat a SDK OneDrive (l\'utilitzat prèviament Live SDK ja no es actualitzat)\n
|
||||
* Actualitzat a SDK Dropbox SDK versió 2 (la versió 1 prèviament utilitzada del SDK es obsoleta).\n
|
||||
* Afegit suport per a OwnCloud.\n
|
||||
* Sol·licitud de permís d\'emmagatzematge abans d\'obrir fitxers locals
|
||||
</string>
|
||||
<string name="ChangeLog_1_0_0e">Versió 1.0.0e\n
|
||||
* arreglat desblocatge amb empremta en dispositus antics Samsung amb Android 6\n
|
||||
* afegit suport natiu per a dispostius x86 devices\n
|
||||
* permeten amagar teclat durant l\'escan de l\'empremta digital\n
|
||||
* actualització de sistema </string>
|
||||
<string name="ChangeLog_1_0_0"> Versió 1.0.0\n
|
||||
* Fingerprint, desbloqueig per empremta dactilar (necessita Android 6.0+ o un dispositiu Samsung)\n
|
||||
* Afegit servei de completar automàticament (necessita Android 5.0+)\n
|
||||
* Afegit suport a entrada mitjançant plantilles\n
|
||||
* Afegit mode de funcionament offline\n
|
||||
* Opció de còpia de registres\n
|
||||
* Mode d\'auto-completar per a noms de camps\n
|
||||
* Opció de esborrar elements de la llista de fitxers recents\n
|
||||
* Petició d\'autorització en el runtime d\'Android 6.0\n
|
||||
* Errors corregits (teclat intern, selecció d\'icones)\n
|
||||
* Inclosa opció per enviar informe d\'errors\n
|
||||
* Afegits missatges d\'ajuda en diferents punts\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9">Version 0.9.9\n
|
||||
* Nou diseny de la interfície d\'usuari. Moltes gràcies a Stefano Pignataro (http://www.spstudio.at) for his support!\n
|
||||
* Possibilitat d\'afegir icones pròpies\n
|
||||
* Suport per al mode multi pantalla per a dispositius Samsung\n
|
||||
* Ampliat el nombre de rondes d\'encriptació per defecte per a noves bases de dades \n
|
||||
* Comprovació de claus duplicades en cams addicionals per evitar pèrdues de dades\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9c"> Versió 0.9.9c\n
|
||||
* Ha tornat el tema fosc\n
|
||||
* Es poden instal·lar altres paquets d\'icona (icones d\'estil de Windows estan disponibles a la botiga)\n
|
||||
* Afegida la pregunta de confirmació quan s\'esborrin elements sense paperera de reciclatge\n
|
||||
* Errors arreglats (mostra incorrectament la codificació secreta de OTP, icona de la app incorrecte en alguns llocs) \n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8b">Version 0.9.8b\n
|
||||
* Errors corregits (Errors al guardar algunes bases de dades, mal funcionament de l\'exportació a dispositiu local, crash de l\'app al seleccionar algunes opcions de preferències)\n</string>
|
||||
<string name="ChangeLog_0_9_8">Version 0.9.8\n
|
||||
* Suport per a accés entorns d\'enmagatzematge (permet escriure a la tarjeta SD i a Google Drive amb el teclat KP2A Offline)\n
|
||||
* Prova per detectar una entrada errònia d\'usuari quan s\'introdueix WebDAV URLs (directori en lloc de fitxer)\n
|
||||
* Font de les contrasenyes canviada\n
|
||||
* Permet canviar el compte de Dropbox\n
|
||||
* Error corregit: Ara es recorda la contrasenya d\'OTP</string>
|
||||
<string name="ChangeLog_0_9_7b">Version 0.9.7b\n
|
||||
* Traduccions actualitzades\n
|
||||
* Errors corregits: Pèrdua de la font de les contrasenyes a la versió 0.9.7, ordenament per noms no funcionava a l\'ordenar grups\n</string>
|
||||
<string name="ChangeLog_0_9_7"> Versió 0.9.7\n
|
||||
* suport per escriure a bases de dades Keepass 1 (kdb) (beta!) \n
|
||||
* millor canviar a teclat anterior (també treballa en dispositius que no disposin d\'accés de superusuari - rootejats)\n
|
||||
* suport per a KeeChallenge amb challenges\n de longitud variable\n
|
||||
* evitar prendre captures de pantalla des de les pantalles de DesbloqueigRàpid i contrasenya\n
|
||||
* ordenació inversa per Ordena per data de modificació (ara descendent) \n
|
||||
* errors arreglats: vista de notes ara actualitzada correctament després de canvis, vistes de contrasenyes ara amaga contrasenya correctament en (esperançadament) tots els dispositius, arreglat problema que li permetia afegir una entrada doble , solucionat el problema que mostrava avís de duplicat UUID fins i tot després d\'arreglar la base de dades\n </string>
|
||||
<string name="ChangeLog_0_9_6">Version 0.9.6\n * allow to import key file and/or local database file to app internal directory (see settings)\n * allow different sorting options\n * improved preferences for automatic keyboard switching\n * updated application logo and notification design, design by Stefano Pignataro (http://www.spstudio.at)\n * password generator remembers last settings\n * set notification visibility for Android 5 lock screen\n * now clearing master password field when leaving the app without clicking OK\n * fixed issue with missing input languages in keyboard setting on some devices\n * fixed issue with automatic keyboard switching on rooted devices\n * added check for corrupt databases (duplicate UUIDs)\n * automatically reload database when change detected, solves security concern about revealing master password\n * improved polish small keyboard layout, fixed keyboard settings theme (thanks to Wiktor Ławski)\n </string>
|
||||
<string name="ChangeLog_0_9_5"><b>Versió 0.9.5</b> \n * Arreglat problemes amb arxiu de navegació (especialment en Android 4.4) \n * Solucionat el problema amb la càrrega d\'arxius .kdb (Keepass 1) amb el Nexus 5 amb Android Lollipop\n * afegit l\'opció per evitar prendre screenshots/mostrant app a la llista d\'aplicacions recents\n * Solucionat el problema amb Google Drive arxiu d\'emmagatzematge (edició regular) \n * Permeten arxius clau en emmagatzematge deliberada tipus (edició regular) \n * SDK de Dropbox actualitzat per incloure un pedaç de seguretat oficial (edició regular) \n * Actualitzades eines de construcció--> mida dels apk augmentada:-(\ n He promès alguns canvis més. Vindran amb el pròxim llançament- Ho sentim. Volia publicar aquests destrets calents tan aviat com sigui possible.</string>
|
||||
<string name="ChangeLog_0_9_4"><b>Version 0.9.4</b>\n
|
||||
* added plug-in support: See settings for how to get plug-ins!\n
|
||||
* published QR plug-in (scan passwords, display passwords as QR code, transfer entries to other KP2A devices)\n
|
||||
* published InputStick plugin (transfer credentials to your PC via bluetooth - requires InputStick USB stick)\n
|
||||
* Third party apps can now simply implement querying KP2A for credentials. Are you a developer? Please add this to your app if suitable!\n
|
||||
* added TOTP support (compatible with KeeOTP and TrayTotp)\n
|
||||
* app should no longer be killed by Android when database is open\n
|
||||
* database is no longer locked when leaving the app with the back button (see settings)\n
|
||||
* display group names in search results view (*)\n
|
||||
* added context menu in search results view including \"Navigate to parent\" option (*)\n
|
||||
* added option to display group name in entry view (*)\n
|
||||
* (*) thanks to Matthieu for implementing these features!\n
|
||||
* support KeeChallenge (with Yubikey NEO). Thanks to Ben Rush for implementing the connector!\n
|
||||
* improved user interface\n
|
||||
* fixed a bug in Google Drive interface\n
|
||||
* added option to disable the \"donate\" option\n
|
||||
* QuickUnlock icon now hidden on Android 4.2+ devices by default\n </string>
|
||||
<string name="ChangeLog_0_9_3_r5"><b>Version 0.9.3 r5</b>\n
|
||||
* Incorporated fixes from Xamarin: Keepass2Android now compatible with ART on Android 4.4.2. Finally!\n
|
||||
* Bug fixes: bugs in synchronization (refresh display, correct check for changes on http), bugs on Android 2.x devices, bugs in Google Drive and OneDrive storage implementations, clear clipboard on close database, bug opening attachments, display problems with keyboard\n</string>
|
||||
<string name="ChangeLog_0_9_3"><b>Version 0.9.3</b>\n
|
||||
* New keyboard with many improvements. See settings to customize.\n
|
||||
* Read-only support for kdb (Keepass 1 files). Experimental!\n
|
||||
* Added SFTP support\n
|
||||
* Added workaround for bug in ART (Android 4.4.2)\n
|
||||
* Bug fixes\n</string>
|
||||
<string name="ChangeLog_0_9_2"><b>Version 0.9.2</b>\n
|
||||
* Added OTP support (compatible with OtpKeyProv plugin)\n
|
||||
* Integrated NFC support for OTPs from YubiKey NEO \n
|
||||
* Several UI improvements\n
|
||||
* Integrated Keepass 2.24 library\n
|
||||
* Added option to kill the app process (see settings)\n
|
||||
* Improved SSL certificate validation\n
|
||||
* Bug fixes\n</string>
|
||||
<string name="ChangeLog_0_9_1"><b>Version 0.9.1</b>\n
|
||||
* Integrated SkyDrive support (Keepass2Android regular edition only)\n
|
||||
* Fixed problems with Google Drive integration\n
|
||||
* Added NTLM support</string>
|
||||
<string name="ChangeLog_0_9"><b>Version 0.9</b>\n
|
||||
* Integrated Dropbox and Google Drive support (read/write databases; Keepass2Android regular edition only)\n
|
||||
* Integrated custom file browser (based on android-filechooser by HBA)\n
|
||||
* Improved user interface for creating new databases\n
|
||||
* Included custom font DejaVu Sans Mono for displaying passwords\n
|
||||
* Bug fixes</string>
|
||||
<string name="ChangeLog_0_8_6"><b>Version 0.8.6</b>\n
|
||||
* Support for Twofish cipher\n
|
||||
* Allow editing of groups\n
|
||||
* Allow moving of entries and groups\n
|
||||
* QuickUnlock icon can be made transparent (see settings)\n
|
||||
* Bug fixes</string>
|
||||
<string name="ChangeLog_0_8_5"><b>Version 0.8.5</b>\n
|
||||
* Remote files are stored in the local application cache to allow offline usage (including editing and later synchronization). See settings. \n
|
||||
* Notification icon to visualize the lock-state of the database (see settings)\n
|
||||
* Improved determination of lock-state in some situations\n
|
||||
* Database files are loaded to memory while you are typing your password for increased loading speed (see settings)\n
|
||||
* Entries can be added to root group\n
|
||||
* Bug fixes (resolving reference fields, problems with keyboard on Italian an Chinese devices)</string>
|
||||
<string name="ChangeLog_0_8_4"><b>Version 0.8.4</b>\n
|
||||
* External database changes are detected and merged when saving\n
|
||||
* Improved loading performance\n
|
||||
* Improved search toolbar with suggestions\n
|
||||
* New App logo!\n
|
||||
* Added support for .kdbp format for faster loading/saving\n
|
||||
* Improved editing of extra strings and hidden display when protected\n
|
||||
Thanks to Alex Vallat for his code contributions!\n
|
||||
Thanks to Niki Hüttner (www.close-cut.de) for the new logo!\n</string>
|
||||
<string name="ChangeLog_0_8_3"><b>Version 0.8.3</b>\n
|
||||
* Username/TAN index displayed in entry list (see settings)\n
|
||||
* Entries can be created if search from browser doesn\'t return results\n
|
||||
* KP2A keyboard provides possibility to search for credentials for current app\n
|
||||
* App automatically closes after selecting an entry for use in keyboard\n
|
||||
* Keyboard selection dialog automatically opens after search for URL (see settings)\n
|
||||
* Placeholders in entry fields are replaced before copying (most placeholders supported)\n
|
||||
* minor bug fixes
|
||||
</string>
|
||||
<string name="ChangeLog_0_8_2"><b>Version 0.8.2</b>\n
|
||||
* Support for Digest Authentication in WebDAV\n
|
||||
* Bugfixes (OI File manager, Open URL)</string>
|
||||
<string name="ChangeLog_0_8_1"><b>Version 0.8.1</b>\n
|
||||
* KP2A Offline and \"Online\" can be installed both again\n
|
||||
* Added new translations (thanks to all contributors!)</string>
|
||||
<string name="ChangeLog_0_8"><b>Version 0.8</b>\n
|
||||
* Improved user interface especially for Android 4.x devices\n
|
||||
* Allow using deliberate file managers for selecting existing files\n
|
||||
* Added safer way for opening attachments (through cache directory)\n
|
||||
* fixed bugs in Edit activity\n
|
||||
* probably introduced new bugs :-)</string>
|
||||
<string name="ChangeLog_keptDonate">Estesa possibilitat de donar una cervesa o una altra cosa</string>
|
||||
<string name="ChangeLog_0_7"><b>Version 0.7</b>\n
|
||||
* Increased loading speed: key transformations now 10x faster!\n
|
||||
* Added Keepass2Android soft-keyboard: Switch to this keyboard for entering credentials. Shields you from clipboard-based password sniffers (disable old clipboard notifications in the options)\n
|
||||
* Added option to donate a beer or something else (see menu)</string>
|
||||
<string name="ChangeLog"><b>Version 0.6.2</b>\n
|
||||
* Integració amb Google Drive/Dropbox/... : Compatible amb l\'APP oficial Google Drive o Dropbox i permet obrir el fitxer .kdbx que necessitis. Suport el teclat KP2A.\n
|
||||
* Dialeg de cerca millorat \n
|
||||
* Resultats de cerca millorats per a poder compartir URLs amb subdominis\n
|
||||
* Opcions de feedback afegides per reportar problemes, i valoració i traducció de l\'aplicació al mateix menú\n
|
||||
\n
|
||||
<b>Version 0.6.1</b>\n
|
||||
* Detecta quan la base de dades canvia en segon pla (per exemple degut a l\'activitat de sincronització de l\'aplicació)\n
|
||||
* Cerca millorada per a URLs des de l\'explorador d\'internet\n
|
||||
* Dialeg de confirmació quan descartes canvis\n
|
||||
\n
|
||||
<b>Version 0.6</b>\n
|
||||
Revisió inicial per al públic
|
||||
</string>
|
||||
<string-array name="clipboard_timeout_options">
|
||||
<item>30 segons</item>
|
||||
<item>1 minut</item>
|
||||
@@ -947,7 +688,7 @@ Revisió inicial per al públic
|
||||
</string-array>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>Contrasenya</item>
|
||||
<item>K2A Private/Public key</item>
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
<string-array name="AcceptAllServerCertificates_options">
|
||||
|
@@ -22,8 +22,8 @@
|
||||
<string name="short_app_name_nonet">KP2A Offline</string>
|
||||
<string name="app_timeout">Vypršel časový limit aplikace</string>
|
||||
<string name="app_timeout_summary">Čas, po který, při neaktivitě aplikace, databáze zůstane odemčená.</string>
|
||||
<string name="kill_app_label">Ukončit proces aplikace</string>
|
||||
<string name="show_kill_app">Tlačítko Zavřít</string>
|
||||
<string name="kill_app_label">Ukončit proces aplikace</string>
|
||||
<string name="show_kill_app_summary">Zobrazit tlačítko pro ukončení aplikace na obrazovce s heslem (pro paranoidní uživatele)</string>
|
||||
<string name="application">Aplikace</string>
|
||||
<string name="application_settings">Nastavení aplikace</string>
|
||||
@@ -402,6 +402,14 @@
|
||||
<string name="ShowSeparateNotifications_summary">Zobrazit oddělená upozornění pro kopírování uživatelského jména a hesla do schránky a pro aktivování klávesnice.</string>
|
||||
<string name="AccServiceAutoFill_prefs">Služba automatického doplňování</string>
|
||||
<string name="AutoFill_prefs">Služba automatického vyplňování</string>
|
||||
<string name="AutoFillTotp_prefs_ShowNotification_summary">Při automatickém vyplňování položky pomocí TOTP zobrazit oznámení položky s tlačítkem Kopírovat TOTP.</string>
|
||||
<string name="AutoFillTotp_prefs_ShowNotification_title">Zobrazit oznámení položky</string>
|
||||
<string name="AutoFillTotp_prefs_title">Automatické vyplňování položek TOTP</string>
|
||||
<string name="AutoFillTotp_prefs_CopyTotpToClipboard_title">Zkopírovat TOTP do schránky</string>
|
||||
<string name="AutoFillTotp_prefs_CopyTotpToClipboard_summary">Při automatickém vyplňování položky pomocí TOTP zkopírujte TOTP do schránky</string>
|
||||
<string name="AutoFillTotp_prefs_ActivateKeyboard_summary">Při automatickém vyplňování položky pomocí TOTP aktivujte vestavěnou klávesnici. Klávesnice má tlačítko TOTP.</string>
|
||||
<string name="AutoFillTotp_prefs_ActivateKeyboard_title">Aktivace vestavěné klávesnice</string>
|
||||
<string name="TotpCopiedToClipboard">Zkopírováno TOTP do schránky</string>
|
||||
<string name="ShowKp2aKeyboardNotification_title">Notifikace klávesnice KP2A</string>
|
||||
<string name="ShowKp2aKeyboardNotification_summary">Zpřístupnit celý záznam pomocí klávesnice KP2A (doporučeno).</string>
|
||||
<string name="OpenKp2aKeyboardAutomatically_title">Přepnout klávesnici</string>
|
||||
@@ -541,7 +549,9 @@
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_gdriveKP2A">Google Drive (KP2A soubory)</string>
|
||||
<string name="filestoragehelp_gdriveKP2A">Nechcete-li dát aplikaci KeePass2Android přístup k celému vašemu Google Drive, použijte tuto možnost. Upozorňujeme, že nejprve musíte vytvořit soubor s databází položek, existující soubory nejsou viditelné pro aplikaci. Toto můžete udělat z obrazovky Vytvořit databázi, nebo exportem právě otevřené databáze, volbou této možnosti</string>
|
||||
<string name="filestoragename_pcloud">PCloud (složka KP2A)</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_pcloudall">PCloud (plný přístup)</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>
|
||||
@@ -587,13 +597,14 @@
|
||||
<string name="CouldntLoadChalAuxFile_Hint">Použijte zásuvný modul KeeChallenge v KeePass 2.x (PC) pro konfiguraci databáze k používání s odpověďmi na výzvy!</string>
|
||||
<string name="ErrorUpdatingChalAuxFile">Chyba při aktualizaci pomocného souboru OTP!</string>
|
||||
<string name="TrayTotp_SeedField_title">Název \"seed\" položky TOTP</string>
|
||||
<string name="TOTP">TOTP</string>
|
||||
<string name="TrayTotp_SeedField_summary">Pokud používáte Keepass 2 modul \"TrayTotp\" v ne-výchozím nastavení, zadejte název položky \"seed\" podle nastavení na PC.</string>
|
||||
<string name="TrayTotp_SettingsField_title">Nastavení jména TOTP položky</string>
|
||||
<string name="TrayTotp_SettingsField_summary">Zde zadejte název položky \"nastavení\" pro TrayTotp.</string>
|
||||
<string name="TrayTotp_prefs">TrayTotp</string>
|
||||
<string name="DebugLog_prefs_prefs">Logovací soubor pro ladění chyb</string>
|
||||
<string name="DebugLog_title">Použít protokolovací soubor</string>
|
||||
<string name="JSchDebug_title">Protokolování ladění SFTP</string>
|
||||
<string name="FtpDebug_title">Protokolování ladění FTP/SFTP</string>
|
||||
<string name="DebugLog_summary">Ulož výstup aplikace do lokálního souboru</string>
|
||||
<string name="DebugLog_send">Pošli soubor s ladícími informacemi...</string>
|
||||
<string name="loading">Nahrávám…</string>
|
||||
@@ -666,11 +677,11 @@
|
||||
|
||||
• Ujistěte se, že jste zadali správné heslo. Použitím ikonky s okem odkryjete vložené heslo.\n
|
||||
• Ujistěte se, že jste použili správný typ hesla. Ujistěte se, že tento typ odpovídá typu použitému při vytváření databáze.\n
|
||||
• Ujistěte se, že jste použili správný databázový soubor.</string>
|
||||
• Ujistěte se, že jste použili správný soubor databáze.</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Nápověda: Pokud si myslíte že by databáze mohla být porušena, nebo si nepamatujete hlavní klíč, můžete zkusit poslední úspěšně otevřenou verzi kliknutím \"%1$s\" a zvolením místní zálohy.</string>
|
||||
• Nápověda: Pokud si myslíte že by soubor databáze mohl být poškozený, nebo si nepamatujete hlavní klíč, můžete zkusit poslední úspěšně otevřenou verzi souboru kliknutím \"%1$s\" a zvolením místní zálohy.</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Nápověda: Keepass2Android uložil poslední úspěšně otevřenou verzi souboru v místní paměti. Můžete jí otevřít zmáčknutím \"%1$s\" a výběrem místní zálohy.
|
||||
• Nápověda: Keepass2Android uložil poslední úspěšně otevřenou verzi souboru do interního úložiště. Můžete ji otevřít klepnutím na \"%1$s\" a výběrem místní zálohy.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp"> Soubor je poškozený. \n
|
||||
Zde je několik rad, které vám mohou pomoci zjistit příčinu problému:\n
|
||||
@@ -707,6 +718,26 @@
|
||||
<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_11">
|
||||
<item>Přidána plovoucí akční tlačítka pro vyhledávání a přehled TOTP (pokud jsou přítomny položky TOTP).</item>
|
||||
<item>Vylepšeno zobrazení polí TOTP přidáním indikátoru časového limitu a jeho výraznějším zobrazením.</item>
|
||||
<item>TOTP lze nyní zobrazit v zobrazení skupiny.</item>
|
||||
<item>Kopírování textové hodnoty do schránky při dlouhém stisknutí v zobrazení položky.</item>
|
||||
<item>Usnadnění přístupu k TOTP na vestavěné klávesnici.</item>
|
||||
<item>Zobrazení upozornění na položku při automatickém vyplňování položky TOTP. To umožňuje zkopírovat TOTP do schránky. Konfiguraci chování naleznete v předvolbách.</item>
|
||||
<item>Aktualizovaná implementace TOTP řeší problémy s kompatibilitou s KeePass2 a TrayTOTP</item>
|
||||
<item>Drobná vylepšení</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_11_net">
|
||||
<item>Aktualizace pCloud SDK pro zajištění přístupu ke sdíleným složkám</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_10">
|
||||
<item>Přidání podpory oprávnění pro oznámení v systému Android 13+</item>
|
||||
<item>Zlepšení implementace FTP a SFTP</item>
|
||||
<item>Přidání přístupu k plnému pCloudu</item>
|
||||
<item>Povolení výběru jazyka systému v dialogovém okně jazyka</item>
|
||||
<item>Oprava problému se zapamatováním typu souboru klíče + Challenge</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09e">
|
||||
<item>Opravy pádů a nečekaného odhlašování</item>
|
||||
<item>Přepnutí na novou implementaci SFTP, podporující moderní algoritmy pro veřejné klíče jako rsa-sha2-256</item>
|
||||
|
@@ -22,8 +22,8 @@
|
||||
<string name="short_app_name_nonet">KP2A Offline</string>
|
||||
<string name="app_timeout">App-timeuot</string>
|
||||
<string name="app_timeout_summary">Tidsforløb inden databasen låses, når app\'en er inaktiv.</string>
|
||||
<string name="kill_app_label">Stands app-proces</string>
|
||||
<string name="show_kill_app">Luk-knap</string>
|
||||
<string name="kill_app_label">Stands app-proces</string>
|
||||
<string name="show_kill_app_summary">Vis en knap på adgangskodeskærmen til standsning af app-processen (til paranoide brugere)</string>
|
||||
<string name="application">App</string>
|
||||
<string name="application_settings">App-indstillinger</string>
|
||||
@@ -641,24 +641,6 @@
|
||||
<string name="Continue">Fortsæt</string>
|
||||
<string name="NoFilenameWarning">Den angivne URI ligner ikke et filnavn. Sikker på, at dette er en gyldig fil?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Ugyldig kombinøgle! Forsøg igen.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">Ugyldig kombinøgle! Prøv flg. trin for at oplåse din database:\n
|
||||
|
||||
• Tjek, at du har angivet den korrekte adgangskode. Benyt øjenikonet til at vise den angivne adgangskode.\n
|
||||
• Tjek, at du har valgt den korrekte adgangskodetype. Tjek, at denne modsvarer typen, der blev benyttet ved databaseoprettelsen.\n
|
||||
• Tjek, at du har valgt den rigtige databasefil.</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Tip: Mener du, at din databasefil kan være beskadiget, eller kan du ikke huske hovedadgangskoden efter at have skifteet den, kan du prøve den senest åbnede filversion ved at trykke på \"%1$s\" og vælge den lokale sikkerhedskopi.</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Tip: Keepass2Android har gemt den senest åbnede filversion på den interne lagerplads. Du kan åbne den ved at trykke på \"%1$s\" og vælge den lokale sikkerhedskopi.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp">Filen er beskadiget.\n
|
||||
Her er nogle tip til hjælp for diagnosticeringen af problemet:\n
|
||||
|
||||
• Kopierede du filen via USB (MTP-tilstand), så prøv igen med et værktøjer såsom MyPhoneExplorer. MTP trunkerer i visse tilfælde filer.\n
|
||||
• Kan du ikke åbne filen fra samme placering på din PC, er det meget sandsynligt, at filen faktisk er beskadiget. Benyt da en databasesikkerhedskopi. Mener du, at Keepass2Android har ødelagt filen, så kontakt venligst supporten.\n
|
||||
• Kan du stadig åbne filen på din PC, så kontakt venligst supporten. Du kan evt. forsøge at gemme den med andre indstillinger (f.eks. ikke-zippet) på PC\'en og igen forsøge at åbne den i Keepass2Android.
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Åbn en anden database…</string>
|
||||
<string name="select_database">Vælg database</string>
|
||||
<string name="configure_child_dbs">Opsæt underordnet databases…</string>
|
||||
@@ -751,154 +733,6 @@
|
||||
<item>Fejlrettelser</item>
|
||||
<item>Fejlrettelser</item>
|
||||
</string-array>
|
||||
<string name="ChangeLog_1_07"> Version 1.07\n
|
||||
* Løser nedbrud på Samsungs Android 9\n
|
||||
* Tillader åbning af flere end én database, kompatibel med KeeAutoExec\n
|
||||
* SFTP: Tillader offentlig nøglegodkendelse, tjekker om værtsnøgle er ændret\n
|
||||
* Introducerer pCloud-understøttelse - tak til gilbsgilbs!\n
|
||||
* Gør Nextcloud-support eksplicit\n
|
||||
* Forbedrer lagring og opdaterng af delpostvedhæftninger\n
|
||||
* Flere muligheder for at tilpasse adfærd til personlige præferencer\n
|
||||
* SSL: Stol på brugercertifikater\n
|
||||
* Forbedring af Autoudfylding (fungerer nu med Firefox, reducerer mængden af pop-opper)\n
|
||||
* Fejlretninger\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_06"> Version 1.06\n
|
||||
* Skift til ykDroid i stedet for YubiChallenge som app til Yubikey Udfordring-Svar.\n
|
||||
* Implementér understøttelse for KeepassXC-agtig Udfordring-Svar. Bemærk: Databaseformatet skal være KDBX4!\n
|
||||
* Nægt at indlæse/åbne kasserede filer fra Google Drev\n
|
||||
* Skift TLS-implementering for FTPS, tilføj workaround til JSch-fejl med servere, som understøtter gssapi-with-mic\n
|
||||
* fejlretninger\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_05">Version 1.05\n
|
||||
* Bruger notifikationsskanaler til Android 8, som tillader opsætning via systemindstillinger\n
|
||||
* Viser indtastningsikon i notifikation\n
|
||||
* Bruger Adaptive Ikoner til Android 8, bruger rundt startikon til Android 7\n
|
||||
* Tillader søgningsaktivering ved oplåsning (se indstillinger)\n
|
||||
* Ændret måden, hvorpå filer arkiveres via Storage Access Framework, løser problemer med opdatering af filer på Google Drev åbnet via Systemfilvælger\n
|
||||
* Tilføjet nogle infotekster for at undgå visse almindelige misforståelser\n
|
||||
* Opretter lokale sikkerhedskopier af vellykkede åbnede databaser for at reducere risiko for datatab\n
|
||||
* Opdateret JSch for at understøtte nyere SSH-kodninge\n
|
||||
* Tillader redigering af forbindelsesindstillinger, f.eks. når WebDav-kodeord skiftes\n
|
||||
* Tilføjet support for Yubikey Neos statiske adgangskodetilstand\n
|
||||
* Tillader deaktivering af Autoudfyld-forslag\n
|
||||
* Rettet datalækage til logcat\n
|
||||
* fejlrettelser\n </string>
|
||||
<string name="ChangeLog_1_04b"> Version 1.04b\n
|
||||
* Forhindrer nedbrud, når bruger forsøger at aktivere Autoudfyld på Huawei-enheder.\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_04"> Version 1.04\n
|
||||
* Added Autoudfyld-tjeneste til Android 8.0 og senere.\n
|
||||
* Opgradede biblioteker, implementeringsværktøjer og Target SDK-version.\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_03"> Version 1.03\n
|
||||
* Fjernet tilgængelighedstjeneste til Autoudfyld som anmodet af Google. Se adgangskodetilgangsindstillinger for at finde et plugin, der replikerer ttidligere funktionalitet.\n
|
||||
* Tilføjet tredjeparts-apps som lagringsmulighed igen\n
|
||||
* Integreret billedfremviser til visning af vedhæftede billeder uden at overføre dem til andre apps\n
|
||||
* Opgradet OkHttp for at løse problemer med visse tilslutninger\n
|
||||
* Understøttelse af KeeTrayTOTP-angivelser, understøtter nu Steam-angivelser\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_02"> Version 1.02\n
|
||||
* Several security improvements. Thanks a lot for the security report by jean-baptiste.cayrou@thalesgroup.com and vincent.fargues@thalesgroup.com and for their collaboration!\n
|
||||
* Support for KeyboardSwapPlugin (see password access options): allows to switch input method automatically on non-rooted devices. Thanks to Mishaal Rahman from XDA-Developers to make this possible.\n
|
||||
* Fix for Accessibility Service with recent Chrome versions\n
|
||||
* Fix for unnecessary clearing of fingerprint data\n
|
||||
* Fix minor crashes\n
|
||||
* Updated Dropbox SDK to ensure future compatibility\n
|
||||
* Removed error reporting through Xamarin Insights\n
|
||||
* Updated build tools\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01g"> Version 1.01-g\n
|
||||
* Rettelse til nedbrud under forsøg på at arbejde offline\n
|
||||
* Rettelse af ukorrekt encoding af FTP(S)-akkreditivers\n
|
||||
* Rettelse til nedbrud under brug af OneDrive og på ældre Android-versioner\n
|
||||
* Visning af klokkeslæt som lokalt ditto på indtastningsskærmen\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01d"> Version 1.01-d\n
|
||||
* Rettelse af OneDrive-filoversigt\n
|
||||
* Tillader også at ignorere certifikatfejl, når værtsnavnsgodkendelse fejler (ikke anbefalet til produktionsbrug)\n
|
||||
* Rettelse af Hurtigoplåsnings periodiske afvisning trods korrekt oplåsningskode\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8c"> Version 0.9.8c\n
|
||||
* Rettelse af SSL-sårbarhed i Microsoft Live-SDK (bruges under filtilgang via OneDrive)\n
|
||||
* Fejlrettelse: Foregående udgivelse indeholdt to inputmetoder (én oplevede nedbrud)\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_01"> Version 1.01\n
|
||||
* Tilføjet understøttelse af det nye KDBX-4 format (kompatibelt med Keepass 2.35) inkl. Argon2- nøgleafledninger og ChaCha20-kryptering.\n
|
||||
* Genimplementeret WebDav-fillagring, tillader nu filgennemsyn samt understøtter moderne kryptering.\n
|
||||
* Genimpleenterede FTP-fillagring, tillader nu filgennemsyn samt understøtter kryptering (FTPS).\n
|
||||
* Opdateret til OneDrive-SDK (tidligere benyttede Live-SDK opdateres ikke længere)\n
|
||||
* Opdaterede til Dropbox-SDK version 2 (tidligere benyttede version 1-SDK er forældet).\n
|
||||
* Tilføjet understøttelse af OwnCloud.\n
|
||||
* Prompt om lagerpladsrettigheder inden lokale filer åbnes
|
||||
</string>
|
||||
<string name="ChangeLog_1_0_0e"> Version 1.0.0e\n
|
||||
* Rettelse til Fingeraftryksoplåsning på ældre Samsung-enheder med Android 6\n
|
||||
* Tilføjet indbygget understøttelse af x86-enheder\n
|
||||
* Tillader skjulning af softtastatur under fingeaftryksaflæsning\n
|
||||
* Build-systemopdatering
|
||||
</string>
|
||||
<string name="ChangeLog_1_0_0"> Version 1.0.0\n
|
||||
* Fingeraftryksoplåsning (kræver Android 6.0+ eller a Samsung-enheder)\n
|
||||
* Tilføjet Autoudfyldningstjeneste (kræver Android 5.0+)\n
|
||||
* Tilføjet understøttelse af postskabeloner\n
|
||||
* Tilføjet \"arbejd offline\" tilstand\n
|
||||
* Tillader kopiering af poster\n
|
||||
* Autofuldførelsestilstand til feltnavne\n
|
||||
* Tillader at fjerne emner fra listen seneste filer\n
|
||||
* Tilladelsesforespørgsel på eksekveringstidspunktet i Android 6.0\n
|
||||
* Fejlrettelse (i indbygget tastatur under valg af ikoner)\n
|
||||
* Medtaget mulighed for indsendelse af fejlrapporter\n
|
||||
* Tilføjet hjælpemeddelelser på flere steder\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9">Version 0.9.9\n
|
||||
* Komplet UI-redesign. Tak til Stefano Pignataro (http://www.spstudio.at) for hans støtte!\n
|
||||
* Tillader at tilføjelse af tilpassede ikoner\n
|
||||
* Understøttelse for Multivinduetilstand på Samsung-enheder\n
|
||||
* Forøget standardantallet af krypteringegennemløb på nye databaser\n
|
||||
* Tjek af dubletnøgler i ekstrafelter for at undgå datatab\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_9c"> Version 0.9.9c\n
|
||||
* Mørkt tema er tilbage\n
|
||||
* Du kan installere andre ikonpakker (gammeldags Windows-stil ikoner er tilgængelige fra Play Butik)\n
|
||||
* Tilføjet bekræftelsesspørgsmål, når elementer slettes udenom Papirkurv\n
|
||||
* Fejlrettelser (forkert visning af OTP-hemmelighedskoding, forkert appikon på visse steder)\n
|
||||
</string>
|
||||
<string name="ChangeLog_0_9_8b">Version 0.9.8b\n
|
||||
* Fejlrettelser (Gem fejlede for visse databaser, eksport til lokal enhed fejlede, valg af visse præferenceindstillinger fik app\'en til at gå ned)\n</string>
|
||||
<string name="ChangeLog_0_9_8">Version 0.9.8\n
|
||||
* Undrstøttelse af Storage Access Framework (tillader skribning til SD-kort og Google Drev i KP2A-offline)\n
|
||||
* Forsøger at detektere forket brugerinput, når WebDAV URL\'er angives (mappe i stedet for fil)\n
|
||||
* Ændret adgangskodeskrifttype\n
|
||||
* Tilladerændring af Dropbox-konto\n
|
||||
* Rettet fejl: Husker nu OTP-adgangskode</string>
|
||||
<string name="ChangeLog_0_9_7b">Version 0.9.7b\n
|
||||
* Opdaterede oversættelser\n
|
||||
* Fejlrettelser: Adgangskodeskrifttype manglede i 0.9.7, sortering efter navn sorterede ikke grupper\n</string>
|
||||
<string name="ChangeLog_0_9_7">Version 0.9.7\n
|
||||
* skriveunderstøttelse til Keepass 1-databaser (kdb) (beta!)\n
|
||||
* bedre skift tilbage til foregående tastatur (fungerer også på ikke-root enheder)\n
|
||||
* understøttelse af KeeChallenge med med variabel udfordringslængde\n
|
||||
* forhindrer optagelse af skærmfotos på Hurtig Oplåsnings- og Adgangskodeskærme\n
|
||||
* omvendt sorteringsrækkefølge for Sortér efter ændringsdato (nu faldende)\n
|
||||
* fejlrettelser: Notatvisninger opdateres nu korrekt efter ændringer, Adgangskodevisninger skjuler nu adgangskode korrekt på (forhåbentlig) alle enheder, rettet problem, der gjorde det muligt at tilføje en post to gange, rettet problem med visning af Dublet UUID-advarsel, selv efter at databasen var rettet\n</string>
|
||||
<string name="ChangeLog_0_9_4"><b>Version 0.9.4</b>\n
|
||||
* Tilføjet plugin-support: Se indstillinger for, hvordan du henter plugins!\n
|
||||
* Offentliggjort QR-plugin (scan adgangskoder, vis adgangskoder som QR-kode, overfør poster til andre KP2A-enheder)\n
|
||||
* Publiceret InputStick-plugin (overfør legitimationsoplysninger til din pc via bluetooth - kræver InputStick-USB-stick)\n
|
||||
* Apps fra tredjepart kan nu blot implementere forespørgsel til KP2A for legitimationsoplysninger. Er du udvikler? Føj dette til din app, hvis det er passende!\n
|
||||
* Tilføjet TOTP-understøttelse (kompatibel med KeeOTP og TrayTotp)\n
|
||||
* App bør ikke længere blive slået ihjel af Android, når databasen er åben\n
|
||||
* Databasen er ikke længere låst, når du forlader appen med tilbage-knappen (se indstillinger)\n
|
||||
* Vis gruppenavne i søgeresultatvisningen (*)\n
|
||||
* Tilføjet kontekstmenu i søgeresultatvisningen, inklusive \"Navigér til overordnet\"-mulighed (*)\n
|
||||
* Tilføjet mulighed for at vise gruppenavn i postvisning (*)\n
|
||||
* (*) Tak til Matthieu for implementeringen af disse funktioner!\n
|
||||
* Understøtter KeeChallenge (med Yubikey NEO). Tak til Ben Rush for implementering af forbindelsesleddet!\n
|
||||
* Forbedret brugergrænseflade\n
|
||||
* Rettet en fejl i Google Drev-grænseflade\n
|
||||
* Tilføjet mulighed for at deaktivere \"Donér\"-funktionen\n
|
||||
* QuickUnlock-ikonet er nu skjult på enheder med Android 4.2+ som standard\n</string>
|
||||
<string name="ChangeLog_keptDonate">Udvidet mulighed for donation af en øl eller noget andet</string>
|
||||
<string-array name="clipboard_timeout_options">
|
||||
<item>30 sekunder</item>
|
||||
@@ -948,7 +782,7 @@
|
||||
</string-array>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>Adgangskode</item>
|
||||
<item>K2A Private/Public key</item>
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
<string-array name="AcceptAllServerCertificates_options">
|
||||
|
@@ -23,8 +23,8 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="short_app_name_nonet">KP2A Offline</string>
|
||||
<string name="app_timeout">Zeitsperre für Anwendung</string>
|
||||
<string name="app_timeout_summary">Bei inaktiver Anwendung wird die Datenbank nach Ablauf der eingestellten Zeit automatisch gesperrt.</string>
|
||||
<string name="kill_app_label">App-Prozess beenden</string>
|
||||
<string name="show_kill_app">Schließen-Button</string>
|
||||
<string name="kill_app_label">App-Prozess beenden</string>
|
||||
<string name="show_kill_app_summary">Eine Schaltfläche auf dem Passwortbildschirm anzeigen, um den App-Prozess zu beenden (für paranoide Benutzer)</string>
|
||||
<string name="application">Anwendung</string>
|
||||
<string name="application_settings">Anwendungseinstellungen</string>
|
||||
@@ -69,7 +69,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="clipboard_timeout">Zeitsperre für Zwischenablage</string>
|
||||
<string name="clipboard_timeout_summary">Zeit bis zum Löschen der Zwischenablage nach dem Kopieren von Benutzername oder Passwort</string>
|
||||
<string name="copy_username">Benutzername in die Zwischenablage kopieren</string>
|
||||
<string name="copy_password">Kennwort in die Zwischenablage kopieren</string>
|
||||
<string name="copy_password">Passwort 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>
|
||||
@@ -96,13 +96,13 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="enable_fingerprint_unlock">Komplettes biometrisches Entsperren aktivieren</string>
|
||||
<string name="enable_fingerprint_quickunlock">Biometrisches Entsperren für QuickUnlock</string>
|
||||
<string name="fingerprint_unlock_failed">Biometrisches Entsperren fehlgeschlagen. Entschlüsselungsschlüssel wurde vom Android-System für ungültig erklärt. Das kommt üblicherweise vor, wenn die Biometrische Authentifizierung oder die Sicherheitseinstellungen geändert wurden. </string>
|
||||
<string name="fingerprint_disabled_wrong_masterkey">Entsperren der Datenbank fehlgeschlagen: Ungültiger zusammengesetzter Schlüssel. Biometrisches Entsperren wurde deaktiviert, da das gespeicherte Masterpasswort nicht länger gültig ist.</string>
|
||||
<string name="fingerprint_disabled_wrong_masterkey">Entsperren der Datenbank fehlgeschlagen: Ungültiger zusammengesetzter Schlüssel. Biometrisches Entsperren wurde deaktiviert, da das gespeicherte Hauptpasswort nicht länger gültig ist.</string>
|
||||
<string name="fingerprint_reenable">Bitte Biometrisches Entsperren für das neue Hauptpasswort erneut aktivieren.</string>
|
||||
<string name="fingerprint_reenable2">Bitte mit Passwort entsperren und anschließend in den Datenbankeinstellungen das Biometrische Entsperren erneut aktivieren.</string>
|
||||
<string name="FingerprintInitFailed">Initialisierung der biometrischen Authentifizierung fehlgeschlagen. </string>
|
||||
<string name="FingerprintSetupFailed">Daten konnten nicht verschlüsselt werden. Dies kann passieren, wenn Fingerabdrücke in den Systemeinstellungen hinzugefügt oder gelöscht wurden, während Keepass2Android auf deinen Fingerabdruck wartet.</string>
|
||||
<string name="enable_fingerprint_unlock_Info">Mit dieser Option wird das Hauptpasswort verschlüsselt im Android-Keystore auf dem Gerät gespeichert, geschützt durch einen Fingerabdruck. Dadurch kann die Datenbank per biometrischer Authentifizierung entsperrt werden.</string>
|
||||
<string name="enable_fingerprint_quickunlock_Info">Erlaubt es, den biometrische Authentifizierung anstelle des QuickUnlock-Codes zu nutzen. Speichert keine Informationen bezüglich des Masterpassworts.</string>
|
||||
<string name="enable_fingerprint_quickunlock_Info">Erlaubt es, die biometrische Authentifizierung anstelle des QuickUnlock-Codes zu nutzen. Speichert keine Informationen bezüglich des Hauptpassworts.</string>
|
||||
<string name="enter_filename">Dateinamen der Datenbank eingeben</string>
|
||||
<string name="entry_accessed">Letzter Zugriff</string>
|
||||
<string name="entry_cancel">Abbrechen</string>
|
||||
@@ -135,7 +135,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="error_invalid_db">Ungültige Datenbank.</string>
|
||||
<string name="error_invalid_path">Ungültiger Pfad.</string>
|
||||
<string name="error_no_name">Ein Name ist erforderlich.</string>
|
||||
<string name="error_nopass">Ein Kennwort oder eine Schlüsseldatei wird benötigt.</string>
|
||||
<string name="error_nopass">Ein Passwort oder eine Schlüsseldatei ist erforderlich.</string>
|
||||
<string name="error_pass_gen_type">Mindestens eine Form der Passwort-Generierung muss ausgewählt werden</string>
|
||||
<string name="error_pass_match">Die Passwörter stimmen nicht überein.</string>
|
||||
<string name="error_rounds_not_number">Anzahl der Wiederholungen muss eine Zahl sein.</string>
|
||||
@@ -148,11 +148,12 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="group">Gruppe</string>
|
||||
<string name="hint_comment">Notizen</string>
|
||||
<string name="hint_conf_pass">Passwort bestätigen</string>
|
||||
<string name="hint_generated_password">Erzeugtes Kennwort</string>
|
||||
<string name="hint_generated_password">Erzeugtes Passwort</string>
|
||||
<string name="hint_group_name">Name der Gruppe</string>
|
||||
<string name="hint_keyfile">Schlüsseldatei</string>
|
||||
<string name="hint_length">Länge</string>
|
||||
<string name="hint_pass">Passwort</string>
|
||||
<string name="hint_keyfile_path">Pfad des privaten SSH-Schlüssels</string>
|
||||
<string name="hint_login_pass">Passwort</string>
|
||||
<string name="hint_title">Name</string>
|
||||
<string name="hint_url">URL</string>
|
||||
@@ -192,7 +193,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="menu_navigate">Zur übergeordneten Gruppe navigieren</string>
|
||||
<string name="menu_donate">Spendiere ein Bier...</string>
|
||||
<string name="menu_edit">Bearbeiten</string>
|
||||
<string name="menu_hide_password">Kennwort verstecken</string>
|
||||
<string name="menu_hide_password">Passwort verbergen</string>
|
||||
<string name="menu_lock">Datenbank sperren</string>
|
||||
<string name="menu_open">Öffnen</string>
|
||||
<string name="menu_close">Schließen</string>
|
||||
@@ -368,12 +369,12 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="UseFileTransactions_summary">Dateitransaktionen beim Schreiben von Datenbank-Dateien verwenden</string>
|
||||
<string name="LockWhenScreenOff_title">Sperren, wenn Bildschirm ausgeschaltet</string>
|
||||
<string name="LockWhenScreenOff_summary">Sperre die Datenbank wenn der Bildschirm ausgeschaltet wird.</string>
|
||||
<string name="ClearPasswordOnLeave_title">Eingegebenes Master-Passwort-Feld leeren</string>
|
||||
<string name="ClearPasswordOnLeave_summary">Leere das Eingabefeld für das Master-Passwort, wenn der Passwort-Eingabebildschirm verlassen wird, ohne dass die Datenbank entsperrt wurde.</string>
|
||||
<string name="ClearPasswordOnLeave_title">Eingegebenes Hauptpasswort-Feld leeren</string>
|
||||
<string name="ClearPasswordOnLeave_summary">Leere das Eingabefeld für das Hauptpasswort, wenn der Passwort-Eingabebildschirm verlassen wird, ohne dass die Datenbank entsperrt wurde.</string>
|
||||
<string name="LockWhenNavigateBack_title">Beim Verlassen der App sperren</string>
|
||||
<string name="LockWhenNavigateBack_summary">Datenbank sperren, wenn die App mit dem Zurück-Knopf verlassen wird.</string>
|
||||
<string name="UseKp2aKeyboardInKp2a_title">Integrierte Tastatur in Keepass2Android verwenden</string>
|
||||
<string name="UseKp2aKeyboardInKp2a_summary">Wenn Sie ihrer Standardtastatur nicht vertrauen, setzen Sie diese Option, um die Built-In-Tastatur beim Eingeben des Masterkennworts oder beim Bearbeiten von Einträgen zu benutzen.</string>
|
||||
<string name="UseKp2aKeyboardInKp2a_summary">Wenn du deiner Standardtastatur nicht vertraust, aktiviere diese Option, um die integrierte Tastatur beim Eingeben des Hauptpassworts oder beim Bearbeiten von Einträgen zu benutzen.</string>
|
||||
<string name="ActivateSearchViewOnStart_title">Suchfeld beim Start aktivieren</string>
|
||||
<string name="ActivateSearchViewOnStart_summary">Aktiviert das Suchfeld in der Gruppenansicht nach dem Entsperren oder wenn ein Eintrag gesucht wird.</string>
|
||||
<string name="NoDonateOption_title">Spenden-Option ausblenden</string>
|
||||
@@ -402,6 +403,14 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="ShowSeparateNotifications_summary">Getrennte Benachrichtigungen zum Kopieren von Benutzername und Passwort in die Zwischenablage und zur Aktivierung der Eingabemethode anzeigen.</string>
|
||||
<string name="AccServiceAutoFill_prefs">AutoFill Accessibility-Service</string>
|
||||
<string name="AutoFill_prefs">AutoFill-Dienst</string>
|
||||
<string name="AutoFillTotp_prefs_ShowNotification_summary">Eintragsbenachrichtigung mit einem Kopieren-Button anzeigen, wenn Autofill für einen Eintrag mit TOTP durchgeführt wird.</string>
|
||||
<string name="AutoFillTotp_prefs_ShowNotification_title">Eintragsbenachrichtigung anzeigen</string>
|
||||
<string name="AutoFillTotp_prefs_title">Autofill für TOTP-Einträge</string>
|
||||
<string name="AutoFillTotp_prefs_CopyTotpToClipboard_title">TOTP in Zwischenablage kopieren</string>
|
||||
<string name="AutoFillTotp_prefs_CopyTotpToClipboard_summary">TOTP in die Zwischenablage kopieren bei Autofill eines Eintrags mit TOTP</string>
|
||||
<string name="AutoFillTotp_prefs_ActivateKeyboard_summary">Integrierte Tastatur aktivieren bei Autofill eines Eintrags mit TOTP. Die Tastatur hat einen TOTP-Button.</string>
|
||||
<string name="AutoFillTotp_prefs_ActivateKeyboard_title">Integrierte Tastatur aktivieren</string>
|
||||
<string name="TotpCopiedToClipboard">TOTP in Zwischenablage kopiert</string>
|
||||
<string name="ShowKp2aKeyboardNotification_title">KP2A-Tastatur-Benachrichtigung</string>
|
||||
<string name="ShowKp2aKeyboardNotification_summary">Kompletten Eintrag über die KP2A-Tastatur bereitstellen (empfohlen).</string>
|
||||
<string name="OpenKp2aKeyboardAutomatically_title">Tastatur umschalten</string>
|
||||
@@ -418,6 +427,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="ShowUnlockedNotification_summary">Symbol in der Benachrichtigungsleiste anzeigen, solange die Datenbank entsperrt ist.</string>
|
||||
<string name="IconVisibilityInfo_Android8_text">Mit Android 8 wurde ein neues Verhalten für Benachrichtigungen eingeführt. Wenn das Symbol für die Benachrichtigungen von Keepass2Android ausgeblendet werden soll, dies bitte in den Systemeinstellungen konfigurieren. Dazu die Wichtigkeit der Benachrichtigungskategorie auf Minimum setzen.</string>
|
||||
<string name="IconVisibilityInfo_Android8_btnSettings">Einstellungen öffnen</string>
|
||||
<string name="PostNotificationsPermissionInfo_text">Keepass2Android kann eine Systembenachrichtigung anzeigen, wenn deine Datenbank nicht gesperrt ist. Damit dies funktioniert, erteilebitte die Berechtigung.</string>
|
||||
<string name="DontCare">Ist mir egal</string>
|
||||
<string name="DocumentAccessRevoked">Keepass2Android kann nicht mehr auf die Datei zugreifen. Entweder wurde sie entfernt oder die Zugriffsrechte wurden entzogen. Bitte die Datei erneut öffnen, z. B. über „Datenbank wechseln“.</string>
|
||||
<string name="PreloadDatabaseEnabled_title">Datenbankdatei vorladen</string>
|
||||
@@ -502,9 +512,27 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="hint_sftp_host">Host (z.B. 192.168.0.1)</string>
|
||||
<string name="hint_sftp_port">Port</string>
|
||||
<string name="initial_directory">Startverzeichnis (optional):</string>
|
||||
<string name="connect_timeout">Verbindungs-Timeout in Sekunden (optional)</string>
|
||||
<string name="enter_sftp_login_title">SFTP-Zugangsdaten eingeben:</string>
|
||||
<string name="sftp_auth_mode">Authentifizierungsmodus</string>
|
||||
<string name="send_public_key">Öffentlichen Schlüssel senden …</string>
|
||||
<string name="select_private_keyfile">Privaten Schlüssel wählen...</string>
|
||||
<string name="hint_sftp_key_name">Neuer Schlüsselname</string>
|
||||
<string name="hint_sftp_key_content">Neuer Schlüsselinhalt</string>
|
||||
<string name="private_key_saved">Privater Schlüssel gespeichert</string>
|
||||
<string name="private_key_save_failed">Speichern des privaten Schlüssels fehlgeschlagen: %1$s</string>
|
||||
<string name="private_key_info">Gib den Namen und Inhalt des Schlüssels ein, um ihn zu speichern</string>
|
||||
<string name="private_key_delete">Privaten Schlüssel gelöscht: %1$s</string>
|
||||
<string name="private_key_delete_failed">Löschen des privaten Schlüssels fehlgeschlagen: %1$s</string>
|
||||
<string name="save_key">Privaten Schlüssel speichern</string>
|
||||
<string name="delete_key">Privaten Schlüssel löschen</string>
|
||||
<string name="private_key_select">Privaten Schlüssel auswählen</string>
|
||||
<string name="private_key_create_new">[Neuen hinzufügen...]</string>
|
||||
<string name="hint_sftp_key_passphrase">Passphrase des Schlüssels (optional)</string>
|
||||
<string name="sftp_kex_title">Schlüsselaustausch(KEX)-Algorithmen (optional)</string>
|
||||
<string name="hint_sftp_kex">Kommaseparierte Namen/Spec</string>
|
||||
<string name="sftp_shk_title">Server-Host-Schlüsselalgorithmen (optional)</string>
|
||||
<string name="hint_sftp_shk">Kommaseparierte Namen/Spec</string>
|
||||
<string name="enter_ftp_login_title">FTP-Zugangsdaten eingeben:</string>
|
||||
<string name="enter_mega_login_title">MEGA-Zugangsdaten eingeben:</string>
|
||||
<string name="select_storage_type">Speichertyp wählen:</string>
|
||||
@@ -522,7 +550,9 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_gdriveKP2A">Google Drive (KP2A-Dateien)</string>
|
||||
<string name="filestoragehelp_gdriveKP2A">Wenn KP2A keinen Zugriff auf das komplette eigenen Google Drive erhalten soll, kann diese Option gewählte werden. Bitte beachten, dass zuerst eine Datenbankdatei erstellt werden muss; vorhandene Dateien sind für die App nicht sichtbar. Diese Option entweder auf dem Bildschirm „Datenbank erstellen“ auswählen oder, wenn bereits eine Datenbank geöffnet wurde, indem die Datenbank mit dieser Option exportiert wird.</string>
|
||||
<string name="filestoragename_pcloud">PCloud (KP2A-Ordner)</string>
|
||||
<string name="filestoragehelp_pcloud">Dieser Speichertyp verlangt nur Zugriff auf den pCloud-Ordner „Applications/Keepass2Android“. Wenn eine vorhandene Datenbank aus dem eigenen pCloud-Konto verwendet werden soll, bitte sicherstellen, dass die Datei in diesem pCloud-Ordner gespeichert ist.</string>
|
||||
<string name="filestoragename_pcloudall">PCloud (Vollzugriff)</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Alle Dateien und freigegebene Dateien</string>
|
||||
@@ -542,7 +572,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="help_master_password">Die eigene Datenbank wird mit dem hier eingegebenen Passwort verschlüsselt. Dazu ein starkes Passwort verwenden, um die Datenbank abzusichern! Tipp: Sich ein oder zwei Sätze ausdenken und die Anfangsbuchstaben als Passwort nutzen. Auch die Satzzeichen mit einschließen.</string>
|
||||
<string name="hint_master_password">Wähle ein Master-Passwort, mit dem deine Datenbank geschützt wird:</string>
|
||||
<string name="key_file">Schlüsseldatei</string>
|
||||
<string name="help_key_file">Eine Schlüsseldatei ist im Grunde ein Kennwort, das in einer Datei gespeichert ist. Schlüsseldateien sind üblicherweise stärker als Kennwörter, weil sie deutlich komplexer sein können; allerdings ist es schwerer, sie geheim zu halten. Wird die Datenbank in der Cloud gespeichert, sollte die Schlüsseldatei keinesfalls ebenfalls dort abgelegt werden! Das würde sie völlig nutzlos machen! Wichtig: Den Inhalt der Schlüsseldatei nicht mehr ändern, nachdem die Datenbank angelegt wurde!</string>
|
||||
<string name="help_key_file">Eine Schlüsseldatei ist im Grunde ein Passwort, das in einer Datei gespeichert ist. Schlüsseldateien sind üblicherweise stärker als Passwörter, weil sie deutlich komplexer sein können; allerdings ist es schwerer, sie geheim zu halten. Wird die Datenbank in der Cloud gespeichert, sollte die Schlüsseldatei keinesfalls ebenfalls dort abgelegt werden! Das würde sie völlig nutzlos machen! Wichtig: Den Inhalt der Schlüsseldatei nicht mehr ändern, nachdem die Datenbank angelegt wurde!</string>
|
||||
<string name="hint_key_file">Wählen, ob eine Schlüsseldatei zusätzlich zum Hauptpasswort verwendet werden soll:</string>
|
||||
<string name="use_key_file">Schlüsseldatei verwenden</string>
|
||||
<string name="error_adding_keyfile">Fehler beim Hinzufügen der Schlüsseldatei!</string>
|
||||
@@ -568,12 +598,14 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="CouldntLoadChalAuxFile_Hint">Bitte das KeeChallenge-Plugin in KeePass 2.x (PC) verwenden, um die Datenbank für die Verwendung von Challenge-Response zu konfigurieren!</string>
|
||||
<string name="ErrorUpdatingChalAuxFile">Fehler beim Aktualisieren der OTP-Hilfsdatei!</string>
|
||||
<string name="TrayTotp_SeedField_title">TOTP-Seed-Feldname</string>
|
||||
<string name="TOTP">TOTP</string>
|
||||
<string name="TrayTotp_SeedField_summary">Wenn das Keepass2-Plugin „TrayTotp“ nicht mit Standardeinstellungen verwendet wird, den Feldnamen für das Seed-Feld entsprechend der Einstellungen am PC angeben.</string>
|
||||
<string name="TrayTotp_SettingsField_title">Feldname für TOTP-Einstellungen</string>
|
||||
<string name="TrayTotp_SettingsField_summary">Feldnamen für TOTP-Einstellungen entsprechend den TrayTotp-Einstellungen eingeben.</string>
|
||||
<string name="TrayTotp_prefs">TrayTotp</string>
|
||||
<string name="DebugLog_prefs_prefs">Logdatei (für Debugging)</string>
|
||||
<string name="DebugLog_title">Logdatei verwenden</string>
|
||||
<string name="FtpDebug_title">FTP/SFTP Debug-Logging</string>
|
||||
<string name="DebugLog_summary">Ausgabe der Anwendung in eine lokale Logdatei schreiben</string>
|
||||
<string name="DebugLog_send">Debug-Log senden …</string>
|
||||
<string name="loading">Lade…</string>
|
||||
@@ -685,6 +717,26 @@ Anbei einige Tipps, 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">Achtung! Die biometrische Authentifizierung kann von Android ungültig gemacht werden, z. B. nach dem Hinzufügen eines neuen Fingerabdrucks in den Geräteeinstellungen. Bitte sicherstellen, dass jederzeit klar ist, wie mit dem eigenen Hauptpasswort entsperrt werden kann!</string>
|
||||
<string-array name="ChangeLog_1_11">
|
||||
<item>Buttons für die Suche und eine TOTP-Übersicht hinzugefügt (falls TOTP-Einträge vorhanden sind)</item>
|
||||
<item>Darstellung von TOTP-Feldern verbessert: Timeout-Anzeige hinzugefügt und besser sichtbar gemacht.</item>
|
||||
<item>TOTPs sind nun aus der Gruppenansicht zu sehen.</item>
|
||||
<item>Werte in der Eintrags-Ansicht können mittels langem Antippen in die Zwischenablage kopiert werden.</item>
|
||||
<item>TOTPs einfacher aus der integrierten Tastatur heraus zugänglich gemacht.</item>
|
||||
<item>Eintrags-Benachrichtigung wird angezeigt beim Autofill von TOTP-Einträgen. Dies erlaubt es, die TOTP in die Zwischenablage zu kopieren. Konfiguration des Verhaltens ist in den Einstellungen möglich.</item>
|
||||
<item>TOTP-Implementierung aktualisiert, um Kompatibilitätsprobleme mit KeePass2 und TrayTOTP zu beheben.</item>
|
||||
<item>Kleinere Verbesserungen</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_11_net">
|
||||
<item>pCloud-SDK aktualisiert um den Zugriff auf geteilte Ordner zu ermöglichen.</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_10">
|
||||
<item>Unterstützung für Benachrichtigungsrechte für Android 13+ implementiert</item>
|
||||
<item>Verbesserung der FTP- und SFTP-Implementierung</item>
|
||||
<item>Zugriff zur vollständigen pCloud hinzugefügt</item>
|
||||
<item>Auswahl der Systemsprache im Sprachdialog erlaubt</item>
|
||||
<item>Problem beim Speichern der Schlüsseldatei + Challenge-Passwort-Typ behoben</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09e">
|
||||
<item>Fehlerbehebung, um Abstürze und unerwartetes Abmelden zu vermeiden</item>
|
||||
<item>Wechsel auf eine neue SFTP-Implementierung, jetzt mit Unterstützung von modernen Public-Key-Algorithmen wie rsa-sha2-256</item>
|
||||
@@ -777,18 +829,18 @@ Anbei einige Tipps, die bei der Diagnose des Problems helfen können:\n
|
||||
* TLS-Implementierung für FTPS gewechselt, Workaround wegen eines JSch-Bugs integriert (betrifft Server, die gssapi-with-mic unterstützen)\n
|
||||
* Fehler behoben\n </string>
|
||||
<string name="ChangeLog_1_05">Version 1.05\n
|
||||
• Verwenden von Benachrichtigungskanälen in Android 8. So können Benachrichtigungen über die Systemeinstellungen konfiguriert werden.\n
|
||||
• Eintragsymbol wird in Benachrichtigungen angezeigt\n
|
||||
• Adaptive App-Launcher-Symbol für Android 8 und rundes App-Launcher-Symbol für Android 7\n
|
||||
• Suche kann nach dem Entsperren aktiviert werden (s. Einstellungen)\n
|
||||
• Fehler beim Schreiben von Dateien über das Storage-Access-Framework behoben. Dadurch wird ein Problem behoben, wenn Dateien über den Android-Dateibrowser aus Google Drive geöffnet werden.\n
|
||||
• Einige Infotexte ergänzt, um häufig auftretende Missverständnisse zu vermeiden.\n
|
||||
• Nach erfolgreichem Öffnen wird eine lokale Sicherungskopie der Datenbank angelegt, um das Risiko von Datenverlust zu reduzieren.\n
|
||||
• JSch aktualisiert, um aktuelle SSH-Verschlüsselungsalgorithmen zu unterstützen\n
|
||||
• Unterstützung für den statischen Passwortmodus des Yubikey Neo integriert.\n
|
||||
• Die Autofill-Empfehlung kann leichter deaktiviert werden\n
|
||||
• Fix für gegebenenfalls nach Logcat geschriebene private Daten.\n
|
||||
• Fehlerkorrekturen\n </string>
|
||||
* Verwendung von Benachrichtigungskanälen in Android 8. So können Benachrichtigungen über die Systemeinstellungen konfiguriert werden.\n
|
||||
* Eintrags-Icon wird in Benachrichtigungen angezeigt\n
|
||||
* Adaptive App-Launcher-Icons für Android 8 und rundes App-Launcher-Icon für Android 7\n
|
||||
* Suche kann nach dem Entsperren aktiviert werden (s. Einstellungen)\n
|
||||
* Fehler beim Schreiben von Dateien über das Storage-Access-Framework behoben. Dadurch wird ein Problem behoben, wenn Dateien über den Android-Dateibrowser aus Google Drive geöffnet werden.\n
|
||||
* Einige Infotexte ergänzt, um häufig auftretende Missverständnisse zu vermeiden.\n
|
||||
* Nach erfolgreichem Öffnen wird eine lokale Sicherungskopie der Datenbank angelegt, um das Risiko von Datenverlust zu reduzieren.\n
|
||||
* JSch aktualisiert um aktuelle SSH-Verschlüsselungsalgorithmen zu unterstützen\n
|
||||
* Unterstützung für den statischen Passwortmodus des Yubikey Neo integriert.\n
|
||||
* Die Autofill-Empfehlung kann leichter deaktiviert werden\n
|
||||
* Fix für u.U. nach Logcat geschriebene private Daten.\n
|
||||
* Bugfixes\n </string>
|
||||
<string name="ChangeLog_1_04b">Version 1.04b\n
|
||||
• Korrektur für App-Crash beim Aktivieren von Autofill auf Huawei-Geräten.\n </string>
|
||||
<string name="ChangeLog_1_04"> Version 1.04\n
|
||||
@@ -817,7 +869,7 @@ Anbei einige Tipps, die bei der Diagnose des Problems helfen können:\n
|
||||
* Zeiten werden als lokale Zeiten dargestellt\n </string>
|
||||
<string name="ChangeLog_1_01d">Version 1.01-d\n
|
||||
* Fix beim Auflisten von Dateien mit OneDrive\n
|
||||
* Erlaube das Ignorieren von Zertifikatsfehlern auch wenn Host-Name-Verification fehlschlägt (nicht für produktiven Einsatz empfohlen)\n
|
||||
* Erlaube das Ignorieren von Zertifikatsfehlern, auch wenn Host-Name-Verification fehlschlägt (nicht für produktiven Einsatz empfohlen)\n
|
||||
* Fix: QuickUnlock schlug manchmal fehl trotz korrektem Entsperr-Code\n </string>
|
||||
<string name="ChangeLog_0_9_8c"> Version 0.9.8c\n
|
||||
* Fix für SSL-Schwachstelle im Microsoft Live-SDK (wird benutzt beim Zugriff auf Dateien mit OneDrive)\n
|
||||
@@ -1047,12 +1099,12 @@ Erstes öffentliches Release</string>
|
||||
<item>Passwort und Challenge-Response</item>
|
||||
<item>Passwort und Challenge-Response-Secret (Recovery-Modus)</item>
|
||||
<item>Passwort und Challenge-Response für Keepass XC</item>
|
||||
<item>Kennwort und Schlüsseldatei und Challenge-Response für Keepass XC</item>
|
||||
<item>Passwort und Schlüsseldatei und Challenge-Response für Keepass XC</item>
|
||||
</string-array>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>Passwort</item>
|
||||
<item>K2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
<item>KP2A privater/öffentlicher Schlüssel</item>
|
||||
<item>Eigener privater Schlüssel</item>
|
||||
</string-array>
|
||||
<string-array name="AcceptAllServerCertificates_options">
|
||||
<item>Fehler bei Zertifikatsüberprüfung ignorieren</item>
|
||||
@@ -1070,6 +1122,11 @@ Erstes öffentliches Release</string>
|
||||
<string name="autofill_enable_for">AutoFill für %1$s aktivieren</string>
|
||||
<string name="invalid_link_association">Webdomain %1$s konnte nicht mit App %2$s verknüpft werden</string>
|
||||
<string name="enable_fingerprint_hint">Keepass2Android hat biometrische Hardware erkannt. Soll Biometrisches Entsperren für diese Datenbank aktiviert werden?</string>
|
||||
<string name="post_notifications_dialog_title">Benachrichtigungen zulassen</string>
|
||||
<string name="post_notifications_dialog_message">Keepass2Android kann Benachrichtigungen mit Buttons anzeigen, um Werte wie Passwörter und TOTPs in die Zwischenablage zu kopieren oder um die integrierte Tastatur zu öffnen. Dies ist nützlich, um Werte in andere Apps zu übertragen, ohne wiederholt zu Keepass2Android zu wechseln. Möchtest du solche Benachrichtigungen aktivieren?</string>
|
||||
<string name="post_notifications_dialog_allow">Benachrichtigungen zulassen</string>
|
||||
<string name="post_notifications_dialog_disable">Feature deaktivieren</string>
|
||||
<string name="post_notifications_dialog_notnow">Jetzt nicht</string>
|
||||
<string name="understand">Okay, verstanden</string>
|
||||
<string name="dont_show_again">Nicht erneut anzeigen</string>
|
||||
<string name="masterkey_infotext_head">Kennst du dein Master-Passwort?</string>
|
||||
|
@@ -22,8 +22,8 @@
|
||||
<string name="short_app_name_nonet">KP2A χωρίς σύνδεση</string>
|
||||
<string name="app_timeout">Λήξη χρονικού ορίου εφαρμογής</string>
|
||||
<string name="app_timeout_summary">Χρόνος πριν το κλείδωμα της βάσης δεδομένων όταν η εφαρμογή είναι ανενεργή.</string>
|
||||
<string name="kill_app_label">Τερματισμός διεργασίας</string>
|
||||
<string name="show_kill_app">Κουμπί τερματισμού</string>
|
||||
<string name="kill_app_label">Τερματισμός διεργασίας</string>
|
||||
<string name="show_kill_app_summary">Προβάλει κουμπί στην οθόνη συνθηματικού που τερματίζει τη διεργασία της εφαρμογής (για παρανοϊκούς χρήστες)</string>
|
||||
<string name="application">Εφαρμογή</string>
|
||||
<string name="application_settings">Ρυθμίσεις εφαρμογής</string>
|
||||
@@ -152,6 +152,7 @@
|
||||
<string name="hint_keyfile">αρχείο κλειδιού</string>
|
||||
<string name="hint_length">μήκος</string>
|
||||
<string name="hint_pass">συνθηματικό</string>
|
||||
<string name="hint_keyfile_path">Διαδρομή ιδιωτικού κλειδιού SSH</string>
|
||||
<string name="hint_login_pass">Συνθηματικό</string>
|
||||
<string name="hint_title">όνομα</string>
|
||||
<string name="hint_url">URL</string>
|
||||
@@ -417,6 +418,7 @@
|
||||
<string name="ShowUnlockedNotification_summary">Προβολή εικονιδίου ειδοποίησης, ενόσω η βάση δεδομένων είναι ξεκλείδωτη.</string>
|
||||
<string name="IconVisibilityInfo_Android8_text">Το Android 8 εισήγαγε νέα συμπεριφορά για τις ειδοποιήσεις. Απόκρυψη του εικονιδίου των ειδοποιήσεων του Keepass2Android γίνεται από τις ρυθμίσεις συστήματος. Ορίστε τη σημαντικότητα της κατηγορίας ειδοποιήσεων στο Ελάχιστο.</string>
|
||||
<string name="IconVisibilityInfo_Android8_btnSettings">Άνοιγμα ρυθμίσεων</string>
|
||||
<string name="PostNotificationsPermissionInfo_text">Το Keepass2Android μπορεί να εμφανίζει μια ειδοποίηση συστήματος ενόσω η βάση δεδομένων σας παραμένει ξεκλείδωτη. Για να λειτουργήσει αυτό, χορηγήστε την άδεια.</string>
|
||||
<string name="DontCare">Δεν με νοιάζει</string>
|
||||
<string name="DocumentAccessRevoked">Το αρχείο δεν είναι πλέον προσπελάσιμο στο Keepass2Android. Είτε διαγράφτηκε ή ανακηθηκαν τα δικαιώματα πρόσβασης. Δοκιμάστε να ξανα-ανοίξετε το αρχείο, πχ με Αλλαγή βάσης δεδομένων.</string>
|
||||
<string name="PreloadDatabaseEnabled_title">Προ-φόρτωση αρχείου βάσης δεδομένων</string>
|
||||
@@ -501,9 +503,27 @@
|
||||
<string name="hint_sftp_host">κόμβος (πχ 192.168.0.1)</string>
|
||||
<string name="hint_sftp_port">θύρα</string>
|
||||
<string name="initial_directory">Αρχικός κατάλογος (προαιρετικό):</string>
|
||||
<string name="connect_timeout">Χρονικό όριο σύνδεσης σε δευτερόλεπτα (προαιρετικό)</string>
|
||||
<string name="enter_sftp_login_title">Εισάγετε στοιχεία σύνδεσης SFTP:</string>
|
||||
<string name="sftp_auth_mode">Τρόπος αυθεντικοποίησης</string>
|
||||
<string name="send_public_key">Αποστολή δημόσιου κλειδιού...</string>
|
||||
<string name="select_private_keyfile">Επιλέξτε ιδιωτικό κλειδί...</string>
|
||||
<string name="hint_sftp_key_name">Νέο όνομα κλειδιού</string>
|
||||
<string name="hint_sftp_key_content">Νέο περιεχόμενο κλειδιού</string>
|
||||
<string name="private_key_saved">Το ιδιωτικό κλειδί αποθηκεύτηκε</string>
|
||||
<string name="private_key_save_failed">ΑΠΟΤΥΧΙΑ αποθήκευσης του ιδιωτικού κλειδιού: %1$s</string>
|
||||
<string name="private_key_info">Εισάγετε όνομα και περιεχόμενο του κλειδιού για αποθήκευση</string>
|
||||
<string name="private_key_delete">Διαγράφηκε το ιδιωτικό κλειδί: %1$s</string>
|
||||
<string name="private_key_delete_failed">ΑΠΟΤΥΧΙΑ διαγραφής του ιδιωτικού κλειδιού: %1$s</string>
|
||||
<string name="save_key">Αποθήκευση ιδιωτικού κλειδιού</string>
|
||||
<string name="delete_key">Διαγραφή ιδιωτικού κλειδιού </string>
|
||||
<string name="private_key_select">Επιλέξτε ιδιωτικό κλειδί</string>
|
||||
<string name="private_key_create_new">[Προσθήκη νέου...]</string>
|
||||
<string name="hint_sftp_key_passphrase">Συνθηματικό κλειδιού (προαιρετικό)</string>
|
||||
<string name="sftp_kex_title">Αλγόριθμος ανταλλαγής κλειδιών (προαιρετικά)</string>
|
||||
<string name="hint_sftp_kex">Όνομα / προσδιορισμός διαχωρισμένα με κόμμα</string>
|
||||
<string name="sftp_shk_title">Αλγόριθμος για το κλειδί του διακομιστή (προαιρετικά)</string>
|
||||
<string name="hint_sftp_shk">Όνομα / προσδιορισμός διαχωρισμένα με κόμμα</string>
|
||||
<string name="enter_ftp_login_title">Εισαγωγή δεδομένων εισόδου FTP:</string>
|
||||
<string name="enter_mega_login_title">Εισάγετε τα δεδομένα εισόδου για το λογαριασμό MEGA:</string>
|
||||
<string name="select_storage_type">Επιλέξτε τύπο αποθήκευσης:</string>
|
||||
@@ -521,7 +541,9 @@
|
||||
<string name="filestoragename_gdrive">Google Drive</string>
|
||||
<string name="filestoragename_gdriveKP2A">Google Drive (αρχεία KP2A)</string>
|
||||
<string name="filestoragehelp_gdriveKP2A">Αν δεν θέλετε να δώσετε πρόσβαση KP2A πρόσβαση σε όλο το Google Drive σας, μπορείτε να επιλέξετε αυτή την επιλογή. Σημειώστε ότι πρέπει να δημιουργήσετε ένα αρχείο βάσης δεδομένων πρώτα - τα υπάρχοντα αρχεία δεν είναι ορατά στην εφαρμογή. Επιλέξτε αυτή την επιλογή από την οθόνη Δημιουργία βάσης δεδομένων ή, αν έχετε ήδη ανοίξει μια βάση δεδομένων, με την εξαγωγή της βάσης δεδομένων επιλέγοντας αυτή την επιλογή.</string>
|
||||
<string name="filestoragename_pcloud">PCloud (φάκελος KP2A)</string>
|
||||
<string name="filestoragehelp_pcloud">Αυτός ο τύπος αποθήκευσης θα ζητήσει πρόσβαση μόνο στον pCloud φάκελο \"Applications/Keepass2Android\". Αν θέλετε να χρησιμοποιήσετε μια υπάρχουσα βάση δεδομένων από τον pCloud λογαριασμό σας, βεβαιωθείτε ότι το αρχείο έχει τοποθετηθεί σε αυτόν τον φάκελο.</string>
|
||||
<string name="filestoragename_pcloudall">PCloud (πλήρης πρόσβαση)</string>
|
||||
<string name="filestoragename_onedrive">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2">OneDrive</string>
|
||||
<string name="filestoragename_onedrive2_full">Όλα τα αρχεία και τα κοινά αρχεία</string>
|
||||
@@ -573,6 +595,7 @@
|
||||
<string name="TrayTotp_prefs">TrayTotp</string>
|
||||
<string name="DebugLog_prefs_prefs">Αρχείο καταγραφών για αποσφαλμάτωση</string>
|
||||
<string name="DebugLog_title">Χρήση αρχείου καταγραφών</string>
|
||||
<string name="FtpDebug_title">Καταγραφή σφαλμάτων FTP/SFTP</string>
|
||||
<string name="DebugLog_summary">Καταγραφή στοιχείων της εφαρμογής σε τοπικό αρχείο καταγραφών</string>
|
||||
<string name="DebugLog_send">Αποστολή αρχείων καταγραφής εκσφαλμάτωσης...</string>
|
||||
<string name="loading">Φόρτωση…</string>
|
||||
@@ -641,7 +664,7 @@
|
||||
<string name="Continue">Συνέχεια</string>
|
||||
<string name="NoFilenameWarning">Το URI που έχετε εισάγατε δεν μοιάζει με όνομα αρχείου. Είστε βέβαιοι ότι είναι έγκυρο αρχείο;</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Μη έγκυρο σύνθετο κλειδί! Παρακαλώ δοκιμάστε ξανά.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">Μη έγκυρο σύνθετο κλειδί! Παρακαλούμε δοκιμάστε τα ακόλουθα βήματα για να ξεκλειδώσετε τη βάση δεδομένων: \n
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">Μη έγκυρο σύνθετο κλειδί! Δοκιμάστε τα ακόλουθα βήματα για να ξεκλειδώσετε τη βάση δεδομένων: \n
|
||||
|
||||
* Βεβαιωθείτε ότι έχετε πληκτρολογήσει το σωστό συνθηματικό. Χρησιμοποιήστε το εικονίδιο \'μάτι\' για να αποκαλυφθεί το συνθηματικό που εισάγατε. \n
|
||||
* Βεβαιωθείτε ότι έχετε επιλέξει σωστό τύπο συνθηματικού. Βεβαιωθείτε ότι ταιριάζει με τον τύπο που χρησιμοποιήθηκε κατά τη δημιουργία της βάσης δεδομένων. \n
|
||||
@@ -651,11 +674,11 @@
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Υπόδειξη: Το Keepass2Android έχει αποθηκεύσει την τελευταία έκδοση του αρχείου που ανοίχτηκε στην εσωτερική μνήμη. Μπορείς να την ανοίξεις πατώντας \"%1$s\" και επιλέγοντας το τοπικό αντίγραφο. </string>
|
||||
<string name="CorruptDatabaseHelp">Το αρχείο είναι κατεστραμμένο. \n
|
||||
Ακολουθούν υποδείξεις για να διαγνώσετε το πρόβλημα: \n
|
||||
Ακολουθούν υποδείξεις για τη διάγνωση του προβλήματος: \n
|
||||
|
||||
Αν αντιγράψατε το αρχείο μέσω USB (MTP-Mode), παρακαλώ προσπαθήστε ξανά με εργαλεία όπως το MyPhoneExplorer. Το MTP περικόπτει τα αρχεία σε ορισμένες περιπτώσεις. \n
|
||||
Αν δεν μπορείτε να ανοίξετε το αρχείο από την ίδια θέση στον υπολογιστή σας, είναι πολύ πιθανό ότι το αρχείο είναι πράγματι κατεστραμμένο. Χρησιμοποιήστε αντίγραφο ασφαλείας της βάσης δεδομένων. Αν ΄πιστεύετε ότι το Keepass2Android καταστρέφει το αρχείο, επικοινωνήστε με την υποστήριξη. \n
|
||||
Αν μπορείτε να ανοίξετε το αρχείο στον υπολογιστή σας, επικοινωνήστε με την υποστήριξη. Μπορείτε να δοκιμάσετε να το αποθηκεύσετε με διαφορετικές ρυθμίσεις (π.χ. unzipped) στο PC και προσπαθήστε ξανά να ανοίξετε στο Keepass2Android. </string>
|
||||
Αν αντιγράψατε το αρχείο μέσω USB (MTP-Mode), προσπαθήστε ξανά με εργαλεία όπως το MyPhoneExplorer. Το MTP περικόπτει τα αρχεία σε ορισμένες περιπτώσεις. \n
|
||||
Αν δεν μπορείτε να ανοίξετε το αρχείο από την ίδια θέση στον υπολογιστή σας, είναι πολύ πιθανό ότι το αρχείο είναι πράγματι κατεστραμμένο. Χρησιμοποιήστε αντίγραφο ασφαλείας της βάσης δεδομένων. Αν πιστεύετε ότι το Keepass2Android καταστρέφει το αρχείο, επικοινωνήστε με την ομάδα υποστήριξης. \n
|
||||
Αν μπορείτε να ανοίξετε το αρχείο στον υπολογιστή σας, επικοινωνήστε με την ομάδα υποστήριξης. Μπορείτε να δοκιμάσετε να το αποθηκεύσετε με διαφορετικές ρυθμίσεις (π.χ. unzipped) στο PC και προσπαθήστε ξανά να ανοίξετε στο Keepass2Android. </string>
|
||||
<string name="open_other_db">Ανοίξτε μια άλλη βάση δεδομένων…</string>
|
||||
<string name="select_database">Επιλέξτε τη βάση δεδομένων</string>
|
||||
<string name="configure_child_dbs">Προσαρμογή παράγωγων βάσεων δεδομένων…</string>
|
||||
@@ -683,6 +706,13 @@
|
||||
<string name="EntryChannel_desc">Ειδοποίηση για απλοποιημένη πρόσβαση στην τρέχουσα καταχώριση.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Κλείσιμο της βάσης δεδομένων μετά από 3 ανεπιτυχείς προσπάθειες βιομετρικού ξεκλειδώματος.</string>
|
||||
<string name="WarnFingerprintInvalidated">Προσοχή! Ο βιομετρικός έλεγχος ταυτότητας μπορεί να ακυρωθεί από το Android, π.χ. μετά την προσθήκη ενός νέου δακτυλικού αποτυπώματος στις ρυθμίσεις της συσκευής σας. Βεβαιωθείτε ότι ξέρετε πάντα πώς να ξεκλειδώσετε με τον κύριο κωδικό πρόσβασης!</string>
|
||||
<string-array name="ChangeLog_1_10">
|
||||
<item>Προσθήκη υποστήριξης για δικαιώματα ειδοποίησης στο Android 13+</item>
|
||||
<item>Βελτίωση της υλοποίησης FTP και SFTP</item>
|
||||
<item>Προσθήκη πρόσβασης σε πλήρες pCloud</item>
|
||||
<item>Επιτρέπει την επιλογή γλώσσας συστήματος στο μενού της γλώσσας</item>
|
||||
<item>Διόρθωση προβλήματος με την απομνημόνευση Keyfile + ερώτηση για τον τύπο του κωδικού πρόσβασης</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_09e">
|
||||
<item>Διόρθωση σφάλματος για απότομα κλεισίματα εφαρμογής και μη αναμενόμενες αποσυνδέσεις</item>
|
||||
<item>Μετάβαση σε νέα υλοποίηση SFTP, υποστηρίζοντας σύγχρονους αλγόριθμους δημόσιου κλειδιού όπως rsa-sha2-256</item>
|
||||
@@ -748,259 +778,7 @@
|
||||
<item>Διορθώσεις σφαλμάτων</item>
|
||||
<item>Διορθώσεις σφαλμάτων</item>
|
||||
</string-array>
|
||||
<string name="ChangeLog_1_07b">Έκδοση 1.07b\n
|
||||
* Βελτίωση επιδόσεων Argon2 με χρήση εγγενούς υλοποίησης (ευχαριστώ Chih-Hsuan Yen!)\n
|
||||
* Επιτρέπει απενεργοποίηση δακτυλικού αποτυπώματος με κλικ στο εικονίδιο (λύνει το ζήτημα με τους αναγνώστες δακτυλικού αποτυπώματος κάτω από την οθόνη, ευχαριστώ marcoDallas!)\n
|
||||
* Επαναφέρει τη θέση του δρομέα όταν αλλάζει η ορατότητα του συνθηματικού (ευχαριστώ DDoSolitary!)\n
|
||||
* Βελτιώσεις στην υλοποίηση PCloud (ευχαριστώ gilbsgilbs πάλι!)\n
|
||||
* Υποστήριξη AutoFill για πολλούς browsers \n
|
||||
* Νέα υλοποίηση για OneDrive: περιλαμβάνει υποστήριξη OneDrive for Business, κοινόχρηστα αρχεία, επιλεγόμενα επίπεδα πρόσβασης, πολλαπλούς λογαριασμούς και διορθώνει ζητήματαμε offline πρόσβαση\n
|
||||
* Διόρθωση σφαλμάτων </string>
|
||||
<string name="ChangeLog_1_07">Εκδοση 1.07\n
|
||||
* Διορθώνει κρασαρίσματα στο Samsung\'s Android 9\n
|
||||
* Επιτρέπει άνοιγμα περισσότερων από μιας βάσεων δεδομένων, συμβατό με KeeAutoExec\n
|
||||
* SFTP: Επιτρέπει αυθεντικοποίηση δημόσιου κλειδιού, ελέγχει για αλλαγή host key\n
|
||||
* Εισάγει υποστήριξη pCloud - ευχαριστώ gilbsgilbs!\n
|
||||
* Προβάλει την υποστήριξη Nextcloud\n
|
||||
* Βελτιώνει την αποθήκευση και ενημέρωση συνημμένων\n
|
||||
* Περισσότερες επιλογές διαμόρφωσης συμπεριφοράς στις προσωπικές προτιμήσεις\n
|
||||
* SSL: Πιστοποιητικά έμπιστου χρήστη\n
|
||||
* Βελτίωση autofill (λειτουργεί με Firefox, επιτρέπει μείωση αναδυόμενων)\n
|
||||
* Διόρθωση σφαλμάτων\n </string>
|
||||
<string name="ChangeLog_1_06">Έκδοση 1.06\n
|
||||
* Χρήση του ykDroid αντί του YubiChallenge ως εφαρμογή για Yubikey Πρόκληση-Απόκριση.\n
|
||||
* Υλοποίηση υποστήριξης για KeepassXC-style Challenge-Response. Σημείωση: Το φορμάτ της βάσης δεδομένων πρέπει να είναι KDBX4!\n * Άρνηση φόρτωσης πεταμένων αρχείων από το Google Drive\n
|
||||
* Αλλαγή της υλοποίησης TLS για το FTPS, προσθήκη λύσης του σφάλματος JSch για εξυπηρετητές που υποστηρίζουν gssapi-with-mic\n
|
||||
* Διορθώσεις σφαλμάτων\n</string>
|
||||
<string name="ChangeLog_1_05"> Έκδοση 1.05\n
|
||||
* Χρήση ειδοποιήσεων του Android 8, που επιτρέπει προσαρμογή μέσω των ρυθμίσεων συστήματος\n
|
||||
* Προβολή εικονιδίου εισόδου στις ειδοποιήσεις\n
|
||||
* Χρήση Adaptive Icons για το Android 8, χρήση στρογγυλού εικονιδίου για το Android 7\n
|
||||
* Επιτρέπει ενεργοποίηση αναζήτησης κατά το ξεκλείδωμα\n
|
||||
* Αλλαγή στον τρόπο εγγραφής των αρχείων μέσω Storage Access Framework, διορθώνει ζητήματα ενημέρωσης αρχείων στο Google Drive όταν ανοίγονται μέσω του System file picker\n
|
||||
* Προσθήκη πληροφοριακών κειμένων προς αποφυγή κοινών παρεξηγήσεων\n
|
||||
* Δημιουργία τοπικών αντιγράφων των βάσεων δεδομένων που ανοίχθηκαν επιτυχώς προς αποφυγή απώλειας δεδομένων\n
|
||||
* Ενημερωμένο JSch για υποστήριξη πρόσφατων SSH ciphers\n
|
||||
* Επιτρέπει διόρθωση ρυθμίσεων σύνδεσης, πχ όταν αλλάζει το συνθηματικό WebDav\n
|
||||
* Added support for Yubikey Neo\'s static password mode\n
|
||||
* Allow to disable Autofill suggestion\n
|
||||
* Fixed data leakage to logcat\n
|
||||
* bug fixes\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_04b"> Έκδοση 1.04b\n
|
||||
* Αποφυγή κρασαρίσματος κατά την ενεργοποίηση Autofill σε συσκευές Huawei.\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_04"> Έκδοση 1.04\n
|
||||
* Προσθήκη υπηρεσίας Autofill για Android 8.0 και επόμενα.\n
|
||||
* Αναβαθμισμένες βιβλιοθήκες, εργαλεία ανάπτυξης και έκδοση Target SDK.\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_03">Έκδοση 1.03\n
|
||||
* Αφαιρέθηκε η υπηρεσία προσβασιμότητας έπειτα από απαίτηση της Google. Δείτε τις ρυθμίσεις κωδικών προσβασιμότητας για να βρείτε ένα πρόσθετο που να αντικαθιστά την λειτουργικότητα.\n
|
||||
* Προστέθηκαν ξανά εφαρμογές τρίτων σαν επιλογές αποθήκευσης\n
|
||||
* Ενσωματωμένο πρόγραμμα προβολής εικόνων για την προβολή συνημμένων εικόνων χωρίς να χρειάζεται η μεταφορά τους σε άλλη εφαρμογή\n
|
||||
* Αναβάθμιση του OkHttp για διόρθωση λαθών σε κάποιες συνδέσεις\n
|
||||
* Υποστήριξη για καταχωρήσεις KeeTrayTOTP, με υποστήριξη καταχωρήσεων Steam\n
|
||||
</string>
|
||||
<string name="ChangeLog_1_02">Έκδοση 1.02\n
|
||||
* Αρκετές βελτιώσεις ασφαλείας. Ευχαριστώ πολύ για την έκθεση ασφάλειας των jean-baptiste.cayrou@thalesgroup.com και vincent.fargues@thalesgroup.com και για τη συνεργασία τους! \n
|
||||
* Υποστήριξη του πρόσθετου KeyboardSwap (δείτε επιλογές κωδικού πρόσβασης): επιτρέπει την αυτόματη αλλαγή μεθόδου εισαγωγής για συσκευές που δεν είναι root. Ευχαριστώ τον Mishaal Rahman από τους XDA-Developers. \n
|
||||
* Διόρθωση στην υπηρεσία προσβασιμότητας με πρόσφατες εκδόσεις του Chrome\n
|
||||
* Διόρθωση για περιττές εκκαθαρίσεις δεδομένων των δακτυλικών αποτυπωμάτων\n
|
||||
* Διόρθωση ήσσονος σημασίας καταρρεύσεων\n
|
||||
* Ενημέρωση του Dropbox SDK για να εξασφαλιστεί μελλοντική συμβατότητα \n
|
||||
* Αφαίρεση αναφοράς σφαλμάτων μέσω Xamarin Insights\n
|
||||
* Ενημερωμένα εργαλεία ανάπτυξης\n </string>
|
||||
<string name="ChangeLog_1_01g">Έκδοση 1.01-g\n
|
||||
* Διόρθωση για αιφνίδια διακοπή λειτουργίας κατά την λειτουργία offline\n
|
||||
* Διόρθωση για εσφαλμένη κωδικοποίηση των πιστοποιητικών FTP (S)\n
|
||||
* Διόρθωση για καταρρεύσεις κατά τη χτήση του OneDrive και σε παλιότερες εκδόσεις Android\n
|
||||
* Προβολή της τοπικής ώρας στην οθόνη εισόδου\n </string>
|
||||
<string name="ChangeLog_1_01d">Έκδοση 1.01-d\n
|
||||
* Διόρθωση για λίστα αρχείων στο OneDrive\n
|
||||
* Επιτρέπεται η αγνόηση σφαλμάτων πιστοποιητικών όταν αποτυγχάνει η επαλήθευση του host name (δεν συνιστάται για κανονική χρήση)\n
|
||||
* Διόρθωση για QuickUnlock που μερικές φορές αποτυγχάνει παρά το σωστό κωδικό ξεκλειδώματος\n </string>
|
||||
<string name="ChangeLog_0_9_8c">Έκδοση 0.9.8c\n * ΕΝΗΜΕΡΩΣΗ για ευπάθεια SSL στο Microsoft Live SDK (που χρησιμοποιείται κατά την πρόσβαση σε αρχεία μέσω OneDrive) \n * Bug fix: η προηγούμενη έκδοση περιείχε δύο μεθόδους εισόδου (ή μια κρεμά) \n </string>
|
||||
<string name="ChangeLog_1_01">Έκδοση 1.01\n
|
||||
* Προστέθηκε υποστήριξη για τη νέα μορφή KDBX-4 (συμβατή με Keepass 2.35) που συμπεριλαμβάνει παραγωγή κλειδιού Argon2 και κρυπτογράφηση ChaCha20. \n
|
||||
* Νέα υλοποίηση αποθήκευσης αρχείων WebDav, που επιτρέπει περιήγηση αρχείων και υποστηρίζει σύγχρονη κρυπτογράφηση. \n
|
||||
* Νέα υλοποίηση αποθήκευσης αρχείων FTP, που επιτρέπει περιήγηση αρχείων και υποστηρίζει κρυπτογράφηση (FTPS). \n
|
||||
* Ενημέρωση στο OneDrive SDK (προηγουμένως χρησιμοποιούσε το Live SDK που δεν ενημερώνεται πλέον) \n
|
||||
* Ενημέρωση στο Dropbox SDK έκδοση 2 (προηγουμένως χρησιμοποιούσε την έκδοση 1 του SDK που έχει καταργηθεί). \n
|
||||
* Προστέθηκε υποστήριξη για OwnCloud.\n
|
||||
* Ερωτά για άδεια αποθήκευσης πριν από το άνοιγμα τοπικών αρχείων.</string>
|
||||
<string name="ChangeLog_1_0_0e">Έκδοση 1.0.0e\n
|
||||
* διόρθωση ξεκλειδώματος με δακτυλικό αποτύπωμα σε παλιότερες συσκευές Samsung με Android 6\n
|
||||
* εγγενής υποστήριξη για συσκευές x86\n
|
||||
* επιτρέπει απόκρυψη οθόνης πληκτρολογίου κατά τη σάρωση δακτυλικού αποτυπώματος\n
|
||||
* build system update</string>
|
||||
<string name="ChangeLog_1_0_0">Έκδοση 1.0.0\n
|
||||
* Ξεκλείδωμα με δακτυλικό αποτύπωμα (απαιτεί Android 6.0+ ή συσκευή Samsung)\n
|
||||
* Υπηρεσία αυτόματης συμπλήρωσης (απαιτεί Android 5.0+)\n
|
||||
* Υποστήριξη προτύπων για καταχωρίσεις\n
|
||||
* Προσθήκη λειτουργίας \"Εκτός σύνδεσης\"\n
|
||||
* Επιτρέπει αντιγραφή καταχωρίσεων\n
|
||||
* Αυτόματη συμπλήρωση για τα ονόματα πεδίων\n
|
||||
* Επιτρέπει διαγραφές από τη λίστα πρόσφατων αρχείων\n
|
||||
* Ζητά άδειες κατά την εκτέλεσης στο Android 6.0\n
|
||||
* Διορθώνει σφάλματα (στο ενσωματωμένο πληκτρολόγιο, κατά την επιλογή εικονιδίων)\n
|
||||
* Προσθέτει επιλογή για αποστολή αναφοράς σφαλμάτων\n
|
||||
* Προσθέτει μηνύματα βοήθειας σε πολλά σημεία\n</string>
|
||||
<string name="ChangeLog_0_9_9">Έκδοση 0.9.9\n
|
||||
* Πλήρης επανασχεδίαση του παρουσιαστικού. Ευχαριστώ Stefano Pignataro (http://www.spstudio.at) για την υποστήριξη!\n
|
||||
* Επιτρέπει προσθήκη προσαρμοσμένων εικονιδίων\n
|
||||
* Επιτρέπει πολλαπλά παράθυρα σε συσκευές Samsung\n
|
||||
* Αυξημένο εξ ορισμού πλήθος κύκλων κρυπτογράφησης για νέες βάσεις δεδομένων\n
|
||||
* Έλεγχος για διπλότυπα κλειδιά στα πρόσθετα πεδία ώστε να αποφεύγεται απώλεια δεδομένων\n</string>
|
||||
<string name="ChangeLog_0_9_9c">Έκδοση 0.9.9c\n
|
||||
* Το σκοτεινό θέμα είναι πίσω\n
|
||||
* Μπορείς να εγκαταστήσεις άλλα πακέτα εικονιδίων (τα αρχαία εικονίδια είνια διαθέσιμα στο Play store)\n
|
||||
* Πρόσθετη επιβεβαίωση κατά τη διαγραφή καταχωρίσεων χωρίς κάδο ανακύκλωσης\n
|
||||
* Διορθώσεις σφαλμάτων (wrong display of OTP secret encoding, wrong app icon in some places)\n </string>
|
||||
<string name="ChangeLog_0_9_8b">Έκδοση 0.9.8b\n
|
||||
* Διορθώσεις σφαλμάτων (Saving failed for some databases, exporting to local device not working, selecting some preference options crashed the app)\n</string>
|
||||
<string name="ChangeLog_0_9_8">Έκδοση0.9.8\n
|
||||
* Υποστήριξη Storage Access Framework (επιτρέπει εγγραφή στην κάρτα SD και στο Google Drive στην KP2A Offline)\n
|
||||
* Προσπαθεί να ανιχνεύσει σφάλματα όταν ο χρήστης εισάγει WebDAV URLs (φάκελο αντί αρχείου)\n
|
||||
* Αλλαγή γραμματοσειράς συνθηματικού\n
|
||||
* Επιτρέπει αλλαγή λογαριασμού Dropbox\n
|
||||
* Διόρθωση σφαλμάτων: τώρα απομνημονεύει το συνθηματικό OTP</string>
|
||||
<string name="ChangeLog_0_9_7b">Έκδοση 0.9.7b\n
|
||||
* updated translations\n
|
||||
* bug fixes: Password font was missing in 0.9.7, sort by name didn not sort groups\n</string>
|
||||
<string name="ChangeLog_0_9_7">Έκδοση 0.9.7\n
|
||||
* Υποστήριξη εγγραφής για βάσεις δεδομένων Keepass 1 (kdb) (σε beta!)\n
|
||||
* Καλύτερη εναλλαγή πληκτρολογίου (λειτουργεί σε μη root συσκευές)\n
|
||||
* υποστήριξη του KeeChallenge με αποκρίσεις μεταβλητού μήκους\n
|
||||
* απαγορεύει τη λήψη screenshots των οθονών QuickUnlock και συνθηματικού\n
|
||||
* ανάστροφη ταξινόμηση κατά ημερομηνία τροποποίησης (τώρα φθίνουσα)\n
|
||||
* διορθώσεις σφαλμάτων: προβολή σημειώσεων ενημερώνεται σωστά μετά από αλλαγές, προβολή συνθηματικού αποκρύπτει το συνθηματικό σε όλες τις συσκευές, απαγορεύει τη διπλή εισαγωγή καταχώρισης, διόρθωση στην προειδοποίηση διπλότυπων αναγνωριστικών ακόμα και μετά την επιδιόρθωση της βάσης δεδομένων\n </string>
|
||||
<string name="ChangeLog_0_9_6">Έκδοση 0.9.6\n
|
||||
* Επιτρέπει την εισαγωγή αρχείου κλειδιού και/ή τοπικού αρχείου βάσης δεδομένων στο φάκελο εσωτερικής μνήμης της εφαρμογής (δες Ρυθμίσεις)\n
|
||||
* Επιτρέπει διάφορες επιλογές ταξινόμησης\n
|
||||
* Βελτιωμένες επιλογές για αυτόματη εναλλαγή πληκτρολογίου\n
|
||||
* Ενημερωμένο λογότυπο εφαρμογής και σχεδίαση ειδοποιήσεων, από τον Stefano Pignataro (http://www.spstudio.at)\n
|
||||
* ο δημιουργός συνθηματικών θυμάται τις τελευταίες ρυθμίσεις\n
|
||||
* Ορίζει ορατότητα ειδοποιήσεων για την οθόνη κλειδώματος του Android 5 lock screen\n
|
||||
* Τώρα το κύριο συνθηματικό καθαρίζεται κατά την εγκατάλειψη της εφαρμογής δίχως πάτημα ΟΚ\n
|
||||
* Διόρθωση ζητήματος με γλώσσες εισόδου που έλειπαν στο πληκτρολόγιο μερικών συσκευών\n
|
||||
* Επισκευή ζητήματος στην εναλλαγή πληκτρολογίου σε ρουταρισμένες συσκευές\n
|
||||
* Προσθήκη ελέγχου για κατεστραμμένες βάσεις δεδομένων (διπλότυπα αναγνωριστικά)\n
|
||||
* Αυτόματα ξαναφορτώνει τη βάση δεδομένων όταν ανιχνεύει αλλαγή, λύνει θέμα ασφαλείας περί αποκάλυψης του κύριου συνθηματικού\n
|
||||
* Βελτιωμένη σχεδίαση του πολωνικού μικρού πληκτρολογίου, διόρθωση του θέματοςρυθμίσεων πληκτρολογίου (ευχαριστώ Wiktor Ławski)\n</string>
|
||||
<string name="ChangeLog_0_9_5">Έκδοση 0.9.5\n
|
||||
* Fixed issues with file browsing (especially on Android 4.4)\n
|
||||
* Fixed issue with loading .kdb files (Keepass 1) on Nexus 5 with Android Lollipop\n
|
||||
* Added option to prevent taking screenshots/displaying app in recent apps list\n
|
||||
* Fixed issue with Google Drive file storage (regular edition)\n
|
||||
* Allow key files on deliberate storage types (regular edition)\n
|
||||
* Updated Dropbox SDK to include an official security patch (regular edition)\n
|
||||
* Updated build tools --> apk size increased :-(\n I have promised some more changes. They will come with the next release - sorry. I wanted to publish these hot fixes as soon as possible.</string>
|
||||
<string name="ChangeLog_0_9_4">Έκδοση 0.9.4\n
|
||||
* added plug-in support: See settings for how to get plug-ins!\n
|
||||
* published QR plug-in (scan passwords, display passwords as QR code, transfer entries to other KP2A devices)\n
|
||||
* published InputStick plugin (transfer credentials to your PC via bluetooth - requires InputStick USB stick)\n
|
||||
* Third party apps can now simply implement querying KP2A for credentials. Are you a developer? Please add this to your app if suitable!\n
|
||||
* added TOTP support (compatible with KeeOTP and TrayTotp)\n
|
||||
* app should no longer be killed by Android when database is open\n
|
||||
* database is no longer locked when leaving the app with the back button (see settings)\n
|
||||
* display group names in search results view (*)\n
|
||||
* added context menu in search results view including \"Navigate to parent\" option (*)\n
|
||||
* added option to display group name in entry view (*)\n
|
||||
* (*) thanks to Matthieu for implementing these features!\n
|
||||
* support KeeChallenge (with Yubikey NEO). Thanks to Ben Rush for implementing the connector!\n
|
||||
* improved user interface\n
|
||||
* fixed a bug in Google Drive interface\n
|
||||
* added option to disable the \"donate\" option\n
|
||||
* QuickUnlock icon now hidden on Android 4.2+ devices by default\n</string>
|
||||
<string name="ChangeLog_0_9_3_r5">Έκδοσδ 0.9.3 r5\n
|
||||
* Incorporated fixes from Xamarin: Keepass2Android now compatible with ART on Android 4.4.2. Finally!\n
|
||||
* Bug fixes: bugs in synchronization (refresh display, correct check for changes on http), bugs on Android 2.x devices, bugs in Google Drive and OneDrive storage implementations, clear clipboard on close database, bug opening attachments, display problems with keyboard\n</string>
|
||||
<string name="ChangeLog_0_9_3">Έκδοση 0.9.3\n
|
||||
* New keyboard with many improvements. See settings to customize.\n
|
||||
* Read-only support for kdb (Keepass 1 files). Experimental!\n
|
||||
* Added SFTP support\n
|
||||
* Added workaround for bug in ART (Android 4.4.2)\n
|
||||
* Bug fixes\n</string>
|
||||
<string name="ChangeLog_0_9_2">Έκδοση 0.9.2\n
|
||||
* Added OTP support (compatible with OtpKeyProv plugin)\n
|
||||
* Integrated NFC support for OTPs from YubiKey NEO \n
|
||||
* Several UI improvements\n
|
||||
* Integrated Keepass 2.24 library\n
|
||||
* Added option to kill the app process (see settings)\n
|
||||
* Improved SSL certificate validation\n
|
||||
* Bug fixes\n</string>
|
||||
<string name="ChangeLog_0_9_1">Έκδοση 0.9.1\n
|
||||
* Integrated SkyDrive support (Keepass2Android regular edition only)\n
|
||||
* Fixed problems with Google Drive integration\n
|
||||
* Added NTLM support</string>
|
||||
<string name="ChangeLog_0_9">Έκδοση 0.9\n
|
||||
* Integrated Dropbox and Google Drive support (read/write databases; Keepass2Android regular edition only)\n
|
||||
* Integrated custom file browser (based on android-filechooser by HBA)\n
|
||||
* Improved user interface for creating new databases\n
|
||||
* Included custom font DejaVu Sans Mono for displaying passwords\n
|
||||
* Bug fixes</string>
|
||||
<string name="ChangeLog_0_8_6">Έκδοση 0.8.6\n
|
||||
* Support for Twofish cipher\n
|
||||
* Allow editing of groups\n
|
||||
* Allow moving of entries and groups\n
|
||||
* QuickUnlock icon can be made transparent (see settings)\n
|
||||
* Bug fixes</string>
|
||||
<string name="ChangeLog_0_8_5"><b>Έκδοση 0.8.5</b>\n
|
||||
* Απομακρυσμένα αρχεία αποθηκεύονται στην τοπική μνήμη των εφαρμογής επιτρέποντας αποσυνδεδεμένω χρήση (περιλαμβάνει διόρθωση και έπειτα συγχρονισμό). Δες Ρυθμίσεις. \n
|
||||
* Εικονίδιο ειδοποιήσεων που οπτικοποιεί την κατάσταση κλειδώματος της βάσης δεδομένων (δες Ρυθμίσεις)\n
|
||||
* Βελτιωμένος καθορισμός της κατάστασης κλειδώματοςσε μερικές περιπτώσεις\n
|
||||
* Τα αρχεία της βάσης δεδομένων φορτώνονται στη μνήμη ενώ πληκτρολογείς το συνθηματικό για αυξημένη ταχύτητα (δες Ρυθμίσεις)\n
|
||||
* Εγγραφές μπορούν να προστεθούν στην ομάδα ρίζα\n
|
||||
* Διορθώσεις σφαλμάτων (πεδία με αναφορές, προβλήματα πληκτρολογίου σε ιταλικές και κινέζικες συσκευές)</string>
|
||||
<string name="ChangeLog_0_8_4">Έκδοση 0.8.4\n
|
||||
* External database changes are detected and merged when saving\n
|
||||
* Improved loading performance\n
|
||||
* Improved search toolbar with suggestions\n
|
||||
* New App logo!\n
|
||||
* Added support for .kdbp format for faster loading/saving\n
|
||||
* Improved editing of extra strings and hidden display when protected\n
|
||||
Thanks to Alex Vallat for his code contributions!\n
|
||||
Thanks to Niki Hüttner (www.close-cut.de) for the new logo!\n</string>
|
||||
<string name="ChangeLog_0_8_3">Έκδοση 0.8.3\n
|
||||
* Username/TAN index displayed in entry list (see settings)\n
|
||||
* Entries can be created if search from browser doesn\'t return results\n
|
||||
* KP2A keyboard provides possibility to search for credentials for current app\n
|
||||
* App automatically closes after selecting an entry for use in keyboard\n
|
||||
* Keyboard selection dialog automatically opens after search for URL (see settings)\n
|
||||
* Placeholders in entry fields are replaced before copying (most placeholders supported)\n
|
||||
* minor bug fixes
|
||||
</string>
|
||||
<string name="ChangeLog_0_8_2">Έκδοση 0.8.2\n
|
||||
* Support for Digest Authentication in WebDAV\n
|
||||
* Bugfixes (OI File manager, Open URL)</string>
|
||||
<string name="ChangeLog_0_8_1">Έκδοση 0.8.1\n
|
||||
* KP2A Offline and \"Online\" can be installed both again\n
|
||||
* Added new translations (thanks to all contributors!)</string>
|
||||
<string name="ChangeLog_0_8">Έκδοση 0.8\n
|
||||
* Improved user interface especially for Android 4.x devices\n
|
||||
* Allow using deliberate file managers for selecting existing files\n
|
||||
* Added safer way for opening attachments (through cache directory)\n
|
||||
* fixed bugs in Edit activity\n
|
||||
* probably introduced new bugs :-)</string>
|
||||
<string name="ChangeLog_keptDonate">Εκτεταμένη δυνατότητα προσφοράς μπύρας ή κάτι άλλου</string>
|
||||
<string name="ChangeLog_0_7">Έκδοση 0.7\n
|
||||
* Increased loading speed: key transformations now 10x faster!\n
|
||||
* Added Keepass2Android soft-keyboard: Switch to this keyboard for entering credentials. Shields you from clipboard-based password sniffers (disable old clipboard notifications in the options)\n
|
||||
* Added option to donate a beer or something else (see menu)</string>
|
||||
<string name="ChangeLog">Έκδοση 0.6.2\n
|
||||
* Google Drive/Dropbox/... integration: Use the official Google Drive or Dropbox App and open any .kdbx-file. This will now bring up KP2A.\n
|
||||
* Improved Search Dialog \n
|
||||
* Improved search results for Share URL with subdomains\n
|
||||
* Added options to give feedback, and rate and translate the app in the menu\n
|
||||
\n
|
||||
<b>Version 0.6.1</b>\n
|
||||
* Detect when database changes in the background (i.e. due to activity of a sync app)\n
|
||||
* Improved searching for URLs from the browser\n
|
||||
* Confirm dialog when discarding changes\n
|
||||
\n
|
||||
<b>Version 0.6</b>\n
|
||||
Initial public release
|
||||
</string>
|
||||
<string-array name="clipboard_timeout_options">
|
||||
<item>30 δευτερόλεπτα</item>
|
||||
<item>1 λεπτό</item>
|
||||
@@ -1049,7 +827,7 @@ Initial public release
|
||||
</string-array>
|
||||
<string-array name="sftp_auth_modes">
|
||||
<item>Συνθηματικό</item>
|
||||
<item>K2A Private/Public key</item>
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
<string-array name="AcceptAllServerCertificates_options">
|
||||
@@ -1068,6 +846,8 @@ Initial public release
|
||||
<string name="autofill_enable_for">Ενεργοποίηση AutoFill για %1$s</string>
|
||||
<string name="invalid_link_association">Δεν σχετίζεται το web domain %1$s με την εφαρμογή %2$s</string>
|
||||
<string name="enable_fingerprint_hint">Το Keepass2Android ανίχνευσε βιομετρικό εξοπλισμό. Θέλετε να ενεργοποιήσετε βιομετρικό ξεκλείδωμα για αυτή τη βάση δεδομένων;</string>
|
||||
<string name="post_notifications_dialog_disable">Απενεργοποιήστε αυτό το χαρακτηριστικό</string>
|
||||
<string name="post_notifications_dialog_notnow">Όχι τώρα</string>
|
||||
<string name="understand">Καταλαβαίνω</string>
|
||||
<string name="dont_show_again">Να μην εμφανιστεί ξανά</string>
|
||||
<string name="masterkey_infotext_head">Θυμάστε το κύριο συνθηματικό σας;</string>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user