make app-style app compilable

* switched from support library to androidx
 * disabled some code which will need to be fixed later (strings in manifest, zxing qr reader)
 * changes in styles need to be tested
still crashing when trying to use any code from the Keyboard binding.
This commit is contained in:
Philipp Crocoll
2024-11-19 09:29:10 +01:00
parent 43f6064faa
commit c32a6eae7a
152 changed files with 730 additions and 993 deletions

View File

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

View File

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

View File

@@ -4,19 +4,4 @@
<remove-node path="/api/package[@name='group.pals.android.lib.ui.filechooser.prefs']" />
<!--
<remove-node path="/api/package[@name='group.pals.android.lib.ui.filechooser']/class[@name='FragmentFiles']" />
<remove-node path="/api/package[@name='group.pals.android.lib.ui.filechooser.utils.ui.bookmark']/class[@name='BookmarkFragment']" />
<remove-node path="/api/package[@name='group.pals.android.lib.ui.filechooser.utils.ui.history']/class[@name='HistoryFragment']" />
<remove-node path="/api/package[@name='group.pals.android.lib.ui.filechooser.prefs']/class[@name='DisplayPrefs']" />
This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
-->
</metadata>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,12 +1,4 @@
<metadata>
<!--
This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
-->
<remove-node path="/api/package[@name='org.apache.commons.collections']" />
<remove-node path="/api/package[@name='org.apache.commons.collections.iterators']" />
<remove-node path="/api/package[@name='org.apache.commons.collections.keyvalue']" />

View File

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

View File

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

View File

@@ -1,12 +1,5 @@
<metadata>
<!--
This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
-->
<remove-node path="/api/package[@name='org.apache.commons.collections']" />
<remove-node path="/api/package[@name='org.apache.commons.collections.iterators']" />
<remove-node path="/api/package[@name='org.apache.commons.collections.keyvalue']" />

View File

@@ -12,7 +12,6 @@
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\keepass2android-appSdkStyle\keepass2android-appSdkStyle.csproj" />
<ProjectReference Include="..\KP2AKdbLibraryBindingSdkStyle\KP2AKdbLibraryBindingSdkStyle.csproj" />
</ItemGroup>
<ItemGroup>

View File

@@ -13,7 +13,7 @@ using Android.Content.PM;
using Android.OS;
using Android.Preferences;
using Java.IO;
using Android.Support.V4;
using KeePassLib.Serialization;
using KeePassLib.Utility;
using File = System.IO.File;

View File

