我正在android中创建一个聊天应用程序。当我上传文件时,我无法追踪文件来自何处。我需要检查它是来自外部SD卡还是内部存储器,以便我可以将文件路径添加到我的数据库Sqlite。
目前我正在使用以下功能执行此操作:
public static boolean isExternalStorageDocument(Uri uri) {
return "com.android.externalstorage.documents".equals(uri
.getAuthority());
}
它在Kitkat中正确检查但在Lolipop工作。所以我能做的更多吗?
答案 0 :(得分:0)
Uri
可以指向任何:
BLOB
列中保存的字节流缺乏经验的开发人员认为Uri
仅指向文件。这从来都不是真的。随着开发人员开始避免使用the ban on the file
scheme,您很少会在今年晚些时候看到Uri
带有file
计划的Uri
。没有常识的人会尝试根据对Uri
的检查来推导文件系统路径,因为无法保证这样的计划即使在有限的情况下也会起作用,并且它不会处理用户可以选择的大量内容源数组。
通过ACTION_OPEN_DOCUMENT
获得的Uri
可能支持可持久的takePersistableUriPermission()
权限。如果是这样,您可以调用Uri
并将Uri
本身保存到您的数据库中。您仍然需要处理内容不再可用的情况(例如,用户将其删除)。
在所有其他情况下,仅在您的流程期间使用raining = df[df.rain ==1][['ENTRIESn_hourly']]
#note that you do not have to specify the column again,
#as you have already assigned it to the raining variable.
raining.hist()
。如果您需要访问内容的时间超过该内容,请将该内容的副本复制到您控制的文件中(例如,在internal storage上)。