diff --git a/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs b/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs index 1743d415..45c8f8b5 100644 --- a/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs +++ b/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Globalization; using System.IO; +using System.Linq; using System.Net; using System.Security; @@ -10,10 +11,12 @@ using Android.App; using Android.Content; using Android.Content.PM; using Android.OS; +using Android.Support.V13.App; +using Android.Support.V4.App; using Java.IO; using KeePassLib.Serialization; using KeePassLib.Utility; - +using ActivityCompat = Android.Support.V13.App.ActivityCompat; using File = System.IO.File; using FileNotFoundException = System.IO.FileNotFoundException; using IOException = System.IO.IOException; @@ -258,10 +261,14 @@ namespace keepass2android.Io if (requiresPermission && (Build.VERSION.SdkInt >= BuildVersionCodes.M)) { - if (activity.Activity.CheckSelfPermission(Manifest.Permission.WriteExternalStorage) == + if ((activity.Activity.CheckSelfPermission(Manifest.Permission.WriteExternalStorage) == Permission.Denied) - { - activity.StartFileUsageProcess(ioc, requestCode, alwaysReturnSuccess); + || + (activity.Activity.CheckSelfPermission(Manifest.Permission.ReadExternalStorage) == + Permission.Denied)) + + { + activity.StartFileUsageProcess(ioc, requestCode, alwaysReturnSuccess); return; } } @@ -279,7 +286,7 @@ namespace keepass2android.Io public void OnCreate(IFileStorageSetupActivity fileStorageSetupActivity, Bundle savedInstanceState) { - ((Activity)fileStorageSetupActivity).RequestPermissions(new[] { Manifest.Permission.WriteExternalStorage }, 0); + Android.Support.V4.App.ActivityCompat.RequestPermissions(((Activity)fileStorageSetupActivity), new[] { Manifest.Permission.WriteExternalStorage, Manifest.Permission.ReadExternalStorage }, 0); } public void OnResume(IFileStorageSetupActivity activity) @@ -417,7 +424,7 @@ namespace keepass2android.Io public void OnRequestPermissionsResult(IFileStorageSetupActivity fileStorageSetupActivity, int requestCode, string[] permissions, Permission[] grantResults) { - fileStorageSetupActivity.State.PutBoolean(PermissionGrantedKey, grantResults[0] == Permission.Granted); + fileStorageSetupActivity.State.PutBoolean(PermissionGrantedKey, grantResults.All(res => res == Permission.Granted)); } } diff --git a/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj b/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj index 3edbdd4c..b58a74a8 100644 --- a/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj +++ b/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj @@ -14,7 +14,8 @@ Off v8.1 true - 06ffb71c + + true @@ -55,6 +56,36 @@ + + ..\packages\Xamarin.Android.Arch.Core.Common.1.0.0\lib\MonoAndroid80\Xamarin.Android.Arch.Core.Common.dll + + + ..\packages\Xamarin.Android.Arch.Lifecycle.Common.1.0.1\lib\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Common.dll + + + ..\packages\Xamarin.Android.Arch.Lifecycle.Runtime.1.0.0\lib\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Runtime.dll + + + ..\packages\Xamarin.Android.Support.Annotations.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Annotations.dll + + + ..\packages\Xamarin.Android.Support.Compat.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Compat.dll + + + ..\packages\Xamarin.Android.Support.Core.UI.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Core.UI.dll + + + ..\packages\Xamarin.Android.Support.Core.Utils.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Core.Utils.dll + + + ..\packages\Xamarin.Android.Support.Fragment.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Fragment.dll + + + ..\packages\Xamarin.Android.Support.Media.Compat.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Media.Compat.dll + + + ..\packages\Xamarin.Android.Support.v13.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.v13.dll + @@ -148,7 +179,35 @@ + + + + + + + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". + + + + + + + + + + + + + + + + + + + + +