@@ -307,7 +307,7 @@ namespace keepass2android.Io
public void OnResume(IFileStorageSetupActivity activity)
{
#if DEBUG
Kp2aLog.Log("JFS/OnResume Ioc.Path=" +activity.Ioc.Path+". Path="+((IJavaFileStorageFileStorageSetupActivity)activity).Path);
Kp2aLog.Log("JFS/OnResume Ioc.Path=" +activity.Ioc.Path+". Path="+((IJavaFileStorage.IFileStorageSetupActivity)activity).Path);
#endif
_jfs.OnResume(((IJavaFileStorage.IFileStorageSetupActivity) activity));
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
<SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<AndroidLibrary Include="..\java\KP2ASoftkeyboard_AS\app\build\outputs\aar\app-release.aar" Link="app-release.aar" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,3 @@
<enum-field-mappings>
</enum-field-mappings>

View File

@@ -0,0 +1,3 @@
<enum-method-mappings>
</enum-method-mappings>

View File

@@ -0,0 +1,4 @@
<metadata>
<remove-node path="/api/package[@name='keepass2android.softkeyboard']/class[@name='KP2AKeyboard']" />
<remove-node path="/api/package[@name='keepass2android.softkeyboard']" />
</metadata>

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
<SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<None Remove="pcloud-sdk-android-1.9.1.aar" />
<None Remove="pcloud-sdk-java-core-1.9.1.jar" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,3 @@
<enum-field-mappings>
</enum-field-mappings>

View File

@@ -0,0 +1,3 @@
<enum-method-mappings>
</enum-method-mappings>

View File

@@ -0,0 +1,4 @@
<metadata>
<remove-node path="/api/package[@name='com.pcloud.sdk']" />
</metadata>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
<SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<AndroidLibrary Include="..\java\Keepass2AndroidPluginSDK2\app\build\outputs\aar\app-release.aar" Link="Jars\app-release.aar" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,3 @@
<enum-field-mappings>
</enum-field-mappings>

View File

@@ -0,0 +1,3 @@
<enum-method-mappings>
</enum-method-mappings>

View File

@@ -0,0 +1,3 @@
<metadata>
</metadata>

View File

@@ -23,6 +23,7 @@ using Android.Runtime;
using Android.Text.Method;
using Android.Widget;
using Android.Content.PM;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -1,280 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="200"
android:versionName="1.11-r0"
package="keepass2android.keepass2android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="auto">
<queries>
<!-- Specific intents and packages we query for (required since Android 11) -->
<package android:name="keepass2android.plugin.keyboardswap2" />
<package android:name="keepass2android.AncientIconSet" />
<package android:name="keepass2android.plugin.qr" />
<package android:name="it.andreacioni.kp2a.plugin.keelink" />
<package android:name="com.inputstick.apps.kp2aplugin" />
<package android:name="com.dropbox.android" />
<intent>
<action android:name="android.intent.action.OPEN_DOCUMENT" />
<data android:mimeType="*/*" />
</intent>
<intent>
<action android:name="android.intent.action.GET_DOCUMENT" />
<data android:mimeType="*/*" />
</intent>
<intent>
<action android:name="com.dropbox.android.AUTHENTICATE_V2" />
</intent>
<intent>
<action android:name="com.yubichallenge.NFCActivity.CHALLENGE" />
</intent>
<intent>
<action android:name="net.pp3345.ykdroid.intent.action.CHALLENGE_RESPONSE" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
</intent>
</queries>
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
<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" />
<application android:label="keepass2android"
android:icon="@mipmap/ic_launcher_online"
android:roundIcon="@mipmap/ic_launcher_online_round"
android:networkSecurityConfig="@xml/network_security_config"
>
<uses-library
android:name="org.apache.http.legacy"
android:required="false"/>
<activity android:name="microsoft.identity.client.BrowserTabActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="msal8374f801-0f55-407d-80cc-9a04fe86d9b2" android:host="auth" />
</intent-filter>
</activity>
<activity android:name="com.dropbox.core.android.AuthActivity" android:launchMode="singleTask" android:configChanges="orientation|keyboard" android:exported="true">
<intent-filter>
<data android:scheme="db-i8shu7v1hgh7ynt" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<data android:scheme="db-ax0268uydp1ya57" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<provider android:name="group.pals.android.lib.ui.filechooser.providers.localfile.LocalFileProvider" android:authorities="keepass2android.keepass2android.android-filechooser.localfile" android:exported="false" />
<provider android:name="group.pals.android.lib.ui.filechooser.providers.history.HistoryProvider" android:authorities="keepass2android.keepass2android.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>
<service android:name="keepass2android.softkeyboard.KP2AKeyboard" android:permission="android.permission.BIND_INPUT_METHOD" android:exported="true">
<intent-filter>
<action android:name="android.view.InputMethod" />
</intent-filter>
<meta-data android:name="android.view.im" android:resource="@xml/method" />
</service>
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="@string/english_ime_settings" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
<intent-filter>
<action android:name="keepass2android.softkeyboard.LatinIMESettings" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="keepass2android.softkeyboard.InputLanguageSelection"
android:exported="true">
android:label="@string/language_selection_title"
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:configChanges="orientation|keyboard|keyboardHidden" android:label="@string/app_name" android:theme="@style/MyTheme_Blue" android:name="keepass2android.SelectCurrentDbActivity" android:windowSoftInputMode="adjustResize" android:exported="true">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content" />
<data android:mimeType="application/octet-stream" />
<data android:host="*" />
</intent-filter>
<intent-filter>
<action android:name="kp2a.action.SelectCurrentDbActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/*" />
</intent-filter>
<!-- intent filter for opening database files
Note that this stopped working nicely with Android 7, see e.g. https://stackoverflow.com/a/26635162/292233
KP2A was using
<data android:scheme="content" />
<data android:mimeType="*/*" />
previously, but that leaded to complaints by users saying KP2A is showing up way too often, even when opening contacts and the like.
This is why this was reduced content with mimeType=application/octet-stream or content with pathPattern .
The scheme=file is still there for old OS devices. It's also queried by apps like Dropbox to find apps for a certain file type.
-->
<!-- 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">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content" />
<data android:mimeType="*/*" />
<data android:host="*" />
<data android:pathPattern=".*\\.kdbp" />
<data android:pathPattern=".*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\.kdbx" />
<data android:pathPattern=".*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\.kdb" />
<data android:pathPattern=".*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
</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 -->
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content" />
<data android:mimeType="application/octet-stream" />
<data android:host="*" />
</intent-filter>
<!-- This intent filter is for old OS versions (Android 6 and below) or for apps explicitly querying intents for a certain file:-URI -->
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:mimeType="*/*" />
<data android:host="*" />
<data android:pathPattern=".*\\.kdbp" />
<data android:pathPattern=".*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbp" />
<data android:pathPattern=".*\\.kdbx" />
<data android:pathPattern=".*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdbx" />
<data android:pathPattern=".*\\.kdb" />
<data android:pathPattern=".*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kdb" />
</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>
</activity>
<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.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.MINIMUM_SIZE_W" android:value="426.0dip" />
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="360.0dip" />
</application>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" android:maxSdkVersion="22" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" android:maxSdkVersion="22" />
<uses-permission android:name="keepass2android.keepass2android.permission.KP2aInternalFileBrowsing" />
<uses-permission android:name="keepass2android.keepass2android.permission.KP2aInternalSearch" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<!-- Samsung Pass permission -->
<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" />
</manifest>

View File

@@ -0,0 +1 @@
Manifests/AndroidManifest_debug.xml

View File

@@ -9,6 +9,7 @@ using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -3,6 +3,7 @@ using Android.Content;
using Android.OS;
using Android.Util;
using Java.IO;
using File = Java.IO.File;
namespace keepass2android
{
@@ -55,7 +56,7 @@ namespace keepass2android
}
Log.Verbose(logTag, "Unsupported uri: '" + uri + "'.");
throw new FileNotFoundException("Unsupported uri: "
throw new Java.IO.FileNotFoundException("Unsupported uri: "
+ uri.ToString());
}

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using Android.App;
using keepass2android_appSdkStyle;
using KeePassLib;
using KeePassLib.Security;
using KeePassLib.Serialization;

View File

@@ -16,6 +16,7 @@ using Java.IO;
using Java.Security.Cert;
using Java.Util.Concurrent;
using Javax.Crypto.Spec;
using keepass2android_appSdkStyle;
using Exception = System.Exception;
using File = System.IO.File;
@@ -314,7 +315,7 @@ namespace keepass2android
{
throw new RuntimeException(FailedToInitCipher + " (UnrecoverableKeyException)", e);
}
catch (IOException e)
catch (Java.IO.IOException e)
{
throw new RuntimeException(FailedToInitCipher + " (IOException)", e);
}
@@ -395,7 +396,7 @@ namespace keepass2android
{
throw new RuntimeException(e);
}
catch (IOException e)
catch (Java.IO.IOException e)
{
throw new RuntimeException(e);
}
@@ -433,7 +434,7 @@ namespace keepass2android
{
throw new RuntimeException(FailedToInitCipher, e);
}
catch (IOException e)
catch (Java.IO.IOException e)
{
throw new RuntimeException(FailedToInitCipher, e);
}

View File

@@ -1,4 +1,5 @@
using Java.Lang;
using keepass2android_appSdkStyle;
using KeePassLib.Cryptography;
using KeePassLib.Keys;
using KeePassLib.Security;
@@ -48,7 +49,7 @@ namespace keepass2android
});
while ((Response == null) && (Error == null))
{
Thread.Sleep(50);
System.Threading.Thread.Sleep(50);
}
if (Error != null)
{

View File

@@ -17,6 +17,7 @@ using Android.Text.Util;
using Android.Views;
using Android.Webkit;
using Android.Widget;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -8,9 +8,9 @@ using Android.Content;
using Android.Content.PM;
using Android.OS;
using Android.Runtime;
using Android.Support.V7.App;
using Android.Views;
using Android.Widget;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -12,13 +12,13 @@ using Android.Graphics.Drawables;
using Android.OS;
using Android.Provider;
using Android.Runtime;
using Android.Support.V7.App;
using Android.Text;
using Android.Util;
using Android.Views;
using Android.Widget;
using keepass2android.database.edit;
using KeePass.Util.Spr;
using keepass2android_appSdkStyle;
using KeePassLib;
using KeePassLib.Keys;
using KeePassLib.Security;

View File

@@ -5,7 +5,6 @@ using Android.Content.PM;
using Android.Graphics.Drawables;
using Android.OS;
using Android.Preferences;
using Android.Support.V7.App;
using Android.Text;
using Android.Views;
using Android.Widget;
@@ -13,6 +12,7 @@ using Java.IO;
using KeePassLib.Keys;
using KeePassLib.Serialization;
using keepass2android.Io;
using keepass2android_appSdkStyle;
using Environment = Android.OS.Environment;
using IOException = Java.IO.IOException;
@@ -277,18 +277,18 @@ namespace keepass2android
private void SetDefaultIoc()
{
File directory = GetExternalFilesDir(null);
Java.IO.File directory = GetExternalFilesDir(null);
if (directory == null)
directory = FilesDir;
string strDir = directory.CanonicalPath;
if (!strDir.EndsWith(File.Separator))
strDir += File.Separator;
if (!strDir.EndsWith(Java.IO.File.Separator))
strDir += Java.IO.File.Separator;
string filename = strDir + "keepass.kdbx";
filename = FileSelectHelper.ConvertFilenameToIocPath(filename);
int count = 2;
while (new File(filename).Exists())
while (new Java.IO.File(filename).Exists())
{
filename = FileSelectHelper.ConvertFilenameToIocPath(strDir + "keepass" + count + ".kdbx");
count++;

View File

@@ -10,6 +10,7 @@ using Android.Preferences;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using keepass2android_appSdkStyle;
using KeePassLib.Utility;
namespace keepass2android

View File

@@ -53,6 +53,7 @@ using keepass2android.fileselect;
using KeeTrayTOTP.Libraries;
using Boolean = Java.Lang.Boolean;
using Android.Util;
using keepass2android_appSdkStyle;
namespace keepass2android
{
@@ -623,7 +624,7 @@ namespace keepass2android
edit.Commit();
//request permission. user must grant, we'll show notifications in the OnRequestPermissionResults() callback
Android.Support.V4.App.ActivityCompat.RequestPermissions(this, new[] { Android.Manifest.Permission.PostNotifications }, activateKeyboard ? 1 : 0 /*use requestCode to transfer the flag*/);
AndroidX.Core.App.ActivityCompat.RequestPermissions(this, new[] { Android.Manifest.Permission.PostNotifications }, activateKeyboard ? 1 : 0 /*use requestCode to transfer the flag*/);
})

View File

@@ -1,5 +1,6 @@
using Android.Content;
using Android.Graphics.Drawables;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -1,4 +1,5 @@
using Android.Graphics.Drawables;
using keepass2android_appSdkStyle;
namespace keepass2android

View File

@@ -1,4 +1,5 @@
using Android.Graphics.Drawables;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -1,5 +1,6 @@
using Android.Graphics.Drawables;
using Android.Widget;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -11,6 +11,7 @@ using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using keepass2android_appSdkStyle;
namespace keepass2android.EntryActivityClasses
{

View File

@@ -1,4 +1,5 @@
using Android.Graphics.Drawables;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -45,13 +45,12 @@ using keepass2android.Io;
using KeePassLib.Serialization;
using KeeTrayTOTP.Libraries;
using PluginTOTP;
using Xamarin.Essentials;
using Xamarin.Forms.Platform.Android;
using ZXing.Mobile;
using Debug = System.Diagnostics.Debug;
using File = System.IO.File;
using Object = Java.Lang.Object;
using Uri = Android.Net.Uri;
using Resource = keepass2android_appSdkStyle.Resource;
namespace keepass2android
{
@@ -248,11 +247,6 @@ namespace keepass2android
};
// Save button
//SupportActionBar.SetCustomView(Resource.Layout.SaveButton);
if (State.IsNew)
{
SupportActionBar.Title = GetString(Resource.String.add_entry);
@@ -1183,7 +1177,8 @@ namespace keepass2android
dlgView.FindViewById<Button>(Resource.Id.totp_scan).Click += async (object o, EventArgs args) =>
{
var scanner = new ZXing.Mobile.MobileBarcodeScanner();
/*TODO Restore this
var scanner = new ZXing..MobileBarcodeScanner();
var options = new ZXing.Mobile.MobileBarcodeScanningOptions();
options.PossibleFormats = new List<ZXing.BarcodeFormat>() { ZXing.BarcodeFormat.QR_CODE };
@@ -1198,6 +1193,9 @@ namespace keepass2android
{
Toast.MakeText(this, "Scanned code should contain an otpauth:// text.", ToastLength.Long).Show();
}
*/
Toast.MakeText(this, "QR Scanner must be restored", ToastLength.Long).Show();
};
@@ -1241,8 +1239,6 @@ namespace keepass2android
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

View File

@@ -10,6 +10,7 @@ using KeePass.DataExchange.Formats;
using KeePassLib.Interfaces;
using KeePassLib.Serialization;
using keepass2android.Io;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -16,6 +16,7 @@ using Android.Widget;
using Java.IO;
using keepass2android.Io;
using keepass2android_appSdkStyle;
#if !EXCLUDE_JAVAFILESTORAGE
using Keepass2android.Javafilestorage;
#endif
@@ -561,7 +562,7 @@ namespace keepass2android
protected void ShowFilenameWarning(string fileName, Action onUserWantsToContinue, Action onUserWantsToCorrect)
{
new AlertDialog.Builder(_activity)
.SetPositiveButton(keepass2android.Resource.String.Continue, delegate { onUserWantsToContinue(); })
.SetPositiveButton(Resource.String.Continue, delegate { onUserWantsToContinue(); })
.SetMessage(Resource.String.NoFilenameWarning)
.SetCancelable(false)
.SetNegativeButton(Android.Resource.String.Cancel, delegate { onUserWantsToCorrect(); })
@@ -612,10 +613,10 @@ namespace keepass2android
if (_isForSave && ioc.IsLocalFile())
{
// Try to create the file
File file = new File(filename);
Java.IO.File file = new Java.IO.File(filename);
try
{
File parent = file.ParentFile;
Java.IO.File parent = file.ParentFile;
if (parent == null || (parent.Exists() && !parent.IsDirectory))
{
@@ -640,7 +641,7 @@ namespace keepass2android
System.IO.File.Create(filename).Dispose();
}
catch (IOException ex)
catch (Java.IO.IOException ex)
{
Toast.MakeText(
_activity,

View File

@@ -9,8 +9,6 @@ using Android.Content.Res;
using Android.Graphics;
using Android.Graphics.Drawables;
using Android.OS;
using Android.Support.V4.Content;
using Android.Support.V7.App;
using Android.Text;
using Android.Util;
using Android.Views;
@@ -19,6 +17,7 @@ using keepass2android.Io;
using keepass2android.view;
using AlertDialog = Android.App.AlertDialog;
using Object = Java.Lang.Object;
using Resource = keepass2android_appSdkStyle.Resource;
namespace keepass2android
{

View File

@@ -2,7 +2,7 @@ using System;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using Android;
using Android.App;
using Android.Content;
using Android.Content.PM;
@@ -13,6 +13,7 @@ using Android.Runtime;
using Android.Views;
using Android.Widget;
using Java.Lang;
using keepass2android_appSdkStyle;
using KeePassLib.Keys;
using KeePassLib.Utility;
using Enum = System.Enum;

View File

@@ -4,10 +4,11 @@ using Android.Graphics;
using Android.OS;
using Android.Runtime;
using Android.Util;
using AndroidX.DrawerLayout.Widget;
namespace keepass2android
{
public class FixedDrawerLayout : Android.Support.V4.Widget.DrawerLayout
public class FixedDrawerLayout : DrawerLayout
{
private bool _fitsSystemWindows;

View File

@@ -29,6 +29,7 @@ using Android.Preferences;
using Android.Views;
using Android.Widget;
using Java.Util;
using keepass2android_appSdkStyle;
using KeePassLib.Cryptography;
using Newtonsoft.Json;
using OtpKeyProv;

View File

@@ -33,9 +33,8 @@ using Android.Graphics;
using Android.Graphics.Drawables;
using Android.Preferences;
using Android.Runtime;
using Android.Support.V4.View;
using Android.Support.V7.App;
using keepass2android.Io;
using keepass2android_appSdkStyle;
using KeePassLib.Security;
using AlertDialog = Android.App.AlertDialog;
using Object = Java.Lang.Object;

View File

@@ -25,7 +25,7 @@ using Android.Content.PM;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using KeePassLib;
using Android.Preferences;
using KeePassLib.Interfaces;
@@ -35,13 +35,14 @@ using keepass2android.database.edit;
using keepass2android.view;
using Android.Graphics.Drawables;
using Android.Provider;
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 keepass2android_appSdkStyle;
using KeeTrayTOTP.Libraries;
using AndroidX.AppCompat.Widget;
using SearchView = AndroidX.AppCompat.Widget.SearchView;
namespace keepass2android
{
@@ -249,7 +250,7 @@ namespace keepass2android
private IMenuItem _offlineItem;
private IMenuItem _onlineItem;
private IMenuItem _syncItem;
private Android.Support.V7.Widget.SearchView searchView;
private SearchView searchView;
public String UuidGroup
@@ -711,7 +712,7 @@ namespace keepass2android
edit.PutBoolean("RequestedPostNotificationsPermission", true);
edit.Commit();
Android.Support.V4.App.ActivityCompat.RequestPermissions(this, new[] { Android.Manifest.Permission.PostNotifications }, 0);
AndroidX.Core.App.ActivityCompat.RequestPermissions(this, new[] { Android.Manifest.Permission.PostNotifications }, 0);
UpdatePostNotificationsPermissionInfo(true);
};
FindViewById(Resource.Id.post_notification_button_dont_show_again).Click += (sender, args) =>
@@ -949,14 +950,14 @@ namespace keepass2android
}
}
class SuggestionListener : Java.Lang.Object, SearchView.IOnSuggestionListener, Android.Support.V7.Widget.SearchView.IOnSuggestionListener
class SuggestionListener : Java.Lang.Object, AndroidX.AppCompat.Widget.SearchView.IOnSuggestionListener
{
private readonly CursorAdapter _suggestionsAdapter;
private readonly AndroidX.CursorAdapter.Widget.CursorAdapter _suggestionsAdapter;
private readonly GroupBaseActivity _activity;
private readonly IMenuItem _searchItem;
public SuggestionListener(Android.Support.V4.Widget.CursorAdapter suggestionsAdapter, GroupBaseActivity activity, IMenuItem searchItem)
public SuggestionListener(AndroidX.CursorAdapter.Widget.CursorAdapter suggestionsAdapter, GroupBaseActivity activity, IMenuItem searchItem)
{
_suggestionsAdapter = suggestionsAdapter;
_activity = activity;
@@ -980,7 +981,7 @@ namespace keepass2android
}
}
class OnQueryTextListener : Java.Lang.Object, Android.Support.V7.Widget.SearchView.IOnQueryTextListener
class OnQueryTextListener : Java.Lang.Object, SearchView.IOnQueryTextListener
{
private readonly GroupBaseActivity _activity;
@@ -1034,7 +1035,7 @@ namespace keepass2android
var view = searchItem.ActionView;
searchView = view.JavaCast<Android.Support.V7.Widget.SearchView>();
searchView = view.JavaCast<SearchView>();
searchView.SetSearchableInfo(searchManager.GetSearchableInfo(ComponentName));
searchView.SetOnSuggestionListener(new SuggestionListener(searchView.SuggestionsAdapter, this, searchItem));

View File

@@ -21,6 +21,7 @@ using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Widget;
using keepass2android_appSdkStyle;
using KeePassLib;
using KeePassLib.Utility;

View File

@@ -27,6 +27,7 @@ using Android.Preferences;
using Android.Views;
using Android.Widget;
using Java.Lang;
using keepass2android_appSdkStyle;
using KeePassLib;
using KeePassLib.Utility;
using FileNotFoundException = Java.IO.FileNotFoundException;

View File

@@ -13,6 +13,7 @@ using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using keepass2android_appSdkStyle;
using KeePassLib;
using KeePassLib.Utility;
using Object = Java.Lang.Object;

View File

@@ -10,6 +10,7 @@ using Android.Widget;
using Java.Nio.FileNio;
using KeePass.DataExchange;
using KeePass.Util.Spr;
using keepass2android_appSdkStyle;
using KeePassLib;
using KeePassLib.Keys;
using KeePassLib.Security;

View File

@@ -26,6 +26,7 @@ using Android.Text;
using Android.Text.Method;
using Java.Lang;
using Java.Lang.Reflect;
using keepass2android_appSdkStyle;
using KeePassLib.Serialization;
using Exception = System.Exception;
using String = System.String;

View File

@@ -21,7 +21,6 @@ using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Support.V7.App;
namespace keepass2android
{

View File

@@ -21,6 +21,7 @@ using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.Runtime;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -21,8 +21,8 @@ using Android.Graphics;
using Android.OS;
using Android.Runtime;
using Android.Preferences;
using Android.Support.V7.App;
using Android.Views;
using AndroidX.AppCompat.App;
using Java.Lang;
using keepass2android;

View File

@@ -89,7 +89,7 @@
</intent-filter>
<meta-data android:name="android.view.im" android:resource="@xml/method" />
</service>
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="@string/english_ime_settings" android:exported="true">
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="english_ime_settings" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
@@ -99,7 +99,7 @@
</intent-filter>
</activity>
<activity android:name="keepass2android.softkeyboard.InputLanguageSelection"
android:label="@string/language_selection_title"
android:label="language_selection_title"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

View File

@@ -93,7 +93,7 @@
</intent-filter>
<meta-data android:name="android.view.im" android:resource="@xml/method" />
</service>
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="@string/english_ime_settings" android:exported="true">
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="english_ime_settings" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
@@ -103,8 +103,9 @@
</intent-filter>
</activity>
<activity android:name="keepass2android.softkeyboard.InputLanguageSelection"
android:exported="true">
android:label="@string/language_selection_title"
<!-- android:label="@string/language_selection_title" TODO -->
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/>
@@ -250,6 +251,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
<action android:name="keepass2android.ACTION_START_WITH_TASK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
x
</activity>
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" />
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />

View File

@@ -9,9 +9,9 @@ using Android.Content.PM;
using Android.OS;
using Android.Preferences;
using Android.Runtime;
using Android.Support.V7.App;
using Android.Views;
using Android.Widget;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -23,7 +23,7 @@ using System.Net;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
using Android;
using keepass2android_appSdkStyle;
using Android.App;
using Android.Content;
using Android.Database;
@@ -38,9 +38,11 @@ using Android.Preferences;
using Android.Text;
using Android.Content.PM;
using Android.Graphics;
using Android.Support.Design.Widget;
using Android.Support.V4.Widget;
using Android.Support.V7.App;
using AndroidX.AppCompat.App;
using AndroidX.CoordinatorLayout.Widget;
using AndroidX.Core.View;
using AndroidX.DrawerLayout.Widget;
using Google.Android.Material.AppBar;
using Java.Lang;
using KeePassLib.Keys;
using KeePassLib.Serialization;
@@ -1586,12 +1588,6 @@ namespace keepass2android
private MemoryStream PreloadDbFile()
{
if (KdbxDatabaseFormat.GetFormatToUse(App.Kp2a.GetFileStorage(_ioConnection).GetFileExtension(_ioConnection)) == KdbxFormat.ProtocolBuffers)
{
Kp2aLog.Log("Preparing kdbp serializer");
KdbpFile.PrepareSerializer();
}
Kp2aLog.Log("Pre-loading database file starting");
var fileStorage = App.Kp2a.GetFileStorage(_ioConnection);
var stream = fileStorage.OpenFileForRead(_ioConnection);
@@ -2044,7 +2040,7 @@ namespace keepass2android
switch ( item.ItemId ) {
case Android.Resource.Id.Home:
_drawerLayout.OpenDrawer(Android.Support.V4.View.GravityCompat.Start);
_drawerLayout.OpenDrawer(GravityCompat.Start);
return true;
}

View File

@@ -24,6 +24,7 @@ using Android.Widget;
using Android.Preferences;
using KeePassLib;
using keepass2android.view;
using keepass2android_appSdkStyle;
using KeePassLib.Interfaces;
namespace keepass2android

View File

@@ -11,6 +11,7 @@ using Android.Runtime;
using Android.Views;
using Android.Widget;
using Keepass2android.Pluginsdk;
using keepass2android_appSdkStyle;
namespace keepass2android
{

View File

@@ -17,7 +17,6 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll.
using System;
using System.Linq;
using Android;
using Android.App;
using Android.Content;
using Android.OS;
@@ -27,8 +26,10 @@ using Android.Content.PM;
using KeePassLib.Keys;
using Android.Preferences;
using Android.Runtime;
using Android.Support.Design.Widget;
using Android.Views.InputMethods;
using Google.Android.Material.AppBar;
using keepass2android_appSdkStyle;
using KeePassLib;
using KeePassLib.Serialization;
@@ -79,7 +80,7 @@ namespace keepass2android
SetSupportActionBar(toolbar);
var collapsingToolbar = FindViewById<Android.Support.Design.Widget.CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar);
var collapsingToolbar = FindViewById<CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar);
collapsingToolbar.SetTitle(GetString(Resource.String.QuickUnlock_prefs));
if (App.Kp2a.GetDbForQuickUnlock().KpDatabase.Name != "")

View File

@@ -1,44 +0,0 @@
Images, layout descriptions, binary blobs and string dictionaries can be included
in your application as resource files. Various Android APIs are designed to
operate on the resource IDs instead of dealing with images, strings or binary blobs
directly.
For example, a sample Android app that contains a user interface layout (main.axml),
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
would keep its resources in the "Resources" directory of the application:
Resources/
drawable/
icon.png
layout/
main.axml
values/
strings.xml
In order to get the build system to recognize Android resources, set the build action to
"AndroidResource". The native Android APIs do not operate directly with filenames, but
instead operate on resource IDs. When you compile an Android application that uses resources,
the build system will package the resources for distribution and generate a class called "R"
(this is an Android convention) that contains the tokens for each one of the resources
included. For example, for the above Resources layout, this is what the R class would expose:
public class R {
public class drawable {
public const int icon = 0x123;
}
public class layout {
public const int main = 0x456;
}
public class strings {
public const int first_string = 0xabc;
public const int second_string = 0xbcd;
}
}
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
to reference the layout/main.axml file, or R.Strings.first_string to reference the first
string in the dictionary file values/strings.xml.

View File

@@ -13,7 +13,7 @@ android:fitsSystemWindows="true">
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_height="1dp"
android:orientation="horizontal" />
<RelativeLayout
android:id="@+id/bottom_bar"
@@ -47,20 +47,20 @@ android:fitsSystemWindows="true">
android:layout_above="@id/bottom_bar"
android:background="#b8b8b8" />
<android.support.design.widget.CoordinatorLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/divider2"
android:layout_below="@id/top"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -98,9 +98,10 @@ android:fitsSystemWindows="true">
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -164,9 +165,9 @@ android:paddingRight="16dp"
android:background="#0000" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</androidx.core.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</keepass2android.MeasuringRelativeLayout>
</LinearLayout>

View File

@@ -1,46 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:divider="?android:attr/dividerVertical"
android:showDividers="middle"
android:layout_alignParentBottom="true"
android:dividerPadding="12dp"
android:baselineAligned="false">
<FrameLayout
style="?android:actionButtonStyle"
android:id="@+id/entry_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
style="?android:actionBarTabTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingRight="20dp"
android:drawableLeft="?attr/NavigationAcceptDrawable"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:text="@string/entry_save" />
</FrameLayout>
<FrameLayout
style="?android:actionButtonStyle"
android:id="@+id/entry_save_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
style="?android:actionBarTabTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingRight="20dp"
android:drawableLeft="?attr/CancelDrawable"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:text="@string/cancel" />
</FrameLayout>
</LinearLayout>

View File

@@ -25,7 +25,7 @@
/>
<RelativeLayout
android:layout_width="fill_parent"
android:background="?activityBackgroundColor"
android:background="?android:attr/colorBackground"
android:layout_height="fill_parent">

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/entry_scroll"
android:background="?activityBackgroundColor"
android:background="?android:attr/colorBackground"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
@@ -23,7 +23,7 @@
android:scaleType="fitCenter"
android:layout_alignParentRight="true"
android:src="@drawable/ic00" />
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
style="@style/EntryEditSingleLine_TextInputLayout"
android:layout_toLeftOf="@id/icon_button">
<EditText
@@ -32,7 +32,7 @@
android:hint="@string/hint_title"
android:singleLine="true"
android:capitalize="sentences" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
</RelativeLayout>
<!--User-->
<LinearLayout
@@ -41,7 +41,7 @@
<ImageView
style="@style/EntryEditSingleLine_ImageView"
android:src="@drawable/ic_entry_username" />
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
style="@style/EntryEditSingleLine_TextInputLayout">
<EditText
style="@style/EntryEditSingleLine_EditText"
@@ -49,7 +49,7 @@
android:hint="@string/hint_username"
android:inputType="textEmailAddress"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<!-- password-->
<LinearLayout
@@ -65,7 +65,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
android:layout_weight="1"
style="@style/EntryEditSingleLine_TextInputLayout">
<EditText
@@ -77,7 +77,7 @@
android:inputType="textPassword"
android:hint="password"
android:importantForAccessibility="no"/>
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -123,7 +123,7 @@
<ImageView
style="@style/EntryEditSingleLine_ImageView"
android:src="@drawable/ic_entry_url" />
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
style="@style/EntryEditSingleLine_TextInputLayout">
<EditText
style="@style/EntryEditSingleLine_EditText"
@@ -131,7 +131,7 @@
android:hint="@string/hint_url"
android:inputType="textUri"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<!-- Comments -->
<LinearLayout
@@ -140,14 +140,14 @@
<ImageView
style="@style/EntryEditSingleLine_ImageView"
android:src="@drawable/ic_entry_comments" />
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
style="@style/EntryEditSingleLine_TextInputLayout">
<EditText
style="@style/EntryEditSingleLine_EditText"
android:id="@+id/entry_comment"
android:hint="@string/hint_comment"
android:inputType="textMultiLine" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/entry_extras_container"
@@ -224,7 +224,7 @@
<ImageView
style="@style/EntryEditSingleLine_ImageView"
android:src="@drawable/ic_entry_tags" />
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
style="@style/EntryEditSingleLine_TextInputLayout">
<EditText
style="@style/EntryEditSingleLine_EditText"
@@ -232,7 +232,7 @@
android:hint="@string/hint_tags"
android:inputType="text"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<!-- Override URL -->
<LinearLayout
@@ -241,7 +241,7 @@
<ImageView
style="@style/EntryEditSingleLine_ImageView"
android:src="@drawable/ic_entry_url" />
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
style="@style/EntryEditSingleLine_TextInputLayout">
<EditText
style="@style/EntryEditSingleLine_EditText"
@@ -249,7 +249,7 @@
android:hint="@string/hint_override_url"
android:inputType="textUri"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<!--expires-->
<LinearLayout

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -9,18 +9,18 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:background="?activityBackgroundColor"
android:background="?android:attr/colorBackground"
android:scrollbarStyle="insideOverlay">
<keepass2android.view.EntryContentsView
android:id="@+id/entry_contents"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
</ScrollView>
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/entry_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom|right"
android:layout_margin="16dp"
android:src="@drawable/ic_fab_edit" />
</android.support.design.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:background="?activityBackgroundColor"
android:background="?android:attr/colorBackground"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_marginBottom="12dip"

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:background="?activityBackgroundColor"
android:background="?android:attr/colorBackground"
android:layout_height="fill_parent">
<RelativeLayout
@@ -135,7 +135,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/wordcountlayout">
@@ -146,8 +146,8 @@
android:singleLine="true"
android:text="7"
android:hint="@string/hint_wordcount" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/wordseparatorlayout">
@@ -158,7 +158,7 @@
android:singleLine="true"
android:text=" "
android:hint="@string/hint_wordseparator" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:layout_width="match_parent"
@@ -186,7 +186,7 @@
android:layout_width="match_parent">
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
android:layout_height="wrap_content"
android:layout_width="50dp"
android:layout_weight="1"
@@ -199,7 +199,7 @@
android:singleLine="true"
android:text="12"
android:hint="@string/hint_length" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>

View File

@@ -4,7 +4,7 @@
android:fitsSystemWindows="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="?activityBackgroundColor">
android:background="?android:attr/colorBackground">
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
@@ -355,7 +355,7 @@
android:layout_above="@id/bottom_bar"
android:background="#b8b8b8" />
<android.support.design.widget.CoordinatorLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -367,7 +367,7 @@
android:id="@+id/list_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabCancelAddNew"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -375,14 +375,14 @@
android:layout_gravity="end|bottom|right"
android:visibility="gone"
android:src="@drawable/ic_cross" />
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddNew"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom|right"
android:layout_margin="16dp"
android:src="@drawable/ic_plus" />
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddNewGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -391,7 +391,7 @@
android:layout_marginRight="16dp"
android:layout_marginBottom="88dp"
android:visibility="gone"/>
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddNewEntry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -400,7 +400,7 @@
android:layout_marginRight="16dp"
android:layout_marginBottom="160dp"
android:visibility="gone"/>
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -409,7 +409,7 @@
android:layout_marginRight="16dp"
android:layout_marginBottom="88dp"
android:visibility="gone"/>
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabTotpOverview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -418,5 +418,5 @@
android:layout_marginRight="16dp"
android:layout_marginBottom="160dp"
android:visibility="gone"/>
</android.support.design.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</RelativeLayout>

View File

@@ -22,7 +22,7 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:verticalSpacing="5dp"
android:background="?activityBackgroundColor"
android:background="@color/bgColorLight"
android:horizontalSpacing="5dp"
android:columnWidth="60dp"
android:numColumns="auto_fit"

View File

@@ -10,11 +10,11 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/relative_layout"
android:background="?activityBackgroundColor">
android:background="@color/bgColorLight">
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_height="1dp"
android:orientation="horizontal" />
<RelativeLayout
android:id="@+id/bottom_bar"
@@ -44,20 +44,20 @@
android:layout_height="1dp"
android:layout_above="@id/bottom_bar"
android:background="#b8b8b8" />
<android.support.design.widget.CoordinatorLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/divider2"
android:layout_below="@id/top"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -96,9 +96,9 @@
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:titleTextStyle="@style/MyTitleTextStyle"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -139,6 +139,7 @@
android:layout_marginLeft="4dp"
android:text="@string/hint_login_pass" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@@ -371,10 +372,10 @@
android:layout_height="200dp"
android:background="#0000" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</keepass2android.MeasuringRelativeLayout>
<android.support.design.widget.NavigationView
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
@@ -432,5 +433,5 @@
style="@style/NavDrawerButton" />
</LinearLayout>
</ScrollView>
</android.support.design.widget.NavigationView>
</com.google.android.material.navigation.NavigationView>
</keepass2android.FixedDrawerLayout>

View File

@@ -2,7 +2,7 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?activityBackgroundColor"
android:background="@color/bgColorLight"
android:orientation="vertical">
<include
android:id="@+id/mytoolbar"

View File

@@ -4,7 +4,7 @@
android:fitsSystemWindows="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="?activityBackgroundColor">
android:background="?android:attr/colorBackground">
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"

View File

@@ -3,7 +3,7 @@
android:fitsSystemWindows="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="?activityBackgroundColor">
android:background="?android:attr/colorBackground">
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"

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