GoogleChrome / GoogleChrome/android-browser-helper

File Handling: Fails from most apps due to read-only permission

Open
#557 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
832
Forks
370
Avg merge
1d 3h
Merged PRs (30d)
6

Description

**Describe the bug**
When opening a file from most apps, into my TWA, it fails with the following error message: `Failed to open a file - no read / write permissions: ...`. From my testing, it seems to happen because most apps send the files as read-only, instead of read *and* write.

**To Reproduce**
Steps to reproduce the behavior:
1. Install a demo TWA that registers a file handler, for any file format of your choosing
2. Open "Files by Google", tap on the 3 dots on a file (in the same file format as step 1) > Open with > demo TWA
3. The TWA launches, but without receiving the file
4. See error in Logcat: `Failed to open a file - no read / write permissions: ...`

**Expected behavior**
The file should be received, even if it's read-only.

For example, Chrome's File Handling API on Windows allows opening read-only files too.

How Chrome seems to behave with read-only files on Windows

In JS, on the `launchParams`'s `FileSystemFileHandle` I can call `getFile()` to read the file without any issues.

However, calling `FileSystemFileHandle.createWritable()` throws an error: `NoModificationAllowedError: Failed to execute 'createWritable' on 'FileSystemFileHandle': Cannot write to a read-only file.`

**Code Snippets**
It seems to be caused by this check: https://github.com/GoogleChrome/android-browser-helper/blob/ba8eb4d4aa9df52828a5050ce585434e1587d3d3/androidbrowserhelper/src/main/java/com/google/androidbrowserhelper/trusted/LauncherActivity.java#L318-L323

@orbital17 Could you please change it, so that it only checks for `Intent.FLAG_GRANT_READ_URI_PERMISSION`?

**Additional context**
For comparison, when using the classic built-in Files app (`com.google.android.documentsui`) to do Open with > demo TWA, the file is received successfully, because it's sent with read and write permission.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.