我使用DocumentFile检查文件、元数据和是否存在。这是实例化的:
DocumentFile df = DocumentFile.fromSingleUri(context, uri);
boolean exists = df.exists();该文件的uri以前是工作的,直到我故意在文件系统中手动删除该文件,以查看App将如何反应。现在,这个堆栈跟踪出现在应用程序中:
03-14 11:33:08.559 27087-27097/? E/DatabaseUtils: Writing exception to parcel
java.lang.IllegalArgumentException: Failed to determine if primary:Download/thefile.txt is child of primary:Download: java.io.FileNotFoundException: Missing file for primary:Download/thefile.txt at /storage/emulated/0/Download/thefile.txt
at com.android.externalstorage.ExternalStorageProvider.isChildDocument(ExternalStorageProvider.java:326)
at android.provider.DocumentsProvider.enforceTree(DocumentsProvider.java:198)
at android.provider.DocumentsProvider.query(DocumentsProvider.java:489)
at android.content.ContentProvider.query(ContentProvider.java:1017)
at android.content.ContentProvider$Transport.query(ContentProvider.java:238)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
at android.os.Binder.execTransact(Binder.java:453)
03-14 11:33:08.561 27046-27419/packagename W/DocumentFile: Failed query: java.lang.IllegalArgumentException: Failed to determine if primary:Download/thefile.txt is child of primary:Download: java.io.FileNotFoundException: Missing file for primary:Download/thefile.txt at /storage/emulated/0/Download/thefile.txt它不会使应用程序崩溃,它只是在每次尝试使用DocumentFile时生成这种堆栈跟踪。因此,在最坏的情况下,这只是一个刺激的逻辑猫。
我希望避免使用FileNotFoundException使用.exists()。因为我正在检查它是否存在,以避免使用不存在的文件。
在这种情况下,推荐使用不同的函数吗?
发布于 2017-03-09 22:44:01
我处理这种烦扰已经太久了,你甚至都不能把它包住。针对此错误,我提交了一份错误报告:
https://code.google.com/p/android/issues/detail?id=241400&thanks=241400&ts=1489099169
加上支持,事情就会得到更快的解决方式。
https://stackoverflow.com/questions/35985321
复制相似问题