Android file.exists()为不同活动中的同一文件返回不同的值
我的应用程序下载PDF文件。因此,在某些活动中,我需要检查哪些文件可用于执行某些操作。我正在使用下面的代码检查文件是否可用-Android file.exists()为不同活动中的同一文件返回不同的值,android,kotlin,Android,Kotlin,我的应用程序下载PDF文件。因此,在某些活动中,我需要检查哪些文件可用于执行某些操作。我正在使用下面的代码检查文件是否可用- val file = File(getDir(book)) if (file.exists()) { // do some stuff } else { // do other stuff } 下面是getDir函数的代码- fun getDir(book: Book): String { return Environment.getExternalS
val file = File(getDir(book))
if (file.exists()) {
// do some stuff
} else {
// do other stuff
}
下面是getDir函数的代码-
fun getDir(book: Book): String {
return Environment.getExternalStorageDirectory().toString() + File.separator +
"PDF FOLDER/${book.layer_name}/${book.class_name}/${book.name}.pdf"
}
这段代码在下载文件的活动1中运行良好。但是,当我转到活动2时,该方法表示该文件不存在
我从这两个活动中记录了getDir(book),它们是100%相同的。日志如下:
E/loggg: /storage/emulated/0/PDF FOLDER/Primary/Class1/my_book.pdf
E/loggg: /storage/emulated/0/PDF FOLDER/Primary/Class1/my_book.pdf
当我从活动2下载文件时,代码又能正常工作了
这个问题背后的原因可能是什么?我看不出我的代码有任何问题。任何帮助都将不胜感激。谢谢。为了确保工作安全,请尝试在共享此代码的地方使用
界面
,这样可以避免重复代码,并减少类似情况(相同的代码块不起作用)
试一试
也许上述代码对您有帮助为了工作安全,请尝试在共享此代码的地方使用
界面
,这样可以避免重复代码,从而减少类似情况(相同代码块不起作用)
试一试
也许上述代码对您有帮助解决方案
过了一会儿,我发现了问题。仍然不知道确切的原因
下载完PDF后,我开始了另一项活动
活动1(从下载文件的位置)在不完成活动1的情况下阅读PDF文件。然后当我回到活动2(书签活动)文件时,exist()返回了false
但是,如果我下载文件后完成活动1并返回活动2,则文件exist()将返回true解决方案
过了一会儿,我发现了问题。仍然不知道确切的原因
下载完PDF后,我开始了另一项活动
活动1(从下载文件的位置)在不完成活动1的情况下阅读PDF文件。然后当我回到活动2(书签活动)文件时,exist()返回了false
但是,如果我下载文件后完成活动1并返回到活动2文件,则exist()是否返回true可能是权限问题?我已获得存储的运行时权限,文件将以该权限打开。因此,我可以保证这不是权限问题。当您打开活动2时?活动1和活动2未连接。。每个活动都是从主活动启动的。当您从活动1下载文件,然后打开活动2,什么也不做,只需检查文件资源管理器是否存在该文件?可能是权限问题?我已获得存储的运行时权限,并且文件是以该权限打开的。因此,我可以保证这不是权限问题。当您打开活动2时?活动1和活动2未连接。。每个活动都是从主活动启动的。当您从活动1下载文件,然后打开活动2,什么也不做时,只需检查文件资源管理器中是否有该文件?谢谢您的建议。但是getDir函数在Util类中。所以它不再重复了。非常感谢@Zoe的提示,但是
interface
只是一个术语;-)谢谢你的建议。但是getDir函数在Util类中。所以它不再重复了。非常感谢@Zoe的提示,但是interface
只是一个术语;-)
open class ActivityBase: AppCompatActivity {
protected fun getDir(book: Book): String {
return Environment.getExternalStorageDirectory().toString() + File.separator +
"PDF FOLDER/${book.layer_name}/${book.class_name}/${book.name}.pdf"
}
}
class Activity1: ActivityBase
class Activity2: ActivityBase