Compare commits
	
		
			29 Commits
		
	
	
		
			v1.12-r7
			...
			v1.12-r9-b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 51089c6b98 | ||
|   | cf18fcf91c | ||
|   | da0513c768 | ||
|   | 37f520cdbe | ||
|   | c98572bee0 | ||
|   | b1774ffc4b | ||
|   | 57aaa0c4cd | ||
|   | b961ae1b33 | ||
|   | 5e418e2b1b | ||
|   | 6d22a213f3 | ||
|   | a76addc43f | ||
|   | 1d96217713 | ||
|   | d2b8fdcfff | ||
|   | 507b671448 | ||
|   | 3118ffaeb5 | ||
|   | 0abe29bd77 | ||
|   | f3a7831390 | ||
|   | 37cd58f7ba | ||
|   | 7dd80a8ef7 | ||
|   | c78636264b | ||
|   | 035506a5a3 | ||
|   | 4cf46ef062 | ||
|   | c7b8063171 | ||
|   | 0a8b149c9a | ||
|   | 9240a27791 | ||
|   | e90d5b903c | ||
|   | 50b4a9f1b9 | ||
|   | 0aa78ffd66 | ||
|   | c1dbf171f5 | 
							
								
								
									
										15
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -309,6 +309,14 @@ jobs: | |||||||
|       run: | |       run: | | ||||||
|         make java |         make java | ||||||
|  |  | ||||||
|  |     - name: Update dotnet workloads | ||||||
|  |       run: | | ||||||
|  |         dotnet workload update         | ||||||
|  |  | ||||||
|  |     - name: Select the manifest | ||||||
|  |       run: | | ||||||
|  |         make manifestlink Flavor=Net | ||||||
|  |  | ||||||
|     - name: Install NuGet dependencies (net) |     - name: Install NuGet dependencies (net) | ||||||
|       run: make nuget Flavor=Net |       run: make nuget Flavor=Net | ||||||
|  |  | ||||||
| @@ -327,12 +335,17 @@ jobs: | |||||||
|         path: | |         path: | | ||||||
|           src/keepass2android/bin/*/*-Signed.apk |           src/keepass2android/bin/*/*-Signed.apk | ||||||
|  |  | ||||||
|  |     - name: Select the manifest | ||||||
|  |       run: | | ||||||
|  |         make manifestlink Flavor=NoNet | ||||||
|  |  | ||||||
|     - name: Install NuGet dependencies (nonet) |     - name: Install NuGet dependencies (nonet) | ||||||
|       run: make nuget Flavor=NoNet |       run: make nuget Flavor=NoNet | ||||||
|  |  | ||||||
|     - name: Build keepass2android (nonet) |     - name: Build keepass2android (nonet) | ||||||
|       run: | |       run: | | ||||||
|         make msbuild Flavor=NoNet |         make msbuild Flavor=NoNet | ||||||
|  |  | ||||||
|     - name: Test Autofill |     - name: Test Autofill | ||||||
|       working-directory: ./src/Kp2aAutofillParser.Tests |       working-directory: ./src/Kp2aAutofillParser.Tests | ||||||
|       run: dotnet test |       run: dotnet test | ||||||
| @@ -348,5 +361,3 @@ jobs: | |||||||
|         path: | |         path: | | ||||||
|           src/keepass2android/bin/*/*-Signed.apk |           src/keepass2android/bin/*/*-Signed.apk | ||||||
|  |  | ||||||
|     - name: Perform "make distclean" |  | ||||||
|       run: make distclean |  | ||||||
|   | |||||||
| @@ -1,19 +1,21 @@ | |||||||
| name: Create keepass2android release | name: Create keepass2android release | ||||||
| env: | env: | ||||||
|   NAME: 'ReleaseNet' |   NAME: 'Release' | ||||||
| 
 | 
 | ||||||
| on: | on: | ||||||
|   release: |   push: | ||||||
|     types: [published]  # Trigger when a new GitHub release is published |     tags: | ||||||
|   workflow_dispatch: # For manual testing |       - "v1.*" | ||||||
| 
 |  | ||||||
| jobs: | jobs: | ||||||
| 
 | 
 | ||||||
|   build-release: |   build-release: | ||||||
| 
 | 
 | ||||||
|     runs-on: windows-2022 |     runs-on: windows-2022 | ||||||
| 
 | 
 | ||||||
| 
 |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         flavor: [Net, NoNet] | ||||||
|  |         target: [apk, apk_split] | ||||||
| 
 | 
 | ||||||
|     steps: |     steps: | ||||||
|      |      | ||||||
| @@ -76,38 +78,47 @@ jobs: | |||||||
|       run: | |       run: | | ||||||
|         make java |         make java | ||||||
| 
 | 
 | ||||||
|     - name: Install NuGet dependencies (net) |     - name: Update dotnet workloads | ||||||
|       run: make nuget Flavor=Net |  | ||||||
| 
 |  | ||||||
|     - name: Use the _net manifest |  | ||||||
|       run: | |       run: | | ||||||
|         make manifestlink Flavor=Net |         dotnet workload update         | ||||||
| 
 | 
 | ||||||
|  |     - name: Select the manifest | ||||||
|  |       run: | | ||||||
|  |         make manifestlink Flavor=${{ matrix.flavor }} | ||||||
| 
 | 
 | ||||||
|  |     - name: Install NuGet dependencies | ||||||
|  |       run: make nuget Flavor=${{ matrix.flavor }} | ||||||
| 
 | 
 | ||||||
|     - name: Build APK (net) |     - name: Build APK (net) | ||||||
|       env: |       env: | ||||||
|         KeyStore: "${{ github.workspace }}/kp2a.keystore" |         KeyStore: "${{ github.workspace }}/kp2a.keystore" | ||||||
|         MyAndroidSigningStorePass: ${{ secrets.KEY_STORE_PASSWORD }} |         MyAndroidSigningStorePass: ${{ secrets.KEY_STORE_PASSWORD }} | ||||||
|         MyAndroidSigningKeyPass: ${{ secrets.KEY_PASSWORD }} |         MyAndroidSigningKeyPass: ${{ secrets.KEY_PASSWORD }} | ||||||
|  |         DropboxAppKey: ${{ secrets.DROPBOX_APP_KEY }} | ||||||
|  |         DropboxAppSecret: ${{ secrets.DROPBOX_APP_SECRET }} | ||||||
|  |         DropboxAppFolderAppKey: ${{ secrets.DROPBOX_APP_FOLDER_APP_KEY }} | ||||||
|  |         DropboxAppFolderAppSecret: ${{ secrets.DROPBOX_APP_FOLDER_APP_SECRET }} | ||||||
|  | 
 | ||||||
