PhilippC / keepass2android

Password manager app for Android
https://play.google.com/store/apps/details?id=keepass2android.keepass2android
GNU General Public License v3.0
4.7k stars 378 forks source link

White screen after opening content://passwr.kdbx #1124

Open vip9 opened 4 years ago

vip9 commented 4 years ago

I got white (sometimes dark) blank screen when I try to open cached file downloaded by separate filemanager.

Steps:

The problem is not with first run, but when Solid Explorer goes away, I am unable to open K2A standalone (for the second time), e.g. to open other db.

There are two ways to run K2A, either clearing app data or trying to open file from external filemanager.

K2A after second open of downloaded file shows that file and cache are ion sync.

I am using Android 10, tried on latest google play version, also beta.

Got few logcats (the app crashed), probably related: 01-22 12:40:21.186 17600 17600 D KP2A : Java.Lang.SecurityException: No persistable permission grants found for UID 10225 and Uri content://pl.solidexplorer2.files/storage/emulated/0/Android/data/pl.solidexplorer2/cache/temp/passwr.kdbx [user 0] ---> Android.Util.AndroidException: Remote stack trace: 01-22 12:40:21.186 17600 17600 D KP2A : at com.android.server.uri.UriGrantsManagerService.takePersistableUriPermission(UriGrantsManagerService.java:332) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.IUriGrantsManager$Stub.onTransact(IUriGrantsManager.java:139) 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Binder.execTransactInternal(Binder.java:1021) 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Binder.execTransact(Binder.java:994) 01-22 12:40:21.186 17600 17600 D KP2A : 01-22 12:40:21.186 17600 17600 D KP2A : --- End of inner exception stack trace --- 01-22 12:40:21.186 17600 17600 D KP2A : at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <d791b02b7879422ba29126cf38d80c64>:0 01-22 12:40:21.186 17600 17600 D KP2A : at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0002a] in <d791b02b7879422ba29126cf38d80c64>:0 01-22 12:40:21.186 17600 17600 D KP2A : at Android.Content.ContentResolver.TakePersistableUriPermission (Android.Net.Uri uri, Android.Content.ActivityFlags modeFlags) [0x00044] in <7cfb4203c18d4c489d9924394cbddb6b>:0 01-22 12:40:21.186 17600 17600 D KP2A : at keepass2android.Io.IoUtil.TryTakePersistablePermissions (Android.Content.ContentResolver contentResolver, Android.Net.Uri uri) [0x00015] in <0e5af143c4a34a5ab0fb6ac3dd129fdc>:0 01-22 12:40:21.186 17600 17600 D KP2A : --- End of managed Java.Lang.SecurityException stack trace --- 01-22 12:40:21.186 17600 17600 D KP2A : java.lang.SecurityException: No persistable permission grants found for UID 10225 and Uri content://pl.solidexplorer2.files/storage/emulated/0/Android/data/pl.solidexplorer2/cache/temp/passwr.kdbx [user 0] 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Parcel.createException(Parcel.java:2088) 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Parcel.readException(Parcel.java:2056) 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Parcel.readException(Parcel.java:2004) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.IUriGrantsManager$Stub$Proxy.takePersistableUriPermission(IUriGrantsManager.java:280) 01-22 12:40:21.186 17600 17600 D KP2A : at android.content.ContentResolver.takePersistableUriPermission(ContentResolver.java:2435) 01-22 12:40:21.186 17600 17600 D KP2A : at md5b85ab5ea2545156b0f09600c184a5178.SelectCurrentDbActivity.n_onCreate(Native Method) 01-22 12:40:21.186 17600 17600 D KP2A : at md5b85ab5ea2545156b0f09600c184a5178.SelectCurrentDbActivity.onCreate(SelectCurrentDbActivity.java:33) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.Activity.performCreate(Activity.java:7955) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.Activity.performCreate(Activity.java:7944) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3423) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147) 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Handler.dispatchMessage(Handler.java:107) 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Looper.loop(Looper.java:237) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.ActivityThread.main(ActivityThread.java:7811) 01-22 12:40:21.186 17600 17600 D KP2A : at java.lang.reflect.Method.invoke(Native Method) 01-22 12:40:21.186 17600 17600 D KP2A : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 01-22 12:40:21.186 17600 17600 D KP2A : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076) 01-22 12:40:21.186 17600 17600 D KP2A : Caused by: android.os.RemoteException: Remote stack trace: 01-22 12:40:21.186 17600 17600 D KP2A : at com.android.server.uri.UriGrantsManagerService.takePersistableUriPermission(UriGrantsManagerService.java:332) 01-22 12:40:21.186 17600 17600 D KP2A : at android.app.IUriGrantsManager$Stub.onTransact(IUriGrantsManager.java:139) 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Binder.execTransactInternal(Binder.java:1021) 01-22 12:40:21.186 17600 17600 D KP2A : at android.os.Binder.execTransact(Binder.java:994) 01-22 12:40:21.186 17600 17600 D KP2A :

There is no problem with opening directly from /storage/emulated/0/Android/data/pl.solidexplorer2/cache/temp/passwr.kdbx

nift4 commented 4 years ago

That is the concept from Android that the access is revoked because, as the error says, "no persistable permission grants" are available. The bug here is that KP2A hangs when the content provider file is not accessible.

nift4 commented 4 years ago

As a workaround I would recommened using KP2A Online and connect from there.

d4rken commented 4 years ago

Just FYI, I have a similar issue, found this ticket while looking for solutions.

I think it's an undocument behavior change in API 30, might be the same issue:

https://issuetracker.google.com/issues/161245048