Files
libreoffice/android/source
Michael Weghorn 55c17dff49 android: Don't crash trying to process non-existing file from recents
When the "Recent files" list in Android Viewer contained an entry
for an Uri that was no longer pointing to a valid file, a
SecurityException was thrown trying to query the display name
from it.

Catch the SecurityException that is thrown and just return an
empty string, the document is then not displayed in the
"Recent files" list.

One scenario:

1) open file located in the "Download" directory from within the app
2) close the app
3) delete the file
4) open the app again

-> crash, with this backtrace in ADB log:

    05-11 08:37:14.230  3892  4707 E DatabaseUtils: java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadStorageProvider uri content://com.android.providers.downloads.documents/document/msf%3A1091 from pid=6981, uid=10177 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
    05-11 08:37:14.230  3892  4707 E DatabaseUtils:         at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:804)
    05-11 08:37:14.230  3892  4707 E DatabaseUtils:         at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:670)
    05-11 08:37:14.230  3892  4707 E DatabaseUtils:         at android.content.ContentProvider$Transport.query(ContentProvider.java:238)
    05-11 08:37:14.230  3892  4707 E DatabaseUtils:         at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:106)
    05-11 08:37:14.230  3892  4707 E DatabaseUtils:         at android.os.Binder.execTransactInternal(Binder.java:1138)
    05-11 08:37:14.230  3892  4707 E DatabaseUtils:         at android.os.Binder.execTransact(Binder.java:1102)
    05-11 08:37:14.230  6981  6981 D AndroidRuntime: Shutting down VM
    05-11 08:37:14.231  6981  6981 E AndroidRuntime: FATAL EXCEPTION: main
    05-11 08:37:14.231  6981  6981 E AndroidRuntime: Process: org.libreoffice, PID: 6981
    05-11 08:37:14.231  6981  6981 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{org.libreoffice/org.libreoffice.ui.LibreOfficeUIActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadStorageProvider uri content://com.android.providers.downloads.documents/document/msf%3A1091 from pid=6981, uid=10177 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3333)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3477)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2043)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:106)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:216)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7464)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:955)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime: Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadStorageProvider uri content://com.android.providers.downloads.documents/document/msf%3A1091 from pid=6981, uid=10177 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.os.Parcel.createExceptionOrNull(Parcel.java:2285)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.os.Parcel.createException(Parcel.java:2269)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:2252)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.content.ContentProviderProxy.query(ContentProviderNative.java:472)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.content.ContentResolver.query(ContentResolver.java:1112)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at org.libreoffice.ui.FileUtilities.retrieveDisplayNameForDocumentUri(FileUtilities.java:137)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at org.libreoffice.ui.LibreOfficeUIActivity.createUI(LibreOfficeUIActivity.java:206)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at org.libreoffice.ui.LibreOfficeUIActivity.onCreate(LibreOfficeUIActivity.java:147)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:7990)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:7979)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3308)
    05-11 08:37:14.231  6981  6981 E AndroidRuntime:        ... 11 more
    05-11 08:37:14.233  2293  3174 W ActivityTaskManager:   Force finishing activity org.libreoffice/.ui.LibreOfficeUIActivity

Change-Id: I7a8e824e557dba8771cf1f210ae89d6f60498737
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115374
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-05-11 10:05:45 +02:00
..
2020-03-06 16:49:32 +01:00
2020-02-09 19:42:52 +01:00