我的应用下载PDF文件。因此,在某些活动中,我需要检查哪些文件可用于执行某些操作。我使用以下代码来检查文件是否可用 -
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下载文件时,代码再次完美运行。
这个问题背后的原因是什么?我在代码中看不到任何问题。任何帮助,将不胜感激。感谢。
答案 0 :(得分:2)
为了安全起见,请尝试使用共享此代码的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
上述代码可能对您有所帮助
答案 1 :(得分:1)
过了一会儿我发现了问题。仍然不知道确切的原因。
下载PDF后,我正在打开另一项活动 活动1(从文件下载的地方)阅读PDF文件而不完成活动1 。然后当我回到活动2(书签活动)时,file.exist()返回 false 。
但是,如果我在下载文件后完成活动1 并返回活动2 file.exist()返回 true 。< / p>