Compare commits
	
		
			11 Commits
		
	
	
		
			v1.12-r2
			...
			bugfix/lis
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					677c6555e8 | ||
| 
						 | 
					c62f6ef139 | ||
| 
						 | 
					0c34625782 | ||
| 
						 | 
					e86fa6f9fa | ||
| 
						 | 
					e2e975f357 | ||
| 
						 | 
					8eaf6d3f88 | ||
| 
						 | 
					a9fed1c203 | ||
| 
						 | 
					6d8407676d | ||
| 
						 | 
					1157716c9c | ||
| 
						 | 
					861615b7a4 | ||
| 
						 | 
					e12d11264e | 
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							@@ -20,6 +20,7 @@
 | 
			
		||||
#  - nuget: restore NuGet packages
 | 
			
		||||
#  - msbuild: build the project
 | 
			
		||||
#  - apk: same as all
 | 
			
		||||
#  - manifestlink: creates a symlink (to be used in building) to the AndroidManifest corresponding to the selected Flavor
 | 
			
		||||
#
 | 
			
		||||
#  - distclean: run a 'git clean -xdff'. Remove everyhing that is not in the git tree.
 | 
			
		||||
#  - clean: all clean_* targets below
 | 
			
		||||
 
 | 
			
		||||
@@ -35,8 +35,6 @@ namespace KeePassLib.Cryptography
 | 
			
		||||
		{
 | 
			
		||||
			get
 | 
			
		||||
			{
 | 
			
		||||
				Debug.Assert(m_dicts.Count > 0); // Should be initialized
 | 
			
		||||
 | 
			
		||||
				int iMaxLen = 0;
 | 
			
		||||
				foreach(int iLen in m_dicts.Keys)
 | 
			
		||||
				{
 | 
			
		||||
 
 | 
			
		||||
@@ -1148,30 +1148,46 @@ namespace keepass2android.Io
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            string? driveId = parentPath.DriveId;
 | 
			
		||||
            if ((string.IsNullOrEmpty(driveId)) && (drives?.Any() == true))
 | 
			
		||||
            {
 | 
			
		||||
                driveId = drives.First().Id;
 | 
			
		||||
            }
 | 
			
		||||
        
 | 
			
		||||
            
 | 
			
		||||
            if (!CanListShares)
 | 
			
		||||
                return result;
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            var sharedWithMeResponse = await client.Drives[driveId].SharedWithMe.GetAsSharedWithMeGetResponseAsync();
 | 
			
		||||
 | 
			
		||||
            foreach (DriveItem i in sharedWithMeResponse?.Value ?? [])
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var oneDrive2ItemLocation = parentPath.BuildShare(i.RemoteItem.Id, i.RemoteItem.Name, i.RemoteItem.WebUrl, i.RemoteItem.ParentReference.DriveId);
 | 
			
		||||
                FileDescription sharedFileEntry = new FileDescription()
 | 
			
		||||
                string? driveId = parentPath.DriveId;
 | 
			
		||||
                if (string.IsNullOrEmpty(driveId))
 | 
			
		||||
                {
 | 
			
		||||
                    CanWrite = true, CanRead = true, DisplayName = i.Name,
 | 
			
		||||
                    IsDirectory = true,
 | 
			
		||||
                    Path = oneDrive2ItemLocation.ToString()
 | 
			
		||||
                };
 | 
			
		||||
                result.Add(sharedFileEntry);
 | 
			
		||||
                    driveId = (await client.Me.Drive.GetAsync()).Id;
 | 
			
		||||
                }
 | 
			
		||||
                if ((string.IsNullOrEmpty(driveId)) && (drives?.Any() == true))
 | 
			
		||||
                {
 | 
			
		||||
                    driveId = drives.First().Id;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                var sharedWithMeResponse = await client.Drives[driveId].SharedWithMe.GetAsSharedWithMeGetResponseAsync();
 | 
			
		||||
 | 
			
		||||
                foreach (DriveItem i in sharedWithMeResponse?.Value ?? [])
 | 
			
		||||
                {
 | 
			
		||||
                    var oneDrive2ItemLocation = parentPath.BuildShare(i.RemoteItem.Id, i.RemoteItem.Name, i.RemoteItem.WebUrl, i.RemoteItem.ParentReference.DriveId);
 | 
			
		||||
                    FileDescription sharedFileEntry = new FileDescription()
 | 
			
		||||
                    {
 | 
			
		||||
                        CanWrite = true,
 | 
			
		||||
                        CanRead = true,
 | 
			
		||||
                        DisplayName = i.Name,
 | 
			
		||||
                        IsDirectory = (i.Folder != null) || ((i.RemoteItem != null) && (i.RemoteItem.Folder != null)),
 | 
			
		||||
                        Path = oneDrive2ItemLocation.ToString()
 | 
			
		||||
                    };
 | 
			
		||||
                    result.Add(sharedFileEntry);
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception e)
 | 
			
		||||
            {
 | 
			
		||||
                logDebug("Failed to list shares: " + e);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -113,4 +113,15 @@ extends Activity implements JavaFileStorage.FileStorageSetupActivity {
 | 
			
		||||
		return state;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
 | 
			
		||||
		super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 | 
			
		||||
		MainActivity.storageToTest.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -147,6 +147,7 @@ import java.util.List;
 | 
			
		||||
//import keepass2android.javafilestorage.DropboxCloudRailStorage;
 | 
			
		||||
import keepass2android.javafilestorage.DropboxV2Storage;
 | 
			
		||||
import keepass2android.javafilestorage.GoogleDriveAppDataFileStorage;
 | 
			
		||||
import keepass2android.javafilestorage.GoogleDriveFullFileStorage;
 | 
			
		||||
import keepass2android.javafilestorage.ICertificateErrorHandler;
 | 
			
		||||
import keepass2android.javafilestorage.JavaFileStorage;
 | 
			
		||||
import keepass2android.javafilestorage.JavaFileStorage.FileEntry;
 | 
			
		||||
@@ -547,7 +548,7 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		//storageToTest = new GoogleDriveAppDataFileStorage();
 | 
			
		||||
		storageToTest = new WebDavStorage(new ICertificateErrorHandler() {
 | 
			
		||||
		/*storageToTest = new WebDavStorage(new ICertificateErrorHandler() {
 | 
			
		||||
			@Override
 | 
			
		||||
			public boolean onValidationError(String error) {
 | 
			
		||||
				return false;
 | 
			
		||||
@@ -558,10 +559,11 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
		//storageToTest =  new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
 | 
			
		||||
		//storageToTest =  new DropboxFileStorage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
 | 
			
		||||
		//storageToTest = new DropboxAppFolderFileStorage(ctx,"ax0268uydp1ya57", "3s86datjhkihwyc", true);
 | 
			
		||||
		storageToTest = new GoogleDriveFullFileStorage();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		return storageToTest;
 | 
			
		||||
@@ -580,6 +582,8 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
 | 
			
		||||
		getMenuInflater().inflate(R.menu.main, menu);
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 | 
			
		||||
 
 | 
			
		||||
@@ -47,8 +47,8 @@
 | 
			
		||||
  <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" />
 | 
			
		||||
  <application
 | 
			
		||||
	android:icon="@mipmap/ic_launcher_online"
 | 
			
		||||
	android:roundIcon="@mipmap/ic_launcher_online_round"
 | 
			
		||||
	android:icon="@mipmap/ic_launcher_debug"
 | 
			
		||||
	android:roundIcon="@mipmap/ic_launcher_debug_round"
 | 
			
		||||
	android:networkSecurityConfig="@xml/network_security_config"
 | 
			
		||||
	>
 | 
			
		||||
    <meta-data
 | 
			
		||||
@@ -243,6 +243,15 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
 | 
			
		||||
        <action android:name="keepass2android.ACTION_START_WITH_TASK" />
 | 
			
		||||
        <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
      </intent-filter>
 | 
			
		||||
 | 
			
		||||
      <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="otpauth"/>
 | 
			
		||||
        <data android:host="totp"/>
 | 
			
		||||
        <data android:host="hotp"/>
 | 
			
		||||
      </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" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
			android:versionCode="203"
 | 
			
		||||
			android:versionName="1.12-r2"
 | 
			
		||||
			android:versionCode="204"
 | 
			
		||||
			android:versionName="1.12-r3"
 | 
			
		||||
			package="keepass2android.keepass2android"
 | 
			
		||||
			xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
			android:installLocation="auto">
 | 
			
		||||
@@ -255,7 +255,14 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
 | 
			
		||||
        <action android:name="keepass2android.ACTION_START_WITH_TASK" />
 | 
			
		||||
        <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
      </intent-filter>
 | 
			
		||||
      x
 | 
			
		||||
      <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="otpauth"/>
 | 
			
		||||
        <data android:host="totp"/>
 | 
			
		||||
        <data android:host="hotp"/>
 | 
			
		||||
      </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" />
 | 
			
		||||
 
 | 
			
		||||
@@ -236,6 +236,14 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
 | 
			
		||||
				<action android:name="keepass2android.ACTION_START_WITH_TASK" />
 | 
			
		||||
				<category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
			</intent-filter>
 | 
			
		||||
      <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="otpauth"/>
 | 
			
		||||
        <data android:host="totp"/>
 | 
			
		||||
        <data android:host="hotp"/>
 | 
			
		||||
      </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" />
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 11 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 20 KiB  | 
@@ -27,6 +27,7 @@ using KeePassLib.Serialization;
 | 
			
		||||
using Console = System.Console;
 | 
			
		||||
using Object = Java.Lang.Object;
 | 
			
		||||
using AndroidX.Core.Content;
 | 
			
		||||
using Uri = Android.Net.Uri;
 | 
			
		||||
 | 
			
		||||
namespace keepass2android
 | 
			
		||||
{
 | 
			
		||||
@@ -302,9 +303,23 @@ namespace keepass2android
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
                if (Intent.Action == Intent.ActionView)
 | 
			
		||||
                {
 | 
			
		||||
                    GetIocFromViewIntent(Intent);
 | 
			
		||||
                    if (IsOtpUri(Intent.Data))
 | 
			
		||||
                    {
 | 
			
		||||
                        AppTask = new CreateEntryThenCloseTask()
 | 
			
		||||
                        {
 | 
			
		||||
                            AllFields = Newtonsoft.Json.JsonConvert.SerializeObject(new Dictionary<string, string>()
 | 
			
		||||
                            {
 | 
			
		||||
                                { "otp", Intent.DataString }
 | 
			
		||||
                            })
 | 
			
		||||
                        };
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        GetIocFromViewIntent(Intent);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else if (Intent.Action == Intent.ActionSend)
 | 
			
		||||
                {
 | 
			
		||||
@@ -334,6 +349,11 @@ namespace keepass2android
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsOtpUri(Uri? uri)
 | 
			
		||||
        {
 | 
			
		||||
            return uri?.Scheme == "otpauth";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void OnStart()
 | 
			
		||||
        {
 | 
			
		||||
            base.OnStart();
 | 
			
		||||
 
 | 
			
		||||
@@ -93,11 +93,13 @@ namespace keepass2android
 | 
			
		||||
#if DEBUG
 | 
			
		||||
        public const string PackagePart = "keepass2android_debug";
 | 
			
		||||
		public const string Searchable = "@xml/searchable_debug";
 | 
			
		||||
        public const int LauncherIcon = Resource.Mipmap.ic_launcher_debug;
 | 
			
		||||
#else
 | 
			
		||||
		public const string PackagePart = "keepass2android";
 | 
			
		||||
		public const string Searchable = "@xml/searchable";
 | 
			
		||||
		public const int LauncherIcon = Resource.Mipmap.ic_launcher_online;
 | 
			
		||||
#endif
 | 
			
		||||
        public const int LauncherIcon = Resource.Mipmap.ic_launcher_online;
 | 
			
		||||
 | 
			
		||||
        public const int NotificationLockedIcon = Resource.Drawable.ic_notify_loaded;
 | 
			
		||||
        public const int NotificationUnlockedIcon = Resource.Drawable.ic_notify_locked;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -733,18 +733,20 @@
 | 
			
		||||
    <AndroidNativeLibrary Include="..\java\argon2\libs\armeabi-v7a\libargon2.so" Link="armeabi-v7a\libargon2.so" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.7.0.3" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.AppCompat.AppCompatResources" Version="1.7.0.3" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.28" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Biometric" Version="1.1.0.25" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.CoordinatorLayout" Version="1.2.0.17" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.CursorAdapter" Version="1.0.0.29" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Lifecycle.Common" Version="2.8.5.1" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Lifecycle.Runtime" Version="2.8.5.1" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.10" />
 | 
			
		||||
    <PackageReference Include="Xamarin.Google.Android.Material" Version="1.11.0.3" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.5.0.2" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Code.Scanner" Version="116.1.0.3" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.7.0.5" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.AppCompat.AppCompatResources" Version="1.7.0.5" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.30" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Biometric" Version="1.1.0.27" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.CoordinatorLayout" Version="1.3.0" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.CursorAdapter" Version="1.0.0.31" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Lifecycle.Common" Version="2.8.7.2" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Lifecycle.Runtime" Version="2.8.7.2" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.12" />
 | 
			
		||||
    <PackageReference Include="Xamarin.Google.Android.Material" Version="1.12.0.2" />
 | 
			
		||||
    <PackageReference Include="Xamarin.Google.Guava" Version="33.4.0.1" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Auth" Version="121.3.0.1" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.5.0.4" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Code.Scanner" Version="116.1.0.10" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj" />
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user