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>
|
<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>
|
</enum-field-mappings>
|
@@ -1,13 +1,3 @@
|
|||||||
<enum-method-mappings>
|
<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>
|
</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.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>
|
</metadata>
|
||||||
|
@@ -1,14 +1,3 @@
|
|||||||
<enum-field-mappings>
|
<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>
|
</enum-field-mappings>
|
@@ -1,13 +1,3 @@
|
|||||||
<enum-method-mappings>
|
<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>
|
</enum-method-mappings>
|
@@ -1,11 +1,5 @@
|
|||||||
<metadata>
|
<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']" />
|
||||||
<remove-node path="/api/package[@name='com.jcraft.jsch.jce']" />
|
<remove-node path="/api/package[@name='com.jcraft.jsch.jce']" />
|
||||||
<remove-node path="/api/package[@name='com.jcraft.jsch.jcraft']" />
|
<remove-node path="/api/package[@name='com.jcraft.jsch.jcraft']" />
|
||||||
|
@@ -1,14 +1,3 @@
|
|||||||
<enum-field-mappings>
|
<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>
|
</enum-field-mappings>
|
@@ -1,13 +1,3 @@
|
|||||||
<enum-method-mappings>
|
<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>
|
</enum-method-mappings>
|
@@ -1,12 +1,4 @@
|
|||||||
<metadata>
|
<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']" />
|
||||||
<remove-node path="/api/package[@name='org.apache.commons.collections.iterators']" />
|
<remove-node path="/api/package[@name='org.apache.commons.collections.iterators']" />
|
||||||
<remove-node path="/api/package[@name='org.apache.commons.collections.keyvalue']" />
|
<remove-node path="/api/package[@name='org.apache.commons.collections.keyvalue']" />
|
||||||
|
@@ -1,14 +1,3 @@
|
|||||||
<enum-field-mappings>
|
<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>
|
</enum-field-mappings>
|
@@ -1,13 +1,3 @@
|
|||||||
<enum-method-mappings>
|
<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>
|
</enum-method-mappings>
|
@@ -1,12 +1,5 @@
|
|||||||
<metadata>
|
<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']" />
|
||||||
<remove-node path="/api/package[@name='org.apache.commons.collections.iterators']" />
|
<remove-node path="/api/package[@name='org.apache.commons.collections.iterators']" />
|
||||||
<remove-node path="/api/package[@name='org.apache.commons.collections.keyvalue']" />
|
<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" />
|
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\keepass2android-appSdkStyle\keepass2android-appSdkStyle.csproj" />
|
|
||||||
<ProjectReference Include="..\KP2AKdbLibraryBindingSdkStyle\KP2AKdbLibraryBindingSdkStyle.csproj" />
|
<ProjectReference Include="..\KP2AKdbLibraryBindingSdkStyle\KP2AKdbLibraryBindingSdkStyle.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@@ -13,7 +13,7 @@ using Android.Content.PM;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using Java.IO;
|
using Java.IO;
|
||||||
using Android.Support.V4;
|
|
||||||
using KeePassLib.Serialization;
|
using KeePassLib.Serialization;
|
||||||
using KeePassLib.Utility;
|
using KeePassLib.Utility;
|
||||||
using File = System.IO.File;
|
using File = System.IO.File;
|
||||||
|
@@ -307,7 +307,7 @@ namespace keepass2android.Io
|
|||||||
public void OnResume(IFileStorageSetupActivity activity)
|
public void OnResume(IFileStorageSetupActivity activity)
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#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
|
#endif
|
||||||
_jfs.OnResume(((IJavaFileStorage.IFileStorageSetupActivity) activity));
|
_jfs.OnResume(((IJavaFileStorage.IFileStorageSetupActivity) activity));
|
||||||
}
|
}
|
||||||
|
@@ -1,14 +1,3 @@
|
|||||||
<enum-field-mappings>
|
<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>
|
</enum-field-mappings>
|
||||||
|
@@ -1,11 +1,3 @@
|
|||||||
<enum-method-mappings>
|
<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>
|
</enum-method-mappings>
|
||||||
|
@@ -1,11 +1,5 @@
|
|||||||
<metadata>
|
<metadata>
|
||||||
<remove-node path="/api/package[@name='keepass2android.softkeyboard']/class[@name='KP2AKeyboard']" />
|
<remove-node path="/api/package[@name='keepass2android.softkeyboard']/class[@name='KP2AKeyboard']" />
|
||||||
<remove-node path="/api/package[@name='keepass2android.softkeyboard']" />
|
<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>
|
</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>
|
<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>
|
</enum-field-mappings>
|
@@ -1,13 +1,3 @@
|
|||||||
<enum-method-mappings>
|
<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>
|
</enum-method-mappings>
|
@@ -1,10 +1,4 @@
|
|||||||
<metadata>
|
<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']" />
|
<remove-node path="/api/package[@name='com.pcloud.sdk']" />
|
||||||
</metadata>
|
</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>
|
<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>
|
</enum-field-mappings>
|
@@ -1,13 +1,3 @@
|
|||||||
<enum-method-mappings>
|
<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>
|
</enum-method-mappings>
|
@@ -1,9 +1,3 @@
|
|||||||
<metadata>
|
<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>
|
</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.Text.Method;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Android.Content.PM;
|
using Android.Content.PM;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
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.Runtime;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -3,6 +3,7 @@ using Android.Content;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Util;
|
using Android.Util;
|
||||||
using Java.IO;
|
using Java.IO;
|
||||||
|
using File = Java.IO.File;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
@@ -55,7 +56,7 @@ namespace keepass2android
|
|||||||
|
|
||||||
}
|
}
|
||||||
Log.Verbose(logTag, "Unsupported uri: '" + uri + "'.");
|
Log.Verbose(logTag, "Unsupported uri: '" + uri + "'.");
|
||||||
throw new FileNotFoundException("Unsupported uri: "
|
throw new Java.IO.FileNotFoundException("Unsupported uri: "
|
||||||
+ uri.ToString());
|
+ uri.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Android.App;
|
using Android.App;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using KeePassLib.Security;
|
using KeePassLib.Security;
|
||||||
using KeePassLib.Serialization;
|
using KeePassLib.Serialization;
|
||||||
|
@@ -16,6 +16,7 @@ using Java.IO;
|
|||||||
using Java.Security.Cert;
|
using Java.Security.Cert;
|
||||||
using Java.Util.Concurrent;
|
using Java.Util.Concurrent;
|
||||||
using Javax.Crypto.Spec;
|
using Javax.Crypto.Spec;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using Exception = System.Exception;
|
using Exception = System.Exception;
|
||||||
using File = System.IO.File;
|
using File = System.IO.File;
|
||||||
|
|
||||||
@@ -314,7 +315,7 @@ namespace keepass2android
|
|||||||
{
|
{
|
||||||
throw new RuntimeException(FailedToInitCipher + " (UnrecoverableKeyException)", e);
|
throw new RuntimeException(FailedToInitCipher + " (UnrecoverableKeyException)", e);
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (Java.IO.IOException e)
|
||||||
{
|
{
|
||||||
throw new RuntimeException(FailedToInitCipher + " (IOException)", e);
|
throw new RuntimeException(FailedToInitCipher + " (IOException)", e);
|
||||||
}
|
}
|
||||||
@@ -395,7 +396,7 @@ namespace keepass2android
|
|||||||
{
|
{
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (Java.IO.IOException e)
|
||||||
{
|
{
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@@ -433,7 +434,7 @@ namespace keepass2android
|
|||||||
{
|
{
|
||||||
throw new RuntimeException(FailedToInitCipher, e);
|
throw new RuntimeException(FailedToInitCipher, e);
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (Java.IO.IOException e)
|
||||||
{
|
{
|
||||||
throw new RuntimeException(FailedToInitCipher, e);
|
throw new RuntimeException(FailedToInitCipher, e);
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using Java.Lang;
|
using Java.Lang;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib.Cryptography;
|
using KeePassLib.Cryptography;
|
||||||
using KeePassLib.Keys;
|
using KeePassLib.Keys;
|
||||||
using KeePassLib.Security;
|
using KeePassLib.Security;
|
||||||
@@ -48,7 +49,7 @@ namespace keepass2android
|
|||||||
});
|
});
|
||||||
while ((Response == null) && (Error == null))
|
while ((Response == null) && (Error == null))
|
||||||
{
|
{
|
||||||
Thread.Sleep(50);
|
System.Threading.Thread.Sleep(50);
|
||||||
}
|
}
|
||||||
if (Error != null)
|
if (Error != null)
|
||||||
{
|
{
|
||||||
|
@@ -17,6 +17,7 @@ using Android.Text.Util;
|
|||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Webkit;
|
using Android.Webkit;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -8,9 +8,9 @@ using Android.Content;
|
|||||||
using Android.Content.PM;
|
using Android.Content.PM;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Support.V7.App;
|
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -12,13 +12,13 @@ using Android.Graphics.Drawables;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Provider;
|
using Android.Provider;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Support.V7.App;
|
|
||||||
using Android.Text;
|
using Android.Text;
|
||||||
using Android.Util;
|
using Android.Util;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using keepass2android.database.edit;
|
using keepass2android.database.edit;
|
||||||
using KeePass.Util.Spr;
|
using KeePass.Util.Spr;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using KeePassLib.Keys;
|
using KeePassLib.Keys;
|
||||||
using KeePassLib.Security;
|
using KeePassLib.Security;
|
||||||
|
@@ -5,7 +5,6 @@ using Android.Content.PM;
|
|||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using Android.Support.V7.App;
|
|
||||||
using Android.Text;
|
using Android.Text;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
@@ -13,6 +12,7 @@ using Java.IO;
|
|||||||
using KeePassLib.Keys;
|
using KeePassLib.Keys;
|
||||||
using KeePassLib.Serialization;
|
using KeePassLib.Serialization;
|
||||||
using keepass2android.Io;
|
using keepass2android.Io;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using Environment = Android.OS.Environment;
|
using Environment = Android.OS.Environment;
|
||||||
using IOException = Java.IO.IOException;
|
using IOException = Java.IO.IOException;
|
||||||
|
|
||||||
@@ -277,18 +277,18 @@ namespace keepass2android
|
|||||||
|
|
||||||
private void SetDefaultIoc()
|
private void SetDefaultIoc()
|
||||||
{
|
{
|
||||||
File directory = GetExternalFilesDir(null);
|
Java.IO.File directory = GetExternalFilesDir(null);
|
||||||
if (directory == null)
|
if (directory == null)
|
||||||
directory = FilesDir;
|
directory = FilesDir;
|
||||||
|
|
||||||
string strDir = directory.CanonicalPath;
|
string strDir = directory.CanonicalPath;
|
||||||
if (!strDir.EndsWith(File.Separator))
|
if (!strDir.EndsWith(Java.IO.File.Separator))
|
||||||
strDir += File.Separator;
|
strDir += Java.IO.File.Separator;
|
||||||
|
|
||||||
string filename = strDir + "keepass.kdbx";
|
string filename = strDir + "keepass.kdbx";
|
||||||
filename = FileSelectHelper.ConvertFilenameToIocPath(filename);
|
filename = FileSelectHelper.ConvertFilenameToIocPath(filename);
|
||||||
int count = 2;
|
int count = 2;
|
||||||
while (new File(filename).Exists())
|
while (new Java.IO.File(filename).Exists())
|
||||||
{
|
{
|
||||||
filename = FileSelectHelper.ConvertFilenameToIocPath(strDir + "keepass" + count + ".kdbx");
|
filename = FileSelectHelper.ConvertFilenameToIocPath(strDir + "keepass" + count + ".kdbx");
|
||||||
count++;
|
count++;
|
||||||
|
@@ -10,6 +10,7 @@ using Android.Preferences;
|
|||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib.Utility;
|
using KeePassLib.Utility;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
|
@@ -53,6 +53,7 @@ using keepass2android.fileselect;
|
|||||||
using KeeTrayTOTP.Libraries;
|
using KeeTrayTOTP.Libraries;
|
||||||
using Boolean = Java.Lang.Boolean;
|
using Boolean = Java.Lang.Boolean;
|
||||||
using Android.Util;
|
using Android.Util;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
@@ -623,7 +624,7 @@ namespace keepass2android
|
|||||||
edit.Commit();
|
edit.Commit();
|
||||||
|
|
||||||
//request permission. user must grant, we'll show notifications in the OnRequestPermissionResults() callback
|
//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.Content;
|
||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -11,6 +11,7 @@ using Android.OS;
|
|||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android.EntryActivityClasses
|
namespace keepass2android.EntryActivityClasses
|
||||||
{
|
{
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -45,13 +45,12 @@ using keepass2android.Io;
|
|||||||
using KeePassLib.Serialization;
|
using KeePassLib.Serialization;
|
||||||
using KeeTrayTOTP.Libraries;
|
using KeeTrayTOTP.Libraries;
|
||||||
using PluginTOTP;
|
using PluginTOTP;
|
||||||
using Xamarin.Essentials;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
using ZXing.Mobile;
|
|
||||||
using Debug = System.Diagnostics.Debug;
|
using Debug = System.Diagnostics.Debug;
|
||||||
using File = System.IO.File;
|
using File = System.IO.File;
|
||||||
using Object = Java.Lang.Object;
|
using Object = Java.Lang.Object;
|
||||||
using Uri = Android.Net.Uri;
|
using Uri = Android.Net.Uri;
|
||||||
|
using Resource = keepass2android_appSdkStyle.Resource;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
@@ -248,11 +247,6 @@ namespace keepass2android
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Save button
|
|
||||||
//SupportActionBar.SetCustomView(Resource.Layout.SaveButton);
|
|
||||||
|
|
||||||
if (State.IsNew)
|
if (State.IsNew)
|
||||||
{
|
{
|
||||||
SupportActionBar.Title = GetString(Resource.String.add_entry);
|
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) =>
|
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();
|
var options = new ZXing.Mobile.MobileBarcodeScanningOptions();
|
||||||
options.PossibleFormats = new List<ZXing.BarcodeFormat>() { ZXing.BarcodeFormat.QR_CODE };
|
options.PossibleFormats = new List<ZXing.BarcodeFormat>() { ZXing.BarcodeFormat.QR_CODE };
|
||||||
|
|
||||||
@@ -1198,8 +1193,11 @@ namespace keepass2android
|
|||||||
{
|
{
|
||||||
Toast.MakeText(this, "Scanned code should contain an otpauth:// text.", ToastLength.Long).Show();
|
Toast.MakeText(this, "Scanned code should contain an otpauth:// text.", ToastLength.Long).Show();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
Toast.MakeText(this, "QR Scanner must be restored", ToastLength.Long).Show();
|
||||||
|
|
||||||
};
|
|
||||||
|
};
|
||||||
|
|
||||||
//copy values from entry into dialog
|
//copy values from entry into dialog
|
||||||
View ees = (View)sender.Parent;
|
View ees = (View)sender.Parent;
|
||||||
@@ -1241,8 +1239,6 @@ namespace keepass2android
|
|||||||
|
|
||||||
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
|
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);
|
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,6 +10,7 @@ using KeePass.DataExchange.Formats;
|
|||||||
using KeePassLib.Interfaces;
|
using KeePassLib.Interfaces;
|
||||||
using KeePassLib.Serialization;
|
using KeePassLib.Serialization;
|
||||||
using keepass2android.Io;
|
using keepass2android.Io;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -16,6 +16,7 @@ using Android.Widget;
|
|||||||
|
|
||||||
using Java.IO;
|
using Java.IO;
|
||||||
using keepass2android.Io;
|
using keepass2android.Io;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
#if !EXCLUDE_JAVAFILESTORAGE
|
#if !EXCLUDE_JAVAFILESTORAGE
|
||||||
using Keepass2android.Javafilestorage;
|
using Keepass2android.Javafilestorage;
|
||||||
#endif
|
#endif
|
||||||
@@ -561,7 +562,7 @@ namespace keepass2android
|
|||||||
protected void ShowFilenameWarning(string fileName, Action onUserWantsToContinue, Action onUserWantsToCorrect)
|
protected void ShowFilenameWarning(string fileName, Action onUserWantsToContinue, Action onUserWantsToCorrect)
|
||||||
{
|
{
|
||||||
new AlertDialog.Builder(_activity)
|
new AlertDialog.Builder(_activity)
|
||||||
.SetPositiveButton(keepass2android.Resource.String.Continue, delegate { onUserWantsToContinue(); })
|
.SetPositiveButton(Resource.String.Continue, delegate { onUserWantsToContinue(); })
|
||||||
.SetMessage(Resource.String.NoFilenameWarning)
|
.SetMessage(Resource.String.NoFilenameWarning)
|
||||||
.SetCancelable(false)
|
.SetCancelable(false)
|
||||||
.SetNegativeButton(Android.Resource.String.Cancel, delegate { onUserWantsToCorrect(); })
|
.SetNegativeButton(Android.Resource.String.Cancel, delegate { onUserWantsToCorrect(); })
|
||||||
@@ -611,11 +612,11 @@ namespace keepass2android
|
|||||||
|
|
||||||
if (_isForSave && ioc.IsLocalFile())
|
if (_isForSave && ioc.IsLocalFile())
|
||||||
{
|
{
|
||||||
// Try to create the file
|
// Try to create the file
|
||||||
File file = new File(filename);
|
Java.IO.File file = new Java.IO.File(filename);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File parent = file.ParentFile;
|
Java.IO.File parent = file.ParentFile;
|
||||||
|
|
||||||
if (parent == null || (parent.Exists() && !parent.IsDirectory))
|
if (parent == null || (parent.Exists() && !parent.IsDirectory))
|
||||||
{
|
{
|
||||||
@@ -640,7 +641,7 @@ namespace keepass2android
|
|||||||
System.IO.File.Create(filename).Dispose();
|
System.IO.File.Create(filename).Dispose();
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (IOException ex)
|
catch (Java.IO.IOException ex)
|
||||||
{
|
{
|
||||||
Toast.MakeText(
|
Toast.MakeText(
|
||||||
_activity,
|
_activity,
|
||||||
|
@@ -9,8 +9,6 @@ using Android.Content.Res;
|
|||||||
using Android.Graphics;
|
using Android.Graphics;
|
||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Support.V4.Content;
|
|
||||||
using Android.Support.V7.App;
|
|
||||||
using Android.Text;
|
using Android.Text;
|
||||||
using Android.Util;
|
using Android.Util;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
@@ -19,6 +17,7 @@ using keepass2android.Io;
|
|||||||
using keepass2android.view;
|
using keepass2android.view;
|
||||||
using AlertDialog = Android.App.AlertDialog;
|
using AlertDialog = Android.App.AlertDialog;
|
||||||
using Object = Java.Lang.Object;
|
using Object = Java.Lang.Object;
|
||||||
|
using Resource = keepass2android_appSdkStyle.Resource;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -2,7 +2,7 @@ using System;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Android;
|
|
||||||
using Android.App;
|
using Android.App;
|
||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Android.Content.PM;
|
using Android.Content.PM;
|
||||||
@@ -13,6 +13,7 @@ using Android.Runtime;
|
|||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Java.Lang;
|
using Java.Lang;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib.Keys;
|
using KeePassLib.Keys;
|
||||||
using KeePassLib.Utility;
|
using KeePassLib.Utility;
|
||||||
using Enum = System.Enum;
|
using Enum = System.Enum;
|
||||||
|
@@ -4,10 +4,11 @@ using Android.Graphics;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Util;
|
using Android.Util;
|
||||||
|
using AndroidX.DrawerLayout.Widget;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
public class FixedDrawerLayout : Android.Support.V4.Widget.DrawerLayout
|
public class FixedDrawerLayout : DrawerLayout
|
||||||
{
|
{
|
||||||
private bool _fitsSystemWindows;
|
private bool _fitsSystemWindows;
|
||||||
|
|
||||||
|
@@ -29,6 +29,7 @@ using Android.Preferences;
|
|||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Java.Util;
|
using Java.Util;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib.Cryptography;
|
using KeePassLib.Cryptography;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using OtpKeyProv;
|
using OtpKeyProv;
|
||||||
|
@@ -33,9 +33,8 @@ using Android.Graphics;
|
|||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Support.V4.View;
|
|
||||||
using Android.Support.V7.App;
|
|
||||||
using keepass2android.Io;
|
using keepass2android.Io;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib.Security;
|
using KeePassLib.Security;
|
||||||
using AlertDialog = Android.App.AlertDialog;
|
using AlertDialog = Android.App.AlertDialog;
|
||||||
using Object = Java.Lang.Object;
|
using Object = Java.Lang.Object;
|
||||||
|
@@ -25,7 +25,7 @@ using Android.Content.PM;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using KeePassLib.Interfaces;
|
using KeePassLib.Interfaces;
|
||||||
@@ -35,13 +35,14 @@ using keepass2android.database.edit;
|
|||||||
using keepass2android.view;
|
using keepass2android.view;
|
||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
using Android.Provider;
|
using Android.Provider;
|
||||||
using Android.Support.V4.View;
|
|
||||||
using Android.Views.Autofill;
|
using Android.Views.Autofill;
|
||||||
using CursorAdapter = Android.Support.V4.Widget.CursorAdapter;
|
|
||||||
using Object = Java.Lang.Object;
|
using Object = Java.Lang.Object;
|
||||||
using Android.Text;
|
using Android.Text;
|
||||||
using keepass2android.search;
|
using keepass2android.search;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeeTrayTOTP.Libraries;
|
using KeeTrayTOTP.Libraries;
|
||||||
|
using AndroidX.AppCompat.Widget;
|
||||||
|
using SearchView = AndroidX.AppCompat.Widget.SearchView;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
@@ -249,7 +250,7 @@ namespace keepass2android
|
|||||||
private IMenuItem _offlineItem;
|
private IMenuItem _offlineItem;
|
||||||
private IMenuItem _onlineItem;
|
private IMenuItem _onlineItem;
|
||||||
private IMenuItem _syncItem;
|
private IMenuItem _syncItem;
|
||||||
private Android.Support.V7.Widget.SearchView searchView;
|
private SearchView searchView;
|
||||||
|
|
||||||
|
|
||||||
public String UuidGroup
|
public String UuidGroup
|
||||||
@@ -711,7 +712,7 @@ namespace keepass2android
|
|||||||
edit.PutBoolean("RequestedPostNotificationsPermission", true);
|
edit.PutBoolean("RequestedPostNotificationsPermission", true);
|
||||||
edit.Commit();
|
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);
|
UpdatePostNotificationsPermissionInfo(true);
|
||||||
};
|
};
|
||||||
FindViewById(Resource.Id.post_notification_button_dont_show_again).Click += (sender, args) =>
|
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 GroupBaseActivity _activity;
|
||||||
private readonly IMenuItem _searchItem;
|
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;
|
_suggestionsAdapter = suggestionsAdapter;
|
||||||
_activity = activity;
|
_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;
|
private readonly GroupBaseActivity _activity;
|
||||||
|
|
||||||
@@ -1034,7 +1035,7 @@ namespace keepass2android
|
|||||||
|
|
||||||
var view = searchItem.ActionView;
|
var view = searchItem.ActionView;
|
||||||
|
|
||||||
searchView = view.JavaCast<Android.Support.V7.Widget.SearchView>();
|
searchView = view.JavaCast<SearchView>();
|
||||||
|
|
||||||
searchView.SetSearchableInfo(searchManager.GetSearchableInfo(ComponentName));
|
searchView.SetSearchableInfo(searchManager.GetSearchableInfo(ComponentName));
|
||||||
searchView.SetOnSuggestionListener(new SuggestionListener(searchView.SuggestionsAdapter, this, searchItem));
|
searchView.SetOnSuggestionListener(new SuggestionListener(searchView.SuggestionsAdapter, this, searchItem));
|
||||||
|
@@ -21,6 +21,7 @@ using Android.Content;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using KeePassLib.Utility;
|
using KeePassLib.Utility;
|
||||||
|
|
||||||
|
@@ -27,6 +27,7 @@ using Android.Preferences;
|
|||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Java.Lang;
|
using Java.Lang;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using KeePassLib.Utility;
|
using KeePassLib.Utility;
|
||||||
using FileNotFoundException = Java.IO.FileNotFoundException;
|
using FileNotFoundException = Java.IO.FileNotFoundException;
|
||||||
|
@@ -13,6 +13,7 @@ using Android.Runtime;
|
|||||||
using Android.Util;
|
using Android.Util;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using KeePassLib.Utility;
|
using KeePassLib.Utility;
|
||||||
using Object = Java.Lang.Object;
|
using Object = Java.Lang.Object;
|
||||||
|
@@ -10,6 +10,7 @@ using Android.Widget;
|
|||||||
using Java.Nio.FileNio;
|
using Java.Nio.FileNio;
|
||||||
using KeePass.DataExchange;
|
using KeePass.DataExchange;
|
||||||
using KeePass.Util.Spr;
|
using KeePass.Util.Spr;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using KeePassLib.Keys;
|
using KeePassLib.Keys;
|
||||||
using KeePassLib.Security;
|
using KeePassLib.Security;
|
||||||
|
@@ -26,6 +26,7 @@ using Android.Text;
|
|||||||
using Android.Text.Method;
|
using Android.Text.Method;
|
||||||
using Java.Lang;
|
using Java.Lang;
|
||||||
using Java.Lang.Reflect;
|
using Java.Lang.Reflect;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib.Serialization;
|
using KeePassLib.Serialization;
|
||||||
using Exception = System.Exception;
|
using Exception = System.Exception;
|
||||||
using String = System.String;
|
using String = System.String;
|
||||||
|
@@ -21,7 +21,6 @@ using Android.App;
|
|||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Support.V7.App;
|
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -21,6 +21,7 @@ using Android.App;
|
|||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Android.Content.PM;
|
using Android.Content.PM;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -21,8 +21,8 @@ using Android.Graphics;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using Android.Support.V7.App;
|
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
|
using AndroidX.AppCompat.App;
|
||||||
using Java.Lang;
|
using Java.Lang;
|
||||||
using keepass2android;
|
using keepass2android;
|
||||||
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:versionCode="178"
|
android:versionCode="178"
|
||||||
android:versionName="1.09b-pre0dbg"
|
android:versionName="1.09b-pre0dbg"
|
||||||
package="keepass2android.keepass2android_debug"
|
package="keepass2android.keepass2android_debug"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
|
|
||||||
@@ -10,17 +10,17 @@
|
|||||||
<!-- Specific intents and packages we query for (required since Android 11) -->
|
<!-- Specific intents and packages we query for (required since Android 11) -->
|
||||||
<package android:name="keepass2android.plugin.keyboardswap2" />
|
<package android:name="keepass2android.plugin.keyboardswap2" />
|
||||||
<package android:name="keepass2android.AncientIconSet" />
|
<package android:name="keepass2android.AncientIconSet" />
|
||||||
<package android:name="keepass2android.plugin.qr" />
|
<package android:name="keepass2android.plugin.qr" />
|
||||||
<package android:name="it.andreacioni.kp2a.plugin.keelink" />
|
<package android:name="it.andreacioni.kp2a.plugin.keelink" />
|
||||||
<package android:name="com.inputstick.apps.kp2aplugin" />
|
<package android:name="com.inputstick.apps.kp2aplugin" />
|
||||||
<package android:name="com.dropbox.android" />
|
<package android:name="com.dropbox.android" />
|
||||||
|
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
||||||
|
<data android:mimeType="*/*" />
|
||||||
|
</intent>
|
||||||
|
|
||||||
<intent>
|
<intent>
|
||||||
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
|
||||||
<data android:mimeType="*/*" />
|
|
||||||
</intent>
|
|
||||||
|
|
||||||
<intent>
|
|
||||||
<action android:name="android.intent.action.GET_DOCUMENT" />
|
<action android:name="android.intent.action.GET_DOCUMENT" />
|
||||||
<data android:mimeType="*/*" />
|
<data android:mimeType="*/*" />
|
||||||
</intent>
|
</intent>
|
||||||
@@ -38,93 +38,93 @@
|
|||||||
</intent>
|
</intent>
|
||||||
|
|
||||||
<intent>
|
<intent>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
</intent>
|
</intent>
|
||||||
</queries>
|
</queries>
|
||||||
|
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
|
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
|
||||||
<permission android:description="@string/permission_desc2" android:icon="@drawable/ic_notify_locked" android:label="KP2A entry search" android:name="keepass2android.keepass2android_debug.permission.KP2aInternalSearch" android:protectionLevel="signature" />
|
<permission android:description="@string/permission_desc2" android:icon="@drawable/ic_notify_locked" android:label="KP2A entry search" android:name="keepass2android.keepass2android_debug.permission.KP2aInternalSearch" android:protectionLevel="signature" />
|
||||||
<permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android_debug.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
<permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android_debug.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
||||||
<application
|
<application
|
||||||
android:icon="@mipmap/ic_launcher_online"
|
android:icon="@mipmap/ic_launcher_online"
|
||||||
android:roundIcon="@mipmap/ic_launcher_online_round"
|
android:roundIcon="@mipmap/ic_launcher_online_round"
|
||||||
android:networkSecurityConfig="@xml/network_security_config"
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
>
|
>
|
||||||
|
|
||||||
<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-2gormiq7iq1jls1" />
|
|
||||||
<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>
|
<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-2gormiq7iq1jls1" />
|
||||||
|
<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>
|
||||||
|
|
||||||
<provider android:name="group.pals.android.lib.ui.filechooser.providers.localfile.LocalFileProvider" android:authorities="keepass2android.keepass2android_debug.android-filechooser.localfile" android:exported="false" />
|
</activity>
|
||||||
<provider android:name="group.pals.android.lib.ui.filechooser.providers.history.HistoryProvider" android:authorities="keepass2android.keepass2android_debug.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">
|
<provider android:name="group.pals.android.lib.ui.filechooser.providers.localfile.LocalFileProvider" android:authorities="keepass2android.keepass2android_debug.android-filechooser.localfile" android:exported="false" />
|
||||||
</activity>
|
<provider android:name="group.pals.android.lib.ui.filechooser.providers.history.HistoryProvider" android:authorities="keepass2android.keepass2android_debug.android-filechooser.history" android:exported="false" />
|
||||||
<service android:name="keepass2android.softkeyboard.KP2AKeyboard" android:permission="android.permission.BIND_INPUT_METHOD" android:exported="true">
|
<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">
|
||||||
<intent-filter>
|
</activity>
|
||||||
<action android:name="android.view.InputMethod" />
|
<service android:name="keepass2android.softkeyboard.KP2AKeyboard" android:permission="android.permission.BIND_INPUT_METHOD" android:exported="true">
|
||||||
</intent-filter>
|
<intent-filter>
|
||||||
<meta-data android:name="android.view.im" android:resource="@xml/method" />
|
<action android:name="android.view.InputMethod" />
|
||||||
</service>
|
</intent-filter>
|
||||||
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="@string/english_ime_settings" android:exported="true">
|
<meta-data android:name="android.view.im" android:resource="@xml/method" />
|
||||||
<intent-filter>
|
</service>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="english_ime_settings" android:exported="true">
|
||||||
</intent-filter>
|
<intent-filter>
|
||||||
<intent-filter>
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<action android:name="keepass2android.softkeyboard.LatinIMESettings" />
|
</intent-filter>
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<intent-filter>
|
||||||
</intent-filter>
|
<action android:name="keepass2android.softkeyboard.LatinIMESettings" />
|
||||||
</activity>
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<activity android:name="keepass2android.softkeyboard.InputLanguageSelection"
|
</intent-filter>
|
||||||
android:label="@string/language_selection_title"
|
</activity>
|
||||||
android:exported="true" >
|
<activity android:name="keepass2android.softkeyboard.InputLanguageSelection"
|
||||||
<intent-filter>
|
android:label="language_selection_title"
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
android:exported="true" >
|
||||||
<action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/>
|
<intent-filter>
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
</intent-filter>
|
<action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/>
|
||||||
</activity>
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
<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">
|
</activity>
|
||||||
<intent-filter android:label="@string/app_name">
|
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<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">
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<intent-filter android:label="@string/app_name">
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<data android:scheme="content" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<data android:mimeType="*/*" />
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
<data android:host="*" />
|
<data android:scheme="content" />
|
||||||
</intent-filter>
|
<data android:mimeType="*/*" />
|
||||||
|
<data android:host="*" />
|
||||||
<intent-filter>
|
</intent-filter>
|
||||||
<action android:name="kp2a.action.SelectCurrentDbActivity" />
|
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<intent-filter>
|
||||||
</intent-filter>
|
<action android:name="kp2a.action.SelectCurrentDbActivity" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
<!-- intent filter for opening database files
|
|
||||||
|
|
||||||
|
<!-- intent filter for opening database files
|
||||||
Note that this stopped working nicely with Android 7, see e.g. https://stackoverflow.com/a/26635162/292233
|
Note that this stopped working nicely with Android 7, see e.g. https://stackoverflow.com/a/26635162/292233
|
||||||
KP2A was using
|
KP2A was using
|
||||||
<data android:scheme="content" />
|
<data android:scheme="content" />
|
||||||
@@ -138,7 +138,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<!-- This intent filter is for apps which use content with a URI containing the extension but no specific mimeType, e.g. ASTRO file manager -->
|
<!-- This intent filter is for apps which use content with a URI containing the extension but no specific mimeType, e.g. ASTRO file manager -->
|
||||||
|
|
||||||
<intent-filter android:label="@string/app_name">
|
<intent-filter android:label="@string/app_name">
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
@@ -180,7 +180,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
<!-- This intent filter is for apps which use content with a URI not containing the extension but at least specify mimeType=application/octet-stream, e.g. GoogleDrive or FolderSync -->
|
<!-- This intent filter is for apps which use content with a URI not containing the extension but at least specify mimeType=application/octet-stream, e.g. GoogleDrive or FolderSync -->
|
||||||
<intent-filter android:label="@string/app_name">
|
<intent-filter android:label="@string/app_name">
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
@@ -231,36 +231,36 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
|
|
||||||
<intent-filter android:label="@string/kp2a_findUrl">
|
<intent-filter android:label="@string/kp2a_findUrl">
|
||||||
<action android:name="android.intent.action.SEND" />
|
<action android:name="android.intent.action.SEND" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<data android:mimeType="text/plain" />
|
<data android:mimeType="text/plain" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="keepass2android.ACTION_START_WITH_TASK" />
|
<action android:name="keepass2android.ACTION_START_WITH_TASK" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" />
|
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" />
|
||||||
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
|
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
|
||||||
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" />
|
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" />
|
||||||
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:value="598.0dip" />
|
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:value="598.0dip" />
|
||||||
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="426.0dip" />
|
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="426.0dip" />
|
||||||
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="360.0dip" />
|
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="360.0dip" />
|
||||||
</application>
|
</application>
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<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.USE_CREDENTIALS" android:maxSdkVersion="22" />
|
||||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" android:maxSdkVersion="22" />
|
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" android:maxSdkVersion="22" />
|
||||||
<uses-permission android:name="keepass2android.keepass2android_debug.permission.KP2aInternalFileBrowsing" />
|
<uses-permission android:name="keepass2android.keepass2android_debug.permission.KP2aInternalFileBrowsing" />
|
||||||
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
|
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
|
||||||
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
<!-- Samsung Pass permission -->
|
<!-- Samsung Pass permission -->
|
||||||
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
|
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
|
||||||
<!-- READ_PHONE_STATE seems to come from some library or so, not clear where. We don't want to have it, remove it: -->
|
<!-- READ_PHONE_STATE seems to come from some library or so, not clear where. We don't want to have it, remove it: -->
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@@ -1,27 +1,27 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:versionCode="200"
|
android:versionCode="200"
|
||||||
android:versionName="1.11-r0"
|
android:versionName="1.11-r0"
|
||||||
package="keepass2android.keepass2android"
|
package="keepass2android.keepass2android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
|
|
||||||
|
|
||||||
<queries>
|
<queries>
|
||||||
<!-- Specific intents and packages we query for (required since Android 11) -->
|
<!-- Specific intents and packages we query for (required since Android 11) -->
|
||||||
<package android:name="keepass2android.plugin.keyboardswap2" />
|
<package android:name="keepass2android.plugin.keyboardswap2" />
|
||||||
<package android:name="keepass2android.AncientIconSet" />
|
<package android:name="keepass2android.AncientIconSet" />
|
||||||
<package android:name="keepass2android.plugin.qr" />
|
<package android:name="keepass2android.plugin.qr" />
|
||||||
<package android:name="it.andreacioni.kp2a.plugin.keelink" />
|
<package android:name="it.andreacioni.kp2a.plugin.keelink" />
|
||||||
<package android:name="com.inputstick.apps.kp2aplugin" />
|
<package android:name="com.inputstick.apps.kp2aplugin" />
|
||||||
<package android:name="com.dropbox.android" />
|
<package android:name="com.dropbox.android" />
|
||||||
|
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
||||||
|
<data android:mimeType="*/*" />
|
||||||
|
</intent>
|
||||||
|
|
||||||
<intent>
|
<intent>
|
||||||
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
|
||||||
<data android:mimeType="*/*" />
|
|
||||||
</intent>
|
|
||||||
|
|
||||||
<intent>
|
|
||||||
<action android:name="android.intent.action.GET_DOCUMENT" />
|
<action android:name="android.intent.action.GET_DOCUMENT" />
|
||||||
<data android:mimeType="*/*" />
|
<data android:mimeType="*/*" />
|
||||||
</intent>
|
</intent>
|
||||||
@@ -39,79 +39,80 @@
|
|||||||
</intent>
|
</intent>
|
||||||
|
|
||||||
<intent>
|
<intent>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
</intent>
|
</intent>
|
||||||
</queries>
|
</queries>
|
||||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
|
<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_desc2" android:icon="@drawable/ic_launcher" android:label="KP2A entry search" android:name="keepass2android.keepass2android.permission.KP2aInternalSearch" android:protectionLevel="signature" />
|
||||||
<permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
<permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
||||||
|
|
||||||
<application android:label="keepass2android"
|
<application android:label="keepass2android"
|
||||||
android:icon="@mipmap/ic_launcher_online"
|
android:icon="@mipmap/ic_launcher_online"
|
||||||
android:roundIcon="@mipmap/ic_launcher_online_round"
|
android:roundIcon="@mipmap/ic_launcher_online_round"
|
||||||
android:networkSecurityConfig="@xml/network_security_config"
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
|
|
||||||
>
|
>
|
||||||
|
|
||||||
<uses-library
|
<uses-library
|
||||||
android:name="org.apache.http.legacy"
|
android:name="org.apache.http.legacy"
|
||||||
android:required="false"/>
|
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>
|
<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>
|
||||||
|
|
||||||
<provider android:name="group.pals.android.lib.ui.filechooser.providers.localfile.LocalFileProvider" android:authorities="keepass2android.keepass2android.android-filechooser.localfile" android:exported="false" />
|
</activity>
|
||||||
<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">
|
<provider android:name="group.pals.android.lib.ui.filechooser.providers.localfile.LocalFileProvider" android:authorities="keepass2android.keepass2android.android-filechooser.localfile" android:exported="false" />
|
||||||
<intent-filter>
|
<provider android:name="group.pals.android.lib.ui.filechooser.providers.history.HistoryProvider" android:authorities="keepass2android.keepass2android.android-filechooser.history" android:exported="false" />
|
||||||
<action android:name="android.view.InputMethod" />
|
<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">
|
||||||
</intent-filter>
|
</activity>
|
||||||
<meta-data android:name="android.view.im" android:resource="@xml/method" />
|
|
||||||
</service>
|
<service android:name="keepass2android.softkeyboard.KP2AKeyboard" android:permission="android.permission.BIND_INPUT_METHOD" android:exported="true">
|
||||||
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="@string/english_ime_settings" android:exported="true">
|
<intent-filter>
|
||||||
<intent-filter>
|
<action android:name="android.view.InputMethod" />
|
||||||
<action android:name="android.intent.action.MAIN" />
|
</intent-filter>
|
||||||
</intent-filter>
|
<meta-data android:name="android.view.im" android:resource="@xml/method" />
|
||||||
<intent-filter>
|
</service>
|
||||||
<action android:name="keepass2android.softkeyboard.LatinIMESettings" />
|
<activity android:name="keepass2android.softkeyboard.LatinIMESettings" android:label="english_ime_settings" android:exported="true">
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<intent-filter>
|
||||||
</intent-filter>
|
<action android:name="android.intent.action.MAIN" />
|
||||||
</activity>
|
</intent-filter>
|
||||||
<activity android:name="keepass2android.softkeyboard.InputLanguageSelection"
|
<intent-filter>
|
||||||
android:exported="true">
|
<action android:name="keepass2android.softkeyboard.LatinIMESettings" />
|
||||||
android:label="@string/language_selection_title"
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<intent-filter>
|
</intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
</activity>
|
||||||
<action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/>
|
<activity android:name="keepass2android.softkeyboard.InputLanguageSelection"
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
|
||||||
</intent-filter>
|
android:exported="true">
|
||||||
</activity>
|
<!-- android:label="@string/language_selection_title" TODO -->
|
||||||
<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>
|
||||||
|
<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">
|
<intent-filter android:label="@string/app_name">
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
@@ -120,8 +121,8 @@
|
|||||||
<data android:mimeType="application/octet-stream" />
|
<data android:mimeType="application/octet-stream" />
|
||||||
<data android:host="*" />
|
<data android:host="*" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="kp2a.action.SelectCurrentDbActivity" />
|
<action android:name="kp2a.action.SelectCurrentDbActivity" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
@@ -134,8 +135,8 @@
|
|||||||
|
|
||||||
<data android:mimeType="application/*" />
|
<data android:mimeType="application/*" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
<!-- intent filter for opening database files
|
<!-- intent filter for opening database files
|
||||||
Note that this stopped working nicely with Android 7, see e.g. https://stackoverflow.com/a/26635162/292233
|
Note that this stopped working nicely with Android 7, see e.g. https://stackoverflow.com/a/26635162/292233
|
||||||
KP2A was using
|
KP2A was using
|
||||||
<data android:scheme="content" />
|
<data android:scheme="content" />
|
||||||
@@ -149,7 +150,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<!-- This intent filter is for apps which use content with a URI containing the extension but no specific mimeType, e.g. ASTRO file manager -->
|
<!-- This intent filter is for apps which use content with a URI containing the extension but no specific mimeType, e.g. ASTRO file manager -->
|
||||||
|
|
||||||
<intent-filter android:label="@string/app_name">
|
<intent-filter android:label="@string/app_name">
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
@@ -191,7 +192,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
<!-- This intent filter is for apps which use content with a URI not containing the extension but at least specify mimeType=application/octet-stream, e.g. GoogleDrive or FolderSync -->
|
<!-- This intent filter is for apps which use content with a URI not containing the extension but at least specify mimeType=application/octet-stream, e.g. GoogleDrive or FolderSync -->
|
||||||
<intent-filter android:label="@string/app_name">
|
<intent-filter android:label="@string/app_name">
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
@@ -242,39 +243,40 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
<intent-filter android:label="@string/kp2a_findUrl">
|
<intent-filter android:label="@string/kp2a_findUrl">
|
||||||
<action android:name="android.intent.action.SEND" />
|
<action android:name="android.intent.action.SEND" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<data android:mimeType="text/plain" />
|
<data android:mimeType="text/plain" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="keepass2android.ACTION_START_WITH_TASK" />
|
<action android:name="keepass2android.ACTION_START_WITH_TASK" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
x
|
||||||
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" />
|
</activity>
|
||||||
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
|
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" />
|
||||||
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" />
|
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
|
||||||
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:value="598.0dip" />
|
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" />
|
||||||
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="426.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_H" android:value="360.0dip" />
|
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="426.0dip" />
|
||||||
</application>
|
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="360.0dip" />
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
</application>
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||||
<uses-permission android:name="android.permission.USE_CREDENTIALS" android:maxSdkVersion="22" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" android:maxSdkVersion="22" />
|
<uses-permission android:name="android.permission.USE_CREDENTIALS" android:maxSdkVersion="22" />
|
||||||
<uses-permission android:name="keepass2android.keepass2android.permission.KP2aInternalFileBrowsing" />
|
<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="keepass2android.keepass2android.permission.KP2aInternalSearch" />
|
||||||
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
|
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
|
||||||
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
|
|
||||||
<uses-feature android:name="android.hardware.camera" android:required="false" />
|
<uses-feature android:name="android.hardware.camera" android:required="false" />
|
||||||
|
|
||||||
<!-- Samsung Pass permission -->
|
<!-- Samsung Pass permission -->
|
||||||
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
|
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@@ -9,9 +9,9 @@ using Android.Content.PM;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Support.V7.App;
|
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -23,7 +23,7 @@ using System.Net;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using Android;
|
using keepass2android_appSdkStyle;
|
||||||
using Android.App;
|
using Android.App;
|
||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Android.Database;
|
using Android.Database;
|
||||||
@@ -38,9 +38,11 @@ using Android.Preferences;
|
|||||||
using Android.Text;
|
using Android.Text;
|
||||||
using Android.Content.PM;
|
using Android.Content.PM;
|
||||||
using Android.Graphics;
|
using Android.Graphics;
|
||||||
using Android.Support.Design.Widget;
|
using AndroidX.AppCompat.App;
|
||||||
using Android.Support.V4.Widget;
|
using AndroidX.CoordinatorLayout.Widget;
|
||||||
using Android.Support.V7.App;
|
using AndroidX.Core.View;
|
||||||
|
using AndroidX.DrawerLayout.Widget;
|
||||||
|
using Google.Android.Material.AppBar;
|
||||||
using Java.Lang;
|
using Java.Lang;
|
||||||
using KeePassLib.Keys;
|
using KeePassLib.Keys;
|
||||||
using KeePassLib.Serialization;
|
using KeePassLib.Serialization;
|
||||||
@@ -762,7 +764,7 @@ namespace keepass2android
|
|||||||
var passwordEdit = FindViewById<EditText>(Resource.Id.password_edit);
|
var passwordEdit = FindViewById<EditText>(Resource.Id.password_edit);
|
||||||
passwordEdit.Text = _password;
|
passwordEdit.Text = _password;
|
||||||
|
|
||||||
var passwordFont = Typeface.CreateFromAsset(Assets, "SourceCodePro-Regular.ttf");
|
var passwordFont = Typeface.CreateFromAsset(Assets, "SourceCodePro-Regular.ttf");
|
||||||
passwordEdit.Typeface = passwordFont;
|
passwordEdit.Typeface = passwordFont;
|
||||||
|
|
||||||
|
|
||||||
@@ -1586,12 +1588,6 @@ namespace keepass2android
|
|||||||
|
|
||||||
private MemoryStream PreloadDbFile()
|
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");
|
Kp2aLog.Log("Pre-loading database file starting");
|
||||||
var fileStorage = App.Kp2a.GetFileStorage(_ioConnection);
|
var fileStorage = App.Kp2a.GetFileStorage(_ioConnection);
|
||||||
var stream = fileStorage.OpenFileForRead(_ioConnection);
|
var stream = fileStorage.OpenFileForRead(_ioConnection);
|
||||||
@@ -2044,7 +2040,7 @@ namespace keepass2android
|
|||||||
switch ( item.ItemId ) {
|
switch ( item.ItemId ) {
|
||||||
|
|
||||||
case Android.Resource.Id.Home:
|
case Android.Resource.Id.Home:
|
||||||
_drawerLayout.OpenDrawer(Android.Support.V4.View.GravityCompat.Start);
|
_drawerLayout.OpenDrawer(GravityCompat.Start);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,6 +24,7 @@ using Android.Widget;
|
|||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using keepass2android.view;
|
using keepass2android.view;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib.Interfaces;
|
using KeePassLib.Interfaces;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
|
@@ -11,6 +11,7 @@ using Android.Runtime;
|
|||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Keepass2android.Pluginsdk;
|
using Keepass2android.Pluginsdk;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
{
|
{
|
||||||
|
@@ -17,7 +17,6 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll.
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Android;
|
|
||||||
using Android.App;
|
using Android.App;
|
||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
@@ -27,8 +26,10 @@ using Android.Content.PM;
|
|||||||
using KeePassLib.Keys;
|
using KeePassLib.Keys;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Support.Design.Widget;
|
|
||||||
using Android.Views.InputMethods;
|
using Android.Views.InputMethods;
|
||||||
|
using Google.Android.Material.AppBar;
|
||||||
|
using keepass2android_appSdkStyle;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using KeePassLib.Serialization;
|
using KeePassLib.Serialization;
|
||||||
|
|
||||||
@@ -79,7 +80,7 @@ namespace keepass2android
|
|||||||
|
|
||||||
SetSupportActionBar(toolbar);
|
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));
|
collapsingToolbar.SetTitle(GetString(Resource.String.QuickUnlock_prefs));
|
||||||
|
|
||||||
if (App.Kp2a.GetDbForQuickUnlock().KpDatabase.Name != "")
|
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
|
<LinearLayout
|
||||||
android:id="@+id/top"
|
android:id="@+id/top"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="1dp"
|
||||||
android:orientation="horizontal" />
|
android:orientation="horizontal" />
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/bottom_bar"
|
android:id="@+id/bottom_bar"
|
||||||
@@ -47,20 +47,20 @@ android:fitsSystemWindows="true">
|
|||||||
android:layout_above="@id/bottom_bar"
|
android:layout_above="@id/bottom_bar"
|
||||||
android:background="#b8b8b8" />
|
android:background="#b8b8b8" />
|
||||||
|
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
android:id="@+id/main_content"
|
android:id="@+id/main_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_above="@id/divider2"
|
android:layout_above="@id/divider2"
|
||||||
android:layout_below="@id/top"
|
android:layout_below="@id/top"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
<android.support.design.widget.AppBarLayout
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/appbar"
|
android:id="@+id/appbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/detail_backdrop_height"
|
android:layout_height="@dimen/detail_backdrop_height"
|
||||||
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
<android.support.design.widget.CollapsingToolbarLayout
|
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||||
android:id="@+id/collapsing_toolbar"
|
android:id="@+id/collapsing_toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@@ -98,9 +98,10 @@ android:fitsSystemWindows="true">
|
|||||||
android:layout_height="?attr/actionBarSize"
|
android:layout_height="?attr/actionBarSize"
|
||||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
|
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
|
||||||
app:layout_collapseMode="pin" />
|
app:layout_collapseMode="pin" />
|
||||||
</android.support.design.widget.CollapsingToolbarLayout>
|
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
||||||
</android.support.design.widget.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
<android.support.v4.widget.NestedScrollView
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/scrollview"
|
android:id="@+id/scrollview"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@@ -164,9 +165,9 @@ android:paddingRight="16dp"
|
|||||||
android:background="#0000" />
|
android:background="#0000" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</android.support.v4.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
||||||
</keepass2android.MeasuringRelativeLayout>
|
</keepass2android.MeasuringRelativeLayout>
|
||||||
</LinearLayout>
|
</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
|
<RelativeLayout
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:background="?activityBackgroundColor"
|
android:background="?android:attr/colorBackground"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:id="@+id/entry_scroll"
|
android:id="@+id/entry_scroll"
|
||||||
android:background="?activityBackgroundColor"
|
android:background="?android:attr/colorBackground"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:src="@drawable/ic00" />
|
android:src="@drawable/ic00" />
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
style="@style/EntryEditSingleLine_TextInputLayout"
|
style="@style/EntryEditSingleLine_TextInputLayout"
|
||||||
android:layout_toLeftOf="@id/icon_button">
|
android:layout_toLeftOf="@id/icon_button">
|
||||||
<EditText
|
<EditText
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
android:hint="@string/hint_title"
|
android:hint="@string/hint_title"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:capitalize="sentences" />
|
android:capitalize="sentences" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
<!--User-->
|
<!--User-->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<ImageView
|
<ImageView
|
||||||
style="@style/EntryEditSingleLine_ImageView"
|
style="@style/EntryEditSingleLine_ImageView"
|
||||||
android:src="@drawable/ic_entry_username" />
|
android:src="@drawable/ic_entry_username" />
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||||
<EditText
|
<EditText
|
||||||
style="@style/EntryEditSingleLine_EditText"
|
style="@style/EntryEditSingleLine_EditText"
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
android:hint="@string/hint_username"
|
android:hint="@string/hint_username"
|
||||||
android:inputType="textEmailAddress"
|
android:inputType="textEmailAddress"
|
||||||
android:singleLine="true" />
|
android:singleLine="true" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<!-- password-->
|
<!-- password-->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||||
<EditText
|
<EditText
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
android:inputType="textPassword"
|
android:inputType="textPassword"
|
||||||
android:hint="password"
|
android:hint="password"
|
||||||
android:importantForAccessibility="no"/>
|
android:importantForAccessibility="no"/>
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
<ImageView
|
<ImageView
|
||||||
style="@style/EntryEditSingleLine_ImageView"
|
style="@style/EntryEditSingleLine_ImageView"
|
||||||
android:src="@drawable/ic_entry_url" />
|
android:src="@drawable/ic_entry_url" />
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||||
<EditText
|
<EditText
|
||||||
style="@style/EntryEditSingleLine_EditText"
|
style="@style/EntryEditSingleLine_EditText"
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
android:hint="@string/hint_url"
|
android:hint="@string/hint_url"
|
||||||
android:inputType="textUri"
|
android:inputType="textUri"
|
||||||
android:singleLine="true" />
|
android:singleLine="true" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<!-- Comments -->
|
<!-- Comments -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -140,14 +140,14 @@
|
|||||||
<ImageView
|
<ImageView
|
||||||
style="@style/EntryEditSingleLine_ImageView"
|
style="@style/EntryEditSingleLine_ImageView"
|
||||||
android:src="@drawable/ic_entry_comments" />
|
android:src="@drawable/ic_entry_comments" />
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||||
<EditText
|
<EditText
|
||||||
style="@style/EntryEditSingleLine_EditText"
|
style="@style/EntryEditSingleLine_EditText"
|
||||||
android:id="@+id/entry_comment"
|
android:id="@+id/entry_comment"
|
||||||
android:hint="@string/hint_comment"
|
android:hint="@string/hint_comment"
|
||||||
android:inputType="textMultiLine" />
|
android:inputType="textMultiLine" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/entry_extras_container"
|
android:id="@+id/entry_extras_container"
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
<ImageView
|
<ImageView
|
||||||
style="@style/EntryEditSingleLine_ImageView"
|
style="@style/EntryEditSingleLine_ImageView"
|
||||||
android:src="@drawable/ic_entry_tags" />
|
android:src="@drawable/ic_entry_tags" />
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||||
<EditText
|
<EditText
|
||||||
style="@style/EntryEditSingleLine_EditText"
|
style="@style/EntryEditSingleLine_EditText"
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
android:hint="@string/hint_tags"
|
android:hint="@string/hint_tags"
|
||||||
android:inputType="text"
|
android:inputType="text"
|
||||||
android:singleLine="true" />
|
android:singleLine="true" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<!-- Override URL -->
|
<!-- Override URL -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -241,7 +241,7 @@
|
|||||||
<ImageView
|
<ImageView
|
||||||
style="@style/EntryEditSingleLine_ImageView"
|
style="@style/EntryEditSingleLine_ImageView"
|
||||||
android:src="@drawable/ic_entry_url" />
|
android:src="@drawable/ic_entry_url" />
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||||
<EditText
|
<EditText
|
||||||
style="@style/EntryEditSingleLine_EditText"
|
style="@style/EntryEditSingleLine_EditText"
|
||||||
@@ -249,7 +249,7 @@
|
|||||||
android:hint="@string/hint_override_url"
|
android:hint="@string/hint_override_url"
|
||||||
android:inputType="textUri"
|
android:inputType="textUri"
|
||||||
android:singleLine="true" />
|
android:singleLine="true" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<!--expires-->
|
<!--expires-->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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:id="@+id/main_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@@ -9,18 +9,18 @@
|
|||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:fillViewport="true"
|
android:fillViewport="true"
|
||||||
android:background="?activityBackgroundColor"
|
android:background="?android:attr/colorBackground"
|
||||||
android:scrollbarStyle="insideOverlay">
|
android:scrollbarStyle="insideOverlay">
|
||||||
<keepass2android.view.EntryContentsView
|
<keepass2android.view.EntryContentsView
|
||||||
android:id="@+id/entry_contents"
|
android:id="@+id/entry_contents"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="fill_parent" />
|
android:layout_width="fill_parent" />
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
<android.support.design.widget.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/entry_edit"
|
android:id="@+id/entry_edit"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="end|bottom|right"
|
android:layout_gravity="end|bottom|right"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:src="@drawable/ic_fab_edit" />
|
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"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:background="?activityBackgroundColor"
|
android:background="?android:attr/colorBackground"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_marginBottom="12dip"
|
android:layout_marginBottom="12dip"
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:background="?activityBackgroundColor"
|
android:background="?android:attr/colorBackground"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:id="@+id/wordcountlayout">
|
android:id="@+id/wordcountlayout">
|
||||||
@@ -146,8 +146,8 @@
|
|||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:text="7"
|
android:text="7"
|
||||||
android:hint="@string/hint_wordcount" />
|
android:hint="@string/hint_wordcount" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:id="@+id/wordseparatorlayout">
|
android:id="@+id/wordseparatorlayout">
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:text=" "
|
android:text=" "
|
||||||
android:hint="@string/hint_wordseparator" />
|
android:hint="@string/hint_wordseparator" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
android:layout_width="match_parent">
|
android:layout_width="match_parent">
|
||||||
|
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="50dp"
|
android:layout_width="50dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
@@ -199,7 +199,7 @@
|
|||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:text="12"
|
android:text="12"
|
||||||
android:hint="@string/hint_length" />
|
android:hint="@string/hint_length" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:background="?activityBackgroundColor">
|
android:background="?android:attr/colorBackground">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/top"
|
android:id="@+id/top"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -355,7 +355,7 @@
|
|||||||
android:layout_above="@id/bottom_bar"
|
android:layout_above="@id/bottom_bar"
|
||||||
android:background="#b8b8b8" />
|
android:background="#b8b8b8" />
|
||||||
|
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
android:id="@+id/main_content"
|
android:id="@+id/main_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@@ -367,7 +367,7 @@
|
|||||||
android:id="@+id/list_fragment"
|
android:id="@+id/list_fragment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
<android.support.design.widget.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/fabCancelAddNew"
|
android:id="@+id/fabCancelAddNew"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -375,14 +375,14 @@
|
|||||||
android:layout_gravity="end|bottom|right"
|
android:layout_gravity="end|bottom|right"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:src="@drawable/ic_cross" />
|
android:src="@drawable/ic_cross" />
|
||||||
<android.support.design.widget.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/fabAddNew"
|
android:id="@+id/fabAddNew"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="end|bottom|right"
|
android:layout_gravity="end|bottom|right"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:src="@drawable/ic_plus" />
|
android:src="@drawable/ic_plus" />
|
||||||
<android.support.design.widget.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/fabAddNewGroup"
|
android:id="@+id/fabAddNewGroup"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -391,7 +391,7 @@
|
|||||||
android:layout_marginRight="16dp"
|
android:layout_marginRight="16dp"
|
||||||
android:layout_marginBottom="88dp"
|
android:layout_marginBottom="88dp"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
<android.support.design.widget.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/fabAddNewEntry"
|
android:id="@+id/fabAddNewEntry"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -400,7 +400,7 @@
|
|||||||
android:layout_marginRight="16dp"
|
android:layout_marginRight="16dp"
|
||||||
android:layout_marginBottom="160dp"
|
android:layout_marginBottom="160dp"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
<android.support.design.widget.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/fabSearch"
|
android:id="@+id/fabSearch"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -409,7 +409,7 @@
|
|||||||
android:layout_marginRight="16dp"
|
android:layout_marginRight="16dp"
|
||||||
android:layout_marginBottom="88dp"
|
android:layout_marginBottom="88dp"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
<android.support.design.widget.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/fabTotpOverview"
|
android:id="@+id/fabTotpOverview"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -418,5 +418,5 @@
|
|||||||
android:layout_marginRight="16dp"
|
android:layout_marginRight="16dp"
|
||||||
android:layout_marginBottom="160dp"
|
android:layout_marginBottom="160dp"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
@@ -22,7 +22,7 @@
|
|||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:verticalSpacing="5dp"
|
android:verticalSpacing="5dp"
|
||||||
android:background="?activityBackgroundColor"
|
android:background="@color/bgColorLight"
|
||||||
android:horizontalSpacing="5dp"
|
android:horizontalSpacing="5dp"
|
||||||
android:columnWidth="60dp"
|
android:columnWidth="60dp"
|
||||||
android:numColumns="auto_fit"
|
android:numColumns="auto_fit"
|
||||||
|
@@ -10,11 +10,11 @@
|
|||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:id="@+id/relative_layout"
|
android:id="@+id/relative_layout"
|
||||||
android:background="?activityBackgroundColor">
|
android:background="@color/bgColorLight">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/top"
|
android:id="@+id/top"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="1dp"
|
||||||
android:orientation="horizontal" />
|
android:orientation="horizontal" />
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/bottom_bar"
|
android:id="@+id/bottom_bar"
|
||||||
@@ -44,20 +44,20 @@
|
|||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:layout_above="@id/bottom_bar"
|
android:layout_above="@id/bottom_bar"
|
||||||
android:background="#b8b8b8" />
|
android:background="#b8b8b8" />
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
android:id="@+id/main_content"
|
android:id="@+id/main_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_above="@id/divider2"
|
android:layout_above="@id/divider2"
|
||||||
android:layout_below="@id/top"
|
android:layout_below="@id/top"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
<android.support.design.widget.AppBarLayout
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/appbar"
|
android:id="@+id/appbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/detail_backdrop_height"
|
android:layout_height="@dimen/detail_backdrop_height"
|
||||||
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
<android.support.design.widget.CollapsingToolbarLayout
|
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||||
android:id="@+id/collapsing_toolbar"
|
android:id="@+id/collapsing_toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@@ -96,9 +96,9 @@
|
|||||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
|
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
|
||||||
app:titleTextStyle="@style/MyTitleTextStyle"
|
app:titleTextStyle="@style/MyTitleTextStyle"
|
||||||
app:layout_collapseMode="pin" />
|
app:layout_collapseMode="pin" />
|
||||||
</android.support.design.widget.CollapsingToolbarLayout>
|
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
||||||
</android.support.design.widget.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
<android.support.v4.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/scrollview"
|
android:id="@+id/scrollview"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@@ -139,6 +139,7 @@
|
|||||||
android:layout_marginLeft="4dp"
|
android:layout_marginLeft="4dp"
|
||||||
android:text="@string/hint_login_pass" />
|
android:text="@string/hint_login_pass" />
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:orientation="horizontal"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
@@ -371,10 +372,10 @@
|
|||||||
android:layout_height="200dp"
|
android:layout_height="200dp"
|
||||||
android:background="#0000" />
|
android:background="#0000" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</android.support.v4.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
</keepass2android.MeasuringRelativeLayout>
|
</keepass2android.MeasuringRelativeLayout>
|
||||||
<android.support.design.widget.NavigationView
|
<com.google.android.material.navigation.NavigationView
|
||||||
android:id="@+id/navigation"
|
android:id="@+id/navigation"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@@ -432,5 +433,5 @@
|
|||||||
style="@style/NavDrawerButton" />
|
style="@style/NavDrawerButton" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</android.support.design.widget.NavigationView>
|
</com.google.android.material.navigation.NavigationView>
|
||||||
</keepass2android.FixedDrawerLayout>
|
</keepass2android.FixedDrawerLayout>
|
@@ -2,7 +2,7 @@
|
|||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?activityBackgroundColor"
|
android:background="@color/bgColorLight"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
<include
|
<include
|
||||||
android:id="@+id/mytoolbar"
|
android:id="@+id/mytoolbar"
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:background="?activityBackgroundColor">
|
android:background="?android:attr/colorBackground">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/top"
|
android:id="@+id/top"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:background="?activityBackgroundColor">
|
android:background="?android:attr/colorBackground">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/top"
|
android:id="@+id/top"
|
||||||
android:layout_width="match_parent"
|
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