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:
@@ -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>
|
@@ -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>
|
@@ -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>
|
||||
|
@@ -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>
|
@@ -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>
|
@@ -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']" />
|
||||
|
@@ -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>
|
@@ -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>
|
@@ -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']" />
|
||||
|
@@ -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>
|
@@ -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>
|
@@ -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']" />
|
||||
|
@@ -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>
|
||||
|
@@ -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;
|
||||
|
@@ -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));
|
||||
}
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
48
src/Kp2aKeyboardBindingSdkStyle/Additions/AboutAdditions.txt
Normal file
48
src/Kp2aKeyboardBindingSdkStyle/Additions/AboutAdditions.txt
Normal 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; }
|
||||
}
|
@@ -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>
|
@@ -0,0 +1,3 @@
|
||||
<enum-field-mappings>
|
||||
|
||||
</enum-field-mappings>
|
@@ -0,0 +1,3 @@
|
||||
<enum-method-mappings>
|
||||
|
||||
</enum-method-mappings>
|
4
src/Kp2aKeyboardBindingSdkStyle/Transforms/Metadata.xml
Normal file
4
src/Kp2aKeyboardBindingSdkStyle/Transforms/Metadata.xml
Normal 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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
||||
|
48
src/PCloudBindingsSdkStyle/Additions/AboutAdditions.txt
Normal file
48
src/PCloudBindingsSdkStyle/Additions/AboutAdditions.txt
Normal 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; }
|
||||
}
|
12
src/PCloudBindingsSdkStyle/PCloudBindingsSdkStyle.csproj
Normal file
12
src/PCloudBindingsSdkStyle/PCloudBindingsSdkStyle.csproj
Normal 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>
|
3
src/PCloudBindingsSdkStyle/Transforms/EnumFields.xml
Normal file
3
src/PCloudBindingsSdkStyle/Transforms/EnumFields.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<enum-field-mappings>
|
||||
|
||||
</enum-field-mappings>
|
3
src/PCloudBindingsSdkStyle/Transforms/EnumMethods.xml
Normal file
3
src/PCloudBindingsSdkStyle/Transforms/EnumMethods.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<enum-method-mappings>
|
||||
|
||||
</enum-method-mappings>
|
4
src/PCloudBindingsSdkStyle/Transforms/Metadata.xml
Normal file
4
src/PCloudBindingsSdkStyle/Transforms/Metadata.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<metadata>
|
||||
|
||||
<remove-node path="/api/package[@name='com.pcloud.sdk']" />
|
||||
</metadata>
|
BIN
src/PCloudBindingsSdkStyle/pcloud-sdk-android-1.9.1.aar
Normal file
BIN
src/PCloudBindingsSdkStyle/pcloud-sdk-android-1.9.1.aar
Normal file
Binary file not shown.
BIN
src/PCloudBindingsSdkStyle/pcloud-sdk-java-core-1.9.1.jar
Normal file
BIN
src/PCloudBindingsSdkStyle/pcloud-sdk-java-core-1.9.1.jar
Normal file
Binary file not shown.
@@ -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>
|
@@ -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>
|
@@ -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>
|
||||
|
48
src/PluginSdkBindingSdkStyle/Additions/AboutAdditions.txt
Normal file
48
src/PluginSdkBindingSdkStyle/Additions/AboutAdditions.txt
Normal 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; }
|
||||
}
|
24
src/PluginSdkBindingSdkStyle/Jars/AboutJars.txt
Normal file
24
src/PluginSdkBindingSdkStyle/Jars/AboutJars.txt
Normal 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".
|
11
src/PluginSdkBindingSdkStyle/PluginSdkBindingSdkStyle.csproj
Normal file
11
src/PluginSdkBindingSdkStyle/PluginSdkBindingSdkStyle.csproj
Normal 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>
|
3
src/PluginSdkBindingSdkStyle/Transforms/EnumFields.xml
Normal file
3
src/PluginSdkBindingSdkStyle/Transforms/EnumFields.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<enum-field-mappings>
|
||||
|
||||
</enum-field-mappings>
|
3
src/PluginSdkBindingSdkStyle/Transforms/EnumMethods.xml
Normal file
3
src/PluginSdkBindingSdkStyle/Transforms/EnumMethods.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<enum-method-mappings>
|
||||
|
||||
</enum-method-mappings>
|
3
src/PluginSdkBindingSdkStyle/Transforms/Metadata.xml
Normal file
3
src/PluginSdkBindingSdkStyle/Transforms/Metadata.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<metadata>
|
||||
|
||||
</metadata>
|
@@ -23,6 +23,7 @@ using Android.Runtime;
|
||||
using Android.Text.Method;
|
||||
using Android.Widget;
|
||||
using Android.Content.PM;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -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>
|
1
src/keepass2android-appSdkStyle/AndroidManifest.xml
Symbolic link
1
src/keepass2android-appSdkStyle/AndroidManifest.xml
Symbolic link
@@ -0,0 +1 @@
|
||||
Manifests/AndroidManifest_debug.xml
|
@@ -9,6 +9,7 @@ using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -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());
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -17,6 +17,7 @@ using Android.Text.Util;
|
||||
using Android.Views;
|
||||
using Android.Webkit;
|
||||
using Android.Widget;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -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;
|
||||
|
@@ -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++;
|
||||
|
@@ -10,6 +10,7 @@ using Android.Preferences;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using keepass2android_appSdkStyle;
|
||||
using KeePassLib.Utility;
|
||||
|
||||
namespace keepass2android
|
||||
|
@@ -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*/);
|
||||
|
||||
|
||||
})
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using Android.Content;
|
||||
using Android.Graphics.Drawables;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using Android.Graphics.Drawables;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
|
||||
namespace keepass2android
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using Android.Graphics.Drawables;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using Android.Graphics.Drawables;
|
||||
using Android.Widget;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -11,6 +11,7 @@ using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android.EntryActivityClasses
|
||||
{
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using Android.Graphics.Drawables;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -10,6 +10,7 @@ using KeePass.DataExchange.Formats;
|
||||
using KeePassLib.Interfaces;
|
||||
using KeePassLib.Serialization;
|
||||
using keepass2android.Io;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -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,
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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));
|
||||
|
@@ -21,6 +21,7 @@ using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Widget;
|
||||
using keepass2android_appSdkStyle;
|
||||
using KeePassLib;
|
||||
using KeePassLib.Utility;
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -21,7 +21,6 @@ using Android.App;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Support.V7.App;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -21,6 +21,7 @@ using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Content.PM;
|
||||
using Android.Runtime;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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"/>
|
||||
|
@@ -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" />
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -24,6 +24,7 @@ using Android.Widget;
|
||||
using Android.Preferences;
|
||||
using KeePassLib;
|
||||
using keepass2android.view;
|
||||
using keepass2android_appSdkStyle;
|
||||
using KeePassLib.Interfaces;
|
||||
|
||||
namespace keepass2android
|
||||
|
@@ -11,6 +11,7 @@ using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Keepass2android.Pluginsdk;
|
||||
using keepass2android_appSdkStyle;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
|
@@ -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 != "")
|
||||
|
@@ -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.
|
@@ -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>
|
@@ -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>
|
@@ -25,7 +25,7 @@
|
||||
/>
|
||||
<RelativeLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:background="?activityBackgroundColor"
|
||||
android:background="?android:attr/colorBackground"
|
||||
android:layout_height="fill_parent">
|
||||
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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>
|
@@ -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"
|
||||
|
@@ -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>
|
||||
|
||||
|
||||
|
||||
|
@@ -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>
|
@@ -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"
|
||||
|
@@ -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>
|
@@ -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"
|
||||
|
@@ -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"
|
||||
|
@@ -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
Reference in New Issue
Block a user