ammarahm-ed / react-native-scoped-storage

MIT License
58 stars 10 forks source link

Questions about Read/Write access #23

Closed brunofariasd closed 2 years ago

brunofariasd commented 2 years ago

Hello, thx for awesome lib. I'm having a problem using this. My question is if using the function openDocumentTree i will be able to use another library that i will have read and write access without any problem.

Example:

Using openDocumentTree in path: "/storage/emulated/0/Android/media",

this return {"lastModified": 1641555076000, "name": "media", "path": "/storage/emulated/0/Android/media", "type": "directory", "uri": "content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fmedia"}

So, this means that I will have read and write access to the above path and all its subdirectories ? I'm trying to use this library to get the permissions, and soon after I'll use another lib (RNFetchBlob) to read files in 'Android/Media/....Statuses' from Whatsapp Path.

I'm using:

"react-native-blob-util": "^0.13.17", "react-native-scoped-storage": "^1.9.1", "react-native": "0.66.3",

Thx a lot.

ammarahm-ed commented 2 years ago

@brunofariasd You cannot use another library. You will have to use this library to read/write files to the given uri. Remember that you cannot use the path to read/write but only the uri.

If some other library supports reading/writing to a uri, it might be possible but I don't think any library supports it.

brunofariasd commented 2 years ago

@brunofariasd You cannot use another library. You will have to use this library to read/write files to the given uri. Remember that you cannot use the path to read/write but only the uri.

If some other library supports reading/writing to a uri, it might be possible but I don't think any library supports it.

So, another question is when granting access to the path "/storage/emulated/0/Android/media", with return: {"lastModified": 1641555076000, "name": "media", "path": "/storage/emulated/0/Android/media", "type": "directory", "uri": "content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fmedia"}

Does this also give me access to your subdirectories ? When I run the function STAT in URI:

ScopedStorage.stat('content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fmedia%2Fcom.whatsapp%2FWhatsapp%2FMedia%2F.Statuses') .then(res => { console.log(res); }) .catch(res => { console.log(res); });

this return:

LOG {"lastModified": 0, "name": null, "type": "file", "uri": "content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fmedia%2Fcom.whatsapp%2FWhatsapp%2FMedia%2F.Statuses"}

But when i run LISTFILES this return:

[Error: 'content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fmedia%2Fcom.whatsapp%2FWhatsapp%2FMedia%2F.Statuses'is not a directory.]

Listfiles works correctly when choosing path .statuses ('/storage/emulated/0/android/media/com.whatsapp/whatsapp/media/.statuses'), but it doesn't work when i select some directories above.