Comments (7)
What's the library version that caused this issue?
from simplestorage.
What's the library version that caused this issue?
I use the latest version 1.5.0, but I don't think that the problem from the library itself, I think the problem comes from this package androidx.documentfile.provider
This function return null.
/**
* @return file representing newly created document, or null if failed
*/
@Nullable
public abstract DocumentFile createFile(@NonNull String mimeType, @NonNull String displayName);
And the same for createFolder.
from simplestorage.
Can you copy showGrantedUris()
from this file and test it on your project?
I want to see the list of granted URIs on your Xiaomi device.
from simplestorage.
Can you copy
showGrantedUris()
from this file and test it on your project?I want to see the list of granted URIs on your Xiaomi device.
I tested it and this is what it gives me:
Granted URIs [/storage/emulated/0/Download]
I already testing if the app have access to the chosen URI by user before perform anything else. with this fun:
private fun isStorageUriGranted(storageId: String, basePath: String): Boolean{
val root = createDocumentUri(storageId, basePath)
val contentResolver = applicationContext.contentResolver
return contentResolver.persistedUriPermissions.any {
it.isReadPermission && it.isWritePermission && it.uri == root
}
}
from simplestorage.
I see... So, your URI is only applicable to Download
folder, but you were trying to make folder outside this directory. If you want to create folders inside this path, please use DocumentFileCompat.fromPublicFolder()
:
val download = DocumentFileCompat.fromPublicFolder(this, PublicDirectory.DOWNLOADS, requiresWriteAccess = true) ?: return
val newFolder = download.makeFolder(this, "Example") ?: return
You'll not be able to access parent
from path /storage/emulated/0/Download
, because your URI is only limited to this path, hence the parent is always null.
But if you want wider access for Android 10, please grant access to the root path of the storage partition, in this case /storage/emulated/0
. In Android 10, if your granted URI is this path, then you'll be able to create folders anywhere in that storage partition.
from simplestorage.
val download = DocumentFileCompat.fromPublicFolder(this, PublicDirectory.DOWNLOADS, requiresWriteAccess = true) ?: return
val newFolder = download.makeFolder(this, "Example") ?: return
This appears to not work anymore, failing with a java.lang.NullPointerException
when calling the makeFolder() func.
from simplestorage.
In fact, the following causes a NullPointerException too on Android 11:
val download = DocumentFileCompat.fromPublicFolder(appContext, PublicDirectory.DOWNLOADS, requiresWriteAccess=true)
Log.d("MyApp", "Debugv Can write to Downloads? " + download!!.canModify(appContext))
/EDIT: the solution here works: #84 (comment)
from simplestorage.
Related Issues (20)
- How to regain access to a folder of DocumentFile or DocumentFileCompat outside of callbacks? HOT 9
- How to overwrite/truncate an already existing file? HOT 2
- Is there some way to listen for changes under a tree URI or at least over a single document URI? HOT 1
- Just a question to cloud storages like GoogleDrive / Dropbox
- Request codes must be unique. File picker=3, Folder picker=0, Storage access=0, Create file=4 HOT 1
- IllegalArgumentsException: Empty Storage ID HOT 4
- Execution failed for task ':app:mergeDebugResources'
- On Android 13 device hasStorageAccess returns false HOT 1
- How can i set specific path or uri in storageHelper.openFilePicker(REQUEST_CODE_PICK_FILE_FOR_RENAME)? HOT 1
- Awesome HOT 1
- Case when permission is canceled was not handled HOT 5
- Not working on complieSDK/targetSDK 33 HOT 3
- filterMimeTypes not working with single or mulitple mime types HOT 1
- Judgment of permissions is not accurate
- Error " java.lang.IllegalArgumentException: Request codes must be unique" similar to Issue #93 in 1.5.5 HOT 2
- Full Access above 33 using MANAGE_EXTERNAL_STORAGE HOT 1
- multiple mime type HOT 1
- Fully support coroutines HOT 2
- [QA/Bug] getting permission denied HOT 2
- How can I specify to obtain files of certain formats, and then customize the view to display these files, such as PDF files? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from simplestorage.