|       run: | |       run: | | ||||||
|         make Configuration=Release Flavor=Net |         make ${{ matrix.target }} Configuration=Release Flavor=${{ matrix.flavor }} | ||||||
| 
 | 
 | ||||||
|     - name: List files |     - name: List files | ||||||
|       shell: bash |       shell: bash | ||||||
|       run: | |       run: | | ||||||
|         ls src/keepass2android-app/bin/**/*.* |         ls src/keepass2android-app/bin/Release/net8.0-android/publish/*.apk | ||||||
|  |         ls src/keepass2android-app/bin/Release/net8.0-android/*/publish/*.apk | ||||||
| 
 | 
 | ||||||
|     - name: Archive production artifacts (net) |     - name: Archive production artifacts | ||||||
|       uses: actions/upload-artifact@v4 |       uses: actions/upload-artifact@v4 | ||||||
|       with: |       with: | ||||||
|         name: signed APK ('net' built on ${{ github.job }}) |         name: keepass2android_${{ matrix.target }}_${{ matrix.flavor }} | ||||||
|         path: | |         path: | | ||||||
|           src/keepass2android-app/bin/Release/net8.0-android/*-Signed.apk |           src/keepass2android-app/bin/Release/net8.0-android/publish/*.apk | ||||||
|  |           src/keepass2android-app/bin/Release/net8.0-android/*/publish/*.apk | ||||||
|      |      | ||||||
|     - name: Upload APK to GitHub Release |     #- name: Upload APK to GitHub Release | ||||||
|       uses: softprops/action-gh-release@v2 |     #  uses: softprops/action-gh-release@v2 | ||||||
|       if: github.ref_type == 'tag' |     #  if: github.ref_type == 'tag' | ||||||
|       with: |     #  with: | ||||||
|         files: | |     #    files: | | ||||||
|             src/keepass2android-app/bin/Release/net8.0-android/*-Signed.apk |     #        src/keepass2android-app/bin/Release/net8.0-android/*/publish/*.apk src/keepass2android-app/bin/Release/net8.0-android/publish/*.apk | ||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -64,7 +64,7 @@ Thumbs.db | |||||||
| /src/java/android-filechooser/code/projectzip/project.zip | /src/java/android-filechooser/code/projectzip/project.zip | ||||||
| /src/java/android-filechooser/code/unused.txt | /src/java/android-filechooser/code/unused.txt | ||||||
|  |  | ||||||
| /src/Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs | /src/Kp2aBusinessLogic/Io/DropboxFileStorage.g.cs | ||||||
|  |  | ||||||
| /src/java/workspace/DriveTest | /src/java/workspace/DriveTest | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								Makefile
									
									
									
									
									
								
							| @@ -62,11 +62,11 @@ $(info ) | |||||||
|  |  | ||||||
| # On linux use xabuild, on Windows use MSBuild.exe, otherwise (macos?) use msbuild. | # On linux use xabuild, on Windows use MSBuild.exe, otherwise (macos?) use msbuild. | ||||||
| ifeq ($(detected_OS),Linux) | ifeq ($(detected_OS),Linux) | ||||||
|   MSBUILD_binary := xabuild |   MSBUILD_binary := dotnet | ||||||
|   MSBUILD := $(shell $(WHICH) $(MSBUILD_binary)) |   MSBUILD := $(shell $(WHICH) $(MSBUILD_binary)) publish | ||||||
| else ifeq ($(detected_OS),Windows) | else ifeq ($(detected_OS),Windows) | ||||||
|   MSBUILD_binary := MSBuild.exe |   MSBUILD_binary := dotnet | ||||||
|   MSBUILD := $(shell $(WHICH) $(MSBUILD_binary) 2> nul) |   MSBUILD := $(shell $(WHICH) $(MSBUILD_binary) 2> nul) publish | ||||||
|   ifeq ($(MSBUILD),) |   ifeq ($(MSBUILD),) | ||||||
|     # Additional heuristic to find MSBUILD_BINARY on Windows |     # Additional heuristic to find MSBUILD_BINARY on Windows | ||||||
|     VSWHERE := "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" |     VSWHERE := "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" | ||||||
| @@ -312,19 +312,20 @@ manifestlink: | |||||||
| 	$(CREATE_MANIFEST_LINK)	 | 	$(CREATE_MANIFEST_LINK)	 | ||||||
|  |  | ||||||
| ##### | ##### | ||||||
| src/Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs: |  | ||||||
| ifeq ($(detected_OS),Windows) |  | ||||||
| 	$(CP) src\Kp2aBusinessLogic\Io\DropboxFileStorageKeysDummy.cs src\Kp2aBusinessLogic\Io\DropboxFileStorageKeys.cs |  | ||||||
| else |  | ||||||
| 	$(CP) src/Kp2aBusinessLogic/Io/DropboxFileStorageKeysDummy.cs $@ |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| msbuild: manifestlink native java nuget src/Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs | msbuild: manifestlink native java nuget  | ||||||
| 	$(MSBUILD) src/KeePass.sln -target:keepass2android-app -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -p:BuildProjectReferences=true $(MSBUILD_PARAM) -p:Platform="Any CPU" -m | 	$(MSBUILD) src/KeePass.sln -target:keepass2android-app -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -p:BuildProjectReferences=true $(MSBUILD_PARAM) -p:Platform="Any CPU" -m | ||||||
|  |  | ||||||
| apk: msbuild  | apk: msbuild  | ||||||
| 	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m  | 	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m  | ||||||
|  |  | ||||||
|  | apk_split: msbuild | ||||||
|  | 	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m -p:RuntimeIdentifier=android-arm | ||||||
|  | 	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m -p:RuntimeIdentifier=android-arm64 | ||||||
|  | 	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m -p:RuntimeIdentifier=android-x86 | ||||||
|  | 	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m -p:RuntimeIdentifier=android-x64 | ||||||
|  | 	src/build-scripts/rename-output-apks.sh src/keepass2android-app/bin/Release/net8.0-android/ | ||||||
|  |  | ||||||
| build_all: msbuild | build_all: msbuild | ||||||
|  |  | ||||||
| ##### Cleanup targets | ##### Cleanup targets | ||||||
|   | |||||||
| @@ -58,7 +58,8 @@ | |||||||
|       "IsFocused": false, |       "IsFocused": false, | ||||||
|       "InputType": 97, |       "InputType": 97, | ||||||
|       "HtmlInfoTag": null, |       "HtmlInfoTag": null, | ||||||
|       "HtmlInfoTypeAttribute": null |       "HtmlInfoTypeAttribute": null, | ||||||
|  |       "ExpectedAssignedHints": [ "username" ] | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "IdEntry": "password_text_input_layout", |       "IdEntry": "password_text_input_layout", | ||||||
| @@ -81,6 +82,7 @@ | |||||||
|       "InputType": 129, |       "InputType": 129, | ||||||
|       "HtmlInfoTag": null, |       "HtmlInfoTag": null, | ||||||
|       "HtmlInfoTypeAttribute": null, |       "HtmlInfoTypeAttribute": null, | ||||||
|  |       "ExpectedAssignedHints": [ "password" ] | ||||||
|  |  | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -801,7 +801,7 @@ namespace Kp2aAutofillParser | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public AutofillTargetId ParseForFill(bool isManual, AutofillView<FieldT> autofillView) |         public AutofillTargetId ParseForFill(AutofillView<FieldT> autofillView) | ||||||
|         { |         { | ||||||
|             return Parse(true, autofillView); |             return Parse(true, autofillView); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -1,13 +0,0 @@ | |||||||
| namespace keepass2android.Io |  | ||||||
| { |  | ||||||
| 	public partial class DropboxFileStorage |  | ||||||
| 	{ |  | ||||||
| 		private const string AppKey = "dummy"; |  | ||||||
| 		private const string AppSecret = "dummy"; |  | ||||||
| 	} |  | ||||||
| 	public partial class DropboxAppFolderFileStorage |  | ||||||
| 	{ |  | ||||||
| 		private const string AppKey = "dummy"; |  | ||||||
| 		private const string AppSecret = "dummy"; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										27
									
								
								src/Kp2aBusinessLogic/Io/GenerateSecrets.targets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/Kp2aBusinessLogic/Io/GenerateSecrets.targets
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | <Project> | ||||||
|  |   <Target Name="GenerateDropboxSecrets" BeforeTargets="BeforeCompile" | ||||||
|  |   Inputs="@(DropboxSecretLines)" | ||||||
|  |   Outputs="DropboxFileStorage.g.cs"> | ||||||
|  |  | ||||||
|  |     <WriteLinesToFile | ||||||
|  |     File="Io/DropboxFileStorage.g.cs" | ||||||
|  |       Lines="@(DropboxSecretLines->'%(Text)')" | ||||||
|  |       Overwrite="true" | ||||||
|  |       /> | ||||||
|  |   </Target> | ||||||
|  |  | ||||||
|  |   <ItemGroup> | ||||||
|  |     <DropboxSecretLines Include="GeneratedDropboxSecrets"> | ||||||
|  |       <Text>namespace keepass2android.Io { | ||||||
|  |     public partial class DropboxFileStorage { | ||||||
|  |       private const string AppKey = "$(DropboxAppKey)"; | ||||||
|  |       private const string AppSecret = "$(DropboxAppSecret)"; | ||||||
|  |     } | ||||||
|  |     public partial class DropboxAppFolderFileStorage { | ||||||
|  |       private const string AppKey = "$(DropboxAppFolderAppKey)"; | ||||||
|  |       private const string AppSecret = "$(DropboxAppFolderAppSecret)"; | ||||||
|  |     } | ||||||
|  |   }</Text> | ||||||
|  |     </DropboxSecretLines> | ||||||
|  |   </ItemGroup> | ||||||
|  | </Project> | ||||||
| @@ -4,30 +4,43 @@ | |||||||
|     <SupportedOSPlatformVersion>21</SupportedOSPlatformVersion> |     <SupportedOSPlatformVersion>21</SupportedOSPlatformVersion> | ||||||
|     <Nullable>enable</Nullable> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|  |     <DefineConstants Condition="'$(Flavor)'=='NoNet'">NO_QR_SCANNER;EXCLUDE_JAVAFILESTORAGE;NoNet</DefineConstants> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <Folder Include="Resources\" /> |     <Folder Include="Resources\" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="FluentFTP" Version="51.1.0" /> |     <PackageReference Include="FluentFTP" Version="51.1.0" Condition="'$(Flavor)'!='NoNet'"/> | ||||||
|     <PackageReference Include="MegaApiClient" Version="1.10.4" /> |     <PackageReference Include="MegaApiClient" Version="1.10.4"  Condition="'$(Flavor)'!='NoNet'"/> | ||||||
|     <PackageReference Include="Microsoft.Graph" Version="5.68.0" /> |     <PackageReference Include="Microsoft.Graph" Version="5.68.0" Condition="'$(Flavor)'!='NoNet'"/> | ||||||
|     <PackageReference Include="Microsoft.Identity.Client" Version="4.67.1" /> |     <PackageReference Include="Microsoft.Identity.Client" Version="4.67.1" Condition="'$(Flavor)'!='NoNet'"/> | ||||||
|     <PackageReference Include="Xamarin.AndroidX.Browser" Version="1.8.0" /> |     <PackageReference Include="Xamarin.AndroidX.Browser" Version="1.8.0" /> | ||||||
|     <PackageReference Include="Xamarin.AndroidX.Core" Version="1.13.1.5" /> |     <PackageReference Include="Xamarin.AndroidX.Core" Version="1.13.1.5" /> | ||||||
|     <PackageReference Include="Xamarin.Google.Android.Material" Version="1.11.0.3" /> |     <PackageReference Include="Xamarin.Google.Android.Material" Version="1.11.0.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj" /> |     <ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj" /> | ||||||
|     <ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj" /> |     <ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj" Condition="'$(Flavor)'!='NoNet'"  /> | ||||||
|     <ProjectReference Include="..\KeePassLib2Android\KeePassLib2Android.csproj" /> |     <ProjectReference Include="..\KeePassLib2Android\KeePassLib2Android.csproj" /> | ||||||
|     <ProjectReference Include="..\KP2AKdbLibraryBinding\KP2AKdbLibraryBinding.csproj" /> |     <ProjectReference Include="..\KP2AKdbLibraryBinding\KP2AKdbLibraryBinding.csproj" /> | ||||||
|     <ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj" /> |     <ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|   <None Remove="Io/DropboxFileStorageKeysDummy.cs" /> |  | ||||||
|   <Compile Remove="Io/DropboxFileStorageKeysDummy.cs" /> | </ItemGroup> | ||||||
|   <Content Remove="Io/DropboxFileStorageKeysDummy.cs" /> | <ItemGroup  Condition="'$(Flavor)'=='NoNet'"> | ||||||
|  |   <None Remove="Io/OneDrive2FileStorage.cs" /> | ||||||
|  |   <Compile Remove="Io/OneDrive2FileStorage.cs" /> | ||||||
|  |   <Content Remove="Io/OneDrive2FileStorage.cs" /> | ||||||
|  |   <None Remove="Io/MegaFileStorage.cs" /> | ||||||
|  |   <Compile Remove="Io/MegaFileStorage.cs" /> | ||||||
|  |   <Content Remove="Io/MegaFileStorage.cs" /> | ||||||
| </ItemGroup> | </ItemGroup> | ||||||
|  |  | ||||||
|  | <Import Project="Io/GenerateSecrets.targets" /> | ||||||
|  | <ItemGroup> | ||||||
|  | <Compile Include="Io/DropboxFileStorage.g.cs" /> | ||||||
|  | </ItemGroup> | ||||||
|  |  | ||||||
|  |    | ||||||
| </Project> | </Project> | ||||||
| @@ -20,7 +20,6 @@ git clone --recurse-submodules https://github.com/PhilippC/keepass2android.git | |||||||
| cd keepass2android/src/build-scripts | cd keepass2android/src/build-scripts | ||||||
| ./build-java.sh && ./build-native.sh | ./build-java.sh && ./build-native.sh | ||||||
| cd .. | cd .. | ||||||
| cp Kp2aBusinessLogic/Io/DropboxFileStorageKeysDummy.cs Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs |  | ||||||
| cd keepass2android-app | cd keepass2android-app | ||||||
| ln -s Manifests/AndroidManifest_debug.xml AndroidManifest.xml | ln -s Manifests/AndroidManifest_debug.xml AndroidManifest.xml | ||||||
| dotnet workload restore | dotnet workload restore | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								src/build-scripts/rename-output-apks.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/build-scripts/rename-output-apks.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | BASE_DIR="${1}" | ||||||
|  |  | ||||||
|  | for arch_dir in "$BASE_DIR"/android-*/; do | ||||||
|  |   arch=$(basename "$arch_dir") | ||||||
|  |   arch=${arch#android-} | ||||||
|  |   APK_DIR="${arch_dir}publish" | ||||||
|  |   if [[ -d "$APK_DIR" ]]; then | ||||||
|  |     apk_path=$(find "$APK_DIR" -maxdepth 1 -type f -name "*.apk" | head -n1) | ||||||
|  |     if [[ -n "$apk_path" ]]; then | ||||||
|  |       base=$(basename "$apk_path" .apk) | ||||||
|  |       new_path="$APK_DIR/${base}-${arch}.apk" | ||||||
|  |       mv "$apk_path" "$new_path" | ||||||
|  |       echo "Renamed $apk_path to $new_path" | ||||||
|  |     else | ||||||
|  |       echo "No APK found in $APK_DIR" | ||||||
|  |     fi | ||||||
|  |   else | ||||||
|  |     echo "Directory $APK_DIR does not exist" | ||||||
|  |   fi | ||||||
|  | done | ||||||
| @@ -6,8 +6,7 @@ | |||||||
|         android:allowBackup="true" |         android:allowBackup="true" | ||||||
|         android:icon="@mipmap/ic_launcher" |         android:icon="@mipmap/ic_launcher" | ||||||
|         android:label="@string/app_name" |         android:label="@string/app_name" | ||||||
|         android:supportsRtl="true" |         android:supportsRtl="true"> | ||||||
|         android:theme="@style/AppTheme"> |  | ||||||
|         <activity android:name="com.crocoapps.javafilestoragetest2.MainActivity" |         <activity android:name="com.crocoapps.javafilestoragetest2.MainActivity" | ||||||
|                   android:exported="true"> |                   android:exported="true"> | ||||||
|             <intent-filter> |             <intent-filter> | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ using keepass2android.services.AutofillBase; | |||||||
|  |  | ||||||
| namespace keepass2android | namespace keepass2android | ||||||
| { | { | ||||||
|     [Activity(Label = "DisableAutofillForQueryActivity")] |     [Activity(Label = "DisableAutofillForQueryActivity", Theme = "@style/Kp2aTheme_ActionBar")] | ||||||
|     public class DisableAutofillForQueryActivity : Activity |     public class DisableAutofillForQueryActivity : Activity | ||||||
|     { |     { | ||||||
|         public IAutofillIntentBuilder IntentBuilder = new Kp2aAutofillIntentBuilder(); |         public IAutofillIntentBuilder IntentBuilder = new Kp2aAutofillIntentBuilder(); | ||||||
|   | |||||||
| @@ -37,8 +37,10 @@ using System.Net; | |||||||
| using System.Text; | using System.Text; | ||||||
| using Android.Content.Res; | using Android.Content.Res; | ||||||
| using Android.Database; | using Android.Database; | ||||||
|  | #if !NO_QR_SCANNER | ||||||
| using Android.Gms.Common; | using Android.Gms.Common; | ||||||
| using Android.Gms.Tasks; | using Android.Gms.Tasks; | ||||||
|  | #endif | ||||||
| using Android.Graphics; | using Android.Graphics; | ||||||
| using Android.Graphics.Drawables; | using Android.Graphics.Drawables; | ||||||
| using Android.Runtime; | using Android.Runtime; | ||||||
| @@ -55,10 +57,11 @@ using Object = Java.Lang.Object; | |||||||
| using Uri = Android.Net.Uri; | using Uri = Android.Net.Uri; | ||||||
| using Resource = keepass2android.Resource; | using Resource = keepass2android.Resource; | ||||||
| using Google.Android.Material.TextField; | using Google.Android.Material.TextField; | ||||||
|  | #if !NO_QR_SCANNER | ||||||
| using Xamarin.Google.MLKit.Vision.Barcode.Common; | using Xamarin.Google.MLKit.Vision.Barcode.Common; | ||||||
| using Xamarin.Google.MLKit.Vision.CodeScanner; | using Xamarin.Google.MLKit.Vision.CodeScanner; | ||||||
|  | #endif | ||||||
| using Console = System.Console; | using Console = System.Console; | ||||||
| using Task = Android.Gms.Tasks.Task; |  | ||||||
|  |  | ||||||
| namespace keepass2android | namespace keepass2android | ||||||
| { | { | ||||||
| @@ -1158,8 +1161,10 @@ namespace keepass2android | |||||||
|             { |             { | ||||||
|                 dlgView.FindViewById(Resource.Id.totp_custom_settings_group).Visibility = args.IsChecked ? ViewStates.Visible : ViewStates.Gone; |                 dlgView.FindViewById(Resource.Id.totp_custom_settings_group).Visibility = args.IsChecked ? ViewStates.Visible : ViewStates.Gone; | ||||||
|             }; |             }; | ||||||
|  | #if NO_QR_SCANNER | ||||||
|             dlgView.FindViewById<Button>(Resource.Id.totp_scan).Click += async (object o, EventArgs args) => |             dlgView.FindViewById<Button>(Resource.Id.totp_scan).Visibility = ViewStates.Gone; | ||||||
|  | #else | ||||||
|  | 			dlgView.FindViewById<Button>(Resource.Id.totp_scan).Click += async (object o, EventArgs args) => | ||||||
|             { |             { | ||||||
|                 if (GoogleApiAvailability.Instance.IsGooglePlayServicesAvailable(this) != ConnectionResult.Success) |                 if (GoogleApiAvailability.Instance.IsGooglePlayServicesAvailable(this) != ConnectionResult.Success) | ||||||
|                 { |                 { | ||||||
| @@ -1194,6 +1199,7 @@ namespace keepass2android | |||||||
|  |  | ||||||
|  |  | ||||||
|             }; |             }; | ||||||
|  | #endif | ||||||
|  |  | ||||||
| 			//copy values from entry into dialog | 			//copy values from entry into dialog | ||||||
| 			View ees = (View)sender.Parent; | 			View ees = (View)sender.Parent; | ||||||
| @@ -1572,6 +1578,7 @@ namespace keepass2android | |||||||
|  |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | #if !NO_QR_SCANNER | ||||||
|     public class SuccessListener : Object, IOnSuccessListener |     public class SuccessListener : Object, IOnSuccessListener | ||||||
|     { |     { | ||||||
|         private readonly Action<Barcode> _onSuccess; |         private readonly Action<Barcode> _onSuccess; | ||||||
| @@ -1601,8 +1608,9 @@ namespace keepass2android | |||||||
|             _onFailure?.Invoke(e); |             _onFailure?.Invoke(e); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     public class DefaultEdit : EditModeBase | 	public class DefaultEdit : EditModeBase | ||||||
| 	{ | 	{ | ||||||
| 		 | 		 | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -1,10 +1,10 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
| 			android:versionCode="211" |       android:versionCode="217" | ||||||
| 			android:versionName="1.12-r7" |       android:versionName="1.12-r9c" | ||||||
| 			package="keepass2android.keepass2android" |       package="keepass2android.keepass2android" | ||||||
| 			xmlns:tools="http://schemas.android.com/tools" |       xmlns:tools="http://schemas.android.com/tools" | ||||||
| 			android:installLocation="auto"> |       android:installLocation="auto"> | ||||||
|  |  | ||||||
|  |  | ||||||
|   <queries> |   <queries> | ||||||
| @@ -46,13 +46,11 @@ | |||||||
|  |  | ||||||
|   <permission android:description="@string/permission_desc2" android:icon="@drawable/ic_launcher" android:label="KP2A entry search" android:name="keepass2android.keepass2android.permission.KP2aInternalSearch" android:protectionLevel="signature" /> |   <permission android:description="@string/permission_desc2" android:icon="@drawable/ic_launcher" android:label="KP2A entry search" android:name="keepass2android.keepass2android.permission.KP2aInternalSearch" android:protectionLevel="signature" /> | ||||||
|   <permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android.permission.Kp2aChooseAutofill" android:protectionLevel="signature" /> |   <permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android.permission.Kp2aChooseAutofill" android:protectionLevel="signature" /> | ||||||
|  |  | ||||||
|   <application android:label="keepass2android" |   <application android:label="keepass2android" | ||||||
| 	android:icon="@mipmap/ic_launcher_online" |     android:icon="@mipmap/ic_launcher_online" | ||||||
| 	android:roundIcon="@mipmap/ic_launcher_online_round" |     android:roundIcon="@mipmap/ic_launcher_online_round" | ||||||
| 	android:networkSecurityConfig="@xml/network_security_config" |     android:networkSecurityConfig="@xml/network_security_config" | ||||||
|  |   > | ||||||
| 	> |  | ||||||
|  |  | ||||||
|     <meta-data |     <meta-data | ||||||
|       android:name="com.google.mlkit.vision.DEPENDENCIES" |       android:name="com.google.mlkit.vision.DEPENDENCIES" | ||||||
| @@ -107,16 +105,15 @@ | |||||||
|       </intent-filter> |       </intent-filter> | ||||||
|     </activity> |     </activity> | ||||||
|     <activity android:name="keepass2android.softkeyboard.InputLanguageSelection" |     <activity android:name="keepass2android.softkeyboard.InputLanguageSelection" | ||||||
|                |  | ||||||
|                android:exported="true"> |                android:exported="true"> | ||||||
|       <!-- android:label="@string/language_selection_title" TODO  --> |  | ||||||
|       <intent-filter> |       <intent-filter> | ||||||
|         <action android:name="android.intent.action.MAIN"/> |         <action android:name="android.intent.action.MAIN"/> | ||||||
|         <action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/> |         <action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/> | ||||||
|         <category android:name="android.intent.category.DEFAULT" /> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
|       </intent-filter> |       </intent-filter> | ||||||
|     </activity> |     </activity> | ||||||
|     <activity android:configChanges="orientation|keyboard|keyboardHidden" android:label="@string/app_name" android:theme="@style/Kp2aTheme_BlueNoActionBar" android:name="keepass2android.SelectCurrentDbActivity"  android:windowSoftInputMode="adjustResize" android:exported="true"> |     <activity android:configChanges="orientation|keyboard|keyboardHidden" android:label="@string/app_name" android:theme="@style/Kp2aTheme_BlueNoActionBar" android:name="keepass2android.SelectCurrentDbActivity" android:windowSoftInputMode="adjustResize" | ||||||
|  |     android:exported="true"> | ||||||
|       <intent-filter android:label="@string/app_name"> |       <intent-filter android:label="@string/app_name"> | ||||||
|         <action android:name="android.intent.action.VIEW" /> |         <action android:name="android.intent.action.VIEW" /> | ||||||
|         <category android:name="android.intent.category.DEFAULT" /> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
|   | |||||||
| @@ -1,24 +1,27 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
| 			android:versionCode="200"  |       android:versionCode="217" | ||||||
| 			android:versionName="1.11-r0"  |       android:versionName="1.12-r9c" | ||||||
| 			package="keepass2android.keepass2android_nonet" |       package="keepass2android.keepass2android_nonet" | ||||||
| 			xmlns:tools="http://schemas.android.com/tools" |       xmlns:tools="http://schemas.android.com/tools" | ||||||
| 			android:installLocation="auto"> |       android:installLocation="auto"> | ||||||
|  |  | ||||||
|  |  | ||||||
|   <queries> |   <queries> | ||||||
|     <!-- Specific intents and packages we query for (required since Android 11) --> |     <!-- Specific intents and packages we query for (required since Android 11) --> | ||||||
|     <package android:name="keepass2android.plugin.keyboardswap2" /> |     <package android:name="keepass2android.plugin.keyboardswap2" /> | ||||||
|     <package android:name="keepass2android.AncientIconSet" /> |     <package android:name="keepass2android.AncientIconSet" /> | ||||||
| 	<package android:name="com.dropbox.android" /> |     <package android:name="keepass2android.plugin.qr" /> | ||||||
|  |     <package android:name="it.andreacioni.kp2a.plugin.keelink" /> | ||||||
|  |     <package android:name="com.inputstick.apps.kp2aplugin" /> | ||||||
|  |     <package android:name="com.dropbox.android" /> | ||||||
|  |  | ||||||
|     <intent> |     <intent> | ||||||
|         <action android:name="android.intent.action.OPEN_DOCUMENT" /> |       <action android:name="android.intent.action.OPEN_DOCUMENT" /> | ||||||
|         <data android:mimeType="*/*" /> |       <data android:mimeType="*/*" /> | ||||||
|       </intent> |     </intent> | ||||||
|  |  | ||||||
| 	  <intent> |     <intent> | ||||||
|       <action android:name="android.intent.action.GET_DOCUMENT" /> |       <action android:name="android.intent.action.GET_DOCUMENT" /> | ||||||
|       <data android:mimeType="*/*" /> |       <data android:mimeType="*/*" /> | ||||||
|     </intent> |     </intent> | ||||||
| @@ -36,59 +39,57 @@ | |||||||
|     </intent> |     </intent> | ||||||
|  |  | ||||||
|     <intent> |     <intent> | ||||||
|         <action android:name="android.intent.action.VIEW" /> |       <action android:name="android.intent.action.VIEW" /> | ||||||
| 	  </intent> |     </intent> | ||||||
|   </queries> |   </queries> | ||||||
|  |   <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="34" /> | ||||||
|  |  | ||||||
| 	<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="34" /> |  | ||||||
|   <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_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" /> |   <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  |   <application android:label="keepass2android" | ||||||
| 		android:label="keepass2android"  |     android:icon="@mipmap/ic_launcher_offline" | ||||||
| 		android:icon="@mipmap/ic_launcher_offline" |     android:roundIcon="@mipmap/ic_launcher_offline_round" | ||||||
| 		android:networkSecurityConfig="@xml/network_security_config" |     android:networkSecurityConfig="@xml/network_security_config" | ||||||
| 	> |   > | ||||||
|  |  | ||||||
|     <meta-data |     <meta-data | ||||||
|       android:name="com.google.mlkit.vision.DEPENDENCIES" |       android:name="com.google.mlkit.vision.DEPENDENCIES" | ||||||
|       android:value="barcode_ui"/> |       android:value="barcode_ui"/> | ||||||
|  |  | ||||||
| 		<uses-library |     <uses-library | ||||||
|             android:name="org.apache.http.legacy" |             android:name="org.apache.http.legacy" | ||||||
|             android:required="false"/> |             android:required="false"/> | ||||||
|    |    | ||||||
| 		<provider android:name="group.pals.android.lib.ui.filechooser.providers.localfile.LocalFileProvider" android:authorities="keepass2android.keepass2android_nonet.android-filechooser.localfile" android:exported="false" /> |     <provider android:name="group.pals.android.lib.ui.filechooser.providers.localfile.LocalFileProvider" android:authorities="keepass2android.keepass2android_nonet.android-filechooser.localfile" android:exported="false" /> | ||||||
| 		<provider android:name="group.pals.android.lib.ui.filechooser.providers.history.HistoryProvider" android:authorities="keepass2android.keepass2android_nonet.android-filechooser.history" android:exported="false" /> |     <provider android:name="group.pals.android.lib.ui.filechooser.providers.history.HistoryProvider" android:authorities="keepass2android.keepass2android_nonet.android-filechooser.history" android:exported="false" /> | ||||||
| 		<activity android:name="group.pals.android.lib.ui.filechooser.FileChooserActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:screenOrientation="user" android:theme="@style/Afc.Theme.Light"> |     <activity android:name="group.pals.android.lib.ui.filechooser.FileChooserActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:screenOrientation="user" android:theme="@style/Afc.Theme.Light"> | ||||||
| 		</activity> |     </activity> | ||||||
|  |  | ||||||
| 		<service android:name="keepass2android.softkeyboard.KP2AKeyboard" android:permission="android.permission.BIND_INPUT_METHOD" android:exported="true"> |     <service android:name="keepass2android.softkeyboard.KP2AKeyboard" android:permission="android.permission.BIND_INPUT_METHOD" android:exported="true"> | ||||||
| 			<intent-filter> |       <intent-filter> | ||||||
| 				<action android:name="android.view.InputMethod" /> |         <action android:name="android.view.InputMethod" /> | ||||||
| 			</intent-filter> |       </intent-filter> | ||||||
| 			<meta-data android:name="android.view.im" android:resource="@xml/method" /> |       <meta-data android:name="android.view.im" android:resource="@xml/method" /> | ||||||
| 		</service> |     </service> | ||||||
| 		<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="@string/english_ime_settings" android:exported="true"> |     <activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="@string/english_ime_settings" android:exported="true"> | ||||||
| 			<intent-filter> |       <intent-filter> | ||||||
| 				<action android:name="android.intent.action.MAIN" /> |         <action android:name="android.intent.action.MAIN" /> | ||||||
| 			</intent-filter> |       </intent-filter> | ||||||
| 			<intent-filter> |       <intent-filter> | ||||||
| 				<action android:name="keepass2android.softkeyboard.LatinIMESettings" /> |         <action android:name="keepass2android.softkeyboard.LatinIMESettings" /> | ||||||
| 				<category android:name="android.intent.category.DEFAULT" /> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
| 			</intent-filter> |       </intent-filter> | ||||||
| 		</activity> |     </activity> | ||||||
| 		 <activity android:name="keepass2android.softkeyboard.InputLanguageSelection" |     <activity android:name="keepass2android.softkeyboard.InputLanguageSelection" | ||||||
|                 android:label="@string/language_selection_title" |                android:exported="true"> | ||||||
|                 android:exported="true"> |       <intent-filter> | ||||||
|             <intent-filter> |         <action android:name="android.intent.action.MAIN"/> | ||||||
|                 <action android:name="android.intent.action.MAIN"/> |         <action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/> | ||||||
|                 <action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
|                 <category android:name="android.intent.category.DEFAULT" /> |       </intent-filter> | ||||||
|             </intent-filter> |     </activity> | ||||||
|         </activity> |     <activity android:configChanges="orientation|keyboard|keyboardHidden" android:label="@string/app_name" android:theme="@style/Kp2aTheme_BlueNoActionBar" android:name="keepass2android.SelectCurrentDbActivity" android:windowSoftInputMode="adjustResize" | ||||||
|   |     android:exported="true"> | ||||||
| 		<activity android:configChanges="orientation|keyboard|keyboardHidden" android:label="@string/app_name" android:theme="@style/Kp2aTheme_BlueNoActionBar" android:name="keepass2android.SelectCurrentDbActivity" android:windowSoftInputMode="adjustResize" |  | ||||||
|               android:exported="true"> |  | ||||||
|       <intent-filter android:label="@string/app_name"> |       <intent-filter android:label="@string/app_name"> | ||||||
|         <action android:name="android.intent.action.VIEW" /> |         <action android:name="android.intent.action.VIEW" /> | ||||||
|         <category android:name="android.intent.category.DEFAULT" /> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
| @@ -98,7 +99,7 @@ | |||||||
|         <data android:host="*" /> |         <data android:host="*" /> | ||||||
|       </intent-filter> |       </intent-filter> | ||||||
|  |  | ||||||
| 	  <intent-filter> |       <intent-filter> | ||||||
|         <action android:name="kp2a.action.SelectCurrentDbActivity" /> |         <action android:name="kp2a.action.SelectCurrentDbActivity" /> | ||||||
|         <category android:name="android.intent.category.DEFAULT" /> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
|       </intent-filter> |       </intent-filter> | ||||||
| @@ -112,7 +113,7 @@ | |||||||
|         <data android:mimeType="application/*" /> |         <data android:mimeType="application/*" /> | ||||||
|       </intent-filter> |       </intent-filter> | ||||||
|  |  | ||||||
| <!-- intent filter for opening database files  |       <!-- intent filter for opening database files  | ||||||
| Note that this stopped working nicely with Android 7, see e.g. https://stackoverflow.com/a/26635162/292233 | Note that this stopped working nicely with Android 7, see e.g. https://stackoverflow.com/a/26635162/292233 | ||||||
| KP2A was using  | KP2A was using  | ||||||
| <data android:scheme="content" /> | <data android:scheme="content" /> | ||||||
| @@ -126,7 +127,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik | |||||||
| --> | --> | ||||||
|  |  | ||||||
|  |  | ||||||
| <!-- This intent filter is for apps which use content with a URI containing the extension but no specific mimeType, e.g. ASTRO file manager --> |       <!-- This intent filter is for apps which use content with a URI containing the extension but no specific mimeType, e.g. ASTRO file manager --> | ||||||
|  |  | ||||||
|       <intent-filter android:label="@string/app_name"> |       <intent-filter android:label="@string/app_name"> | ||||||
|         <action android:name="android.intent.action.VIEW" /> |         <action android:name="android.intent.action.VIEW" /> | ||||||
| @@ -168,7 +169,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik | |||||||
|       </intent-filter> |       </intent-filter> | ||||||
|  |  | ||||||
|       <!-- This intent filter is for apps which use content with a URI not containing the extension but at least specify mimeType=application/octet-stream, e.g. GoogleDrive or FolderSync --> |       <!-- This intent filter is for apps which use content with a URI not containing the extension but at least specify mimeType=application/octet-stream, e.g. GoogleDrive or FolderSync --> | ||||||
| <intent-filter android:label="@string/app_name"> |       <intent-filter android:label="@string/app_name"> | ||||||
|         <action android:name="android.intent.action.VIEW" /> |         <action android:name="android.intent.action.VIEW" /> | ||||||
|         <category android:name="android.intent.category.DEFAULT" /> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
|         <category android:name="android.intent.category.BROWSABLE" /> |         <category android:name="android.intent.category.BROWSABLE" /> | ||||||
| @@ -218,24 +219,15 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik | |||||||
|         <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" /> |         <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" /> | ||||||
|       </intent-filter> |       </intent-filter> | ||||||
|  |  | ||||||
|       <intent-filter> |       <intent-filter android:label="@string/kp2a_findUrl"> | ||||||
|         <action android:name="android.intent.action.VIEW"/> |         <action android:name="android.intent.action.SEND" /> | ||||||
|         <category android:name="android.intent.category.BROWSABLE"/> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
|         <data |         <data android:mimeType="text/plain" /> | ||||||
|           android:scheme="https" |       </intent-filter> | ||||||
|           android:host="my.yubico.com" |       <intent-filter> | ||||||
|           android:pathPrefix="/neo"/> |         <action android:name="keepass2android.ACTION_START_WITH_TASK" /> | ||||||
|  |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
|       </intent-filter> |       </intent-filter> | ||||||
| 	   |  | ||||||
| 			<intent-filter android:label="@string/kp2a_findUrl"> |  | ||||||
| 				<action android:name="android.intent.action.SEND" /> |  | ||||||
| 				<category android:name="android.intent.category.DEFAULT" /> |  | ||||||
| 				<data android:mimeType="text/plain" /> |  | ||||||
| 			</intent-filter> |  | ||||||
| 			<intent-filter> |  | ||||||
| 				<action android:name="keepass2android.ACTION_START_WITH_TASK" /> |  | ||||||
| 				<category android:name="android.intent.category.DEFAULT" /> |  | ||||||
| 			</intent-filter> |  | ||||||
|       <intent-filter> |       <intent-filter> | ||||||
|         <action android:name="android.intent.action.VIEW" /> |         <action android:name="android.intent.action.VIEW" /> | ||||||
|         <category android:name="android.intent.category.DEFAULT" /> |         <category android:name="android.intent.category.DEFAULT" /> | ||||||
| @@ -244,24 +236,28 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik | |||||||
|         <data android:host="totp"/> |         <data android:host="totp"/> | ||||||
|         <data android:host="hotp"/> |         <data android:host="hotp"/> | ||||||
|       </intent-filter> |       </intent-filter> | ||||||
| 		</activity> |     </activity> | ||||||
| 		<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" /> |     <uses-library android:required="false" android:name="com.sec.android.app.multiwindow" /> | ||||||
| 		<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" /> |     <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" /> | ||||||
| 		<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" /> |     <meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" /> | ||||||
| 		<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:value="598.0dip" /> |     <meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:value="598.0dip" /> | ||||||
| 		<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="426.0dip" /> |     <meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="426.0dip" /> | ||||||
| 		<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="360.0dip" /> |     <meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="360.0dip" /> | ||||||
| 	</application> |   </application> | ||||||
| 	<uses-permission android:name="android.permission.VIBRATE" /> |   <uses-permission android:name="android.permission.VIBRATE" /> | ||||||
| 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||||||
| 	<uses-permission android:name="android.permission.USE_FINGERPRINT" /> |   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | ||||||
|  |   <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> | ||||||
|  |   <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" /> | ||||||
|  |   <uses-permission android:name="keepass2android.keepass2android_nonet.permission.KP2aInternalFileBrowsing" /> | ||||||
|  |   <uses-permission android:name="keepass2android.keepass2android_nonet.permission.KP2aInternalSearch" /> | ||||||
|  |   <uses-permission android:name="android.permission.USE_FINGERPRINT" /> | ||||||
|   <uses-permission android:name="android.permission.USE_BIOMETRIC" /> |   <uses-permission android:name="android.permission.USE_BIOMETRIC" /> | ||||||
|   <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> |   <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> | ||||||
|  |  | ||||||
|   <uses-feature android:name="android.hardware.camera" android:required="false" /> |   <uses-feature android:name="android.hardware.camera" android:required="false" /> | ||||||
|  |  | ||||||
|   <uses-permission android:name="keepass2android.keepass2android_nonet.permission.KP2aInternalFileBrowsing" /> |   <!-- Samsung Pass permission --> | ||||||
|   <uses-permission android:name="keepass2android.keepass2android_nonet.permission.KP2aInternalSearch" /> |   <uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" /> | ||||||
|   <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" /> |   <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" /> | ||||||
| 	 |  | ||||||
| </manifest> | </manifest> | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ | |||||||
|     <ApplicationVersion>1</ApplicationVersion> |     <ApplicationVersion>1</ApplicationVersion> | ||||||
|     <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion> |     <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion> | ||||||
|     <AllowUnsafeBlocks>true</AllowUnsafeBlocks> |     <AllowUnsafeBlocks>true</AllowUnsafeBlocks> | ||||||
|  |     <DefineConstants Condition="'$(Flavor)'=='NoNet'">NO_QR_SCANNER;EXCLUDE_JAVAFILESTORAGE;NoNet</DefineConstants> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <None Remove="Assets\fontawesome-webfont.ttf" /> |     <None Remove="Assets\fontawesome-webfont.ttf" /> | ||||||
| @@ -750,18 +751,18 @@ | |||||||
|     <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.12" /> |     <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.12" /> | ||||||
|     <PackageReference Include="Xamarin.Google.Android.Material" Version="1.12.0.2" /> |     <PackageReference Include="Xamarin.Google.Android.Material" Version="1.12.0.2" /> | ||||||
|     <PackageReference Include="Xamarin.Google.Guava" Version="33.4.0.1" /> |     <PackageReference Include="Xamarin.Google.Guava" Version="33.4.0.1" /> | ||||||
|     <PackageReference Include="Xamarin.GooglePlayServices.Auth" Version="121.3.0.1" /> |     <PackageReference Include="Xamarin.GooglePlayServices.Auth" Version="121.3.0.1" Condition="'$(Flavor)'!='NoNet'" /> | ||||||
|     <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.5.0.4" /> |     <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.5.0.4" Condition="'$(Flavor)'!='NoNet'" /> | ||||||
|     <PackageReference Include="Xamarin.GooglePlayServices.Code.Scanner" Version="116.1.0.10" /> |     <PackageReference Include="Xamarin.GooglePlayServices.Code.Scanner" Version="116.1.0.10" Condition="'$(Flavor)'!='NoNet'" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj" /> |     <ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj" /> | ||||||
|     <ProjectReference Include="..\DropboxBinding\DropboxBinding.csproj" /> |     <ProjectReference Include="..\DropboxBinding\DropboxBinding.csproj" Condition="'$(Flavor)'!='NoNet'" /> | ||||||
|     <ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj" /> |     <ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj" Condition="'$(Flavor)'!='NoNet'" /> | ||||||
|     <ProjectReference Include="..\Kp2aAutofillParser\Kp2aAutofillParser.csproj" /> |     <ProjectReference Include="..\Kp2aAutofillParser\Kp2aAutofillParser.csproj" /> | ||||||
|     <ProjectReference Include="..\KP2AKdbLibraryBinding\KP2AKdbLibraryBinding.csproj" /> |     <ProjectReference Include="..\KP2AKdbLibraryBinding\KP2AKdbLibraryBinding.csproj" /> | ||||||
|     <ProjectReference Include="..\Kp2aKeyboardBinding\Kp2aKeyboardBinding.csproj" /> |     <ProjectReference Include="..\Kp2aKeyboardBinding\Kp2aKeyboardBinding.csproj" /> | ||||||
|     <ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj" /> |     <ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj" Condition="'$(Flavor)'!='NoNet'" /> | ||||||
|     <ProjectReference Include="..\PluginSdkBinding\PluginSdkBinding.csproj" /> |     <ProjectReference Include="..\PluginSdkBinding\PluginSdkBinding.csproj" /> | ||||||
|     <ProjectReference Include="..\ZlibAndroid\ZlibAndroid.csproj" /> |     <ProjectReference Include="..\ZlibAndroid\ZlibAndroid.csproj" /> | ||||||
|     <ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj" /> |     <ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj" /> | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ using KeePassLib.Serialization; | |||||||
|  |  | ||||||
| namespace keepass2android | namespace keepass2android | ||||||
| { | { | ||||||
|     [Activity] |     [Activity(Theme = "@style/Kp2aTheme_ActionBar")] | ||||||
|     public class ExportKeyfileActivity : LockCloseActivity |     public class ExportKeyfileActivity : LockCloseActivity | ||||||
|     { |     { | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user