"file" 方案的 URI 如何在 Android 中工作
how do URIs with "file" scheme work in Android
我知道在 Android 我可以这样从磁盘读取文件:
Uri uri = Uri.parse("file:///data/data/com.example.mytest.mytest/test.txt");
InputStream stream = getContentResolver().openInputStream(uri);
int i;
while ((i = stream.read()) != -1) {
Log.i("@@@", "znak: " + i);
}
但是,我不知道它是如何工作的。 Android 是否存在一些使用 "file" 方案的内容提供商?但是如何 - 我认为所有内容提供者的 URI 方案必须具有 "content" 方案?
ContentResolver
和 openInputStream()
直接处理 file:
方案。 the documentation for openInputStream()
.
中对此进行了介绍
此外,不要对路径进行硬编码。你的 Uri
在数百万台设备上是错误的:
在 Android 4.2+ 平板电脑和 Android 5.0+ 手机上,用于访客和其他辅助帐户
在 Android M 设备上,如果用户 "adopts" 可移动存储并将应用程序移动到其中
我知道在 Android 我可以这样从磁盘读取文件:
Uri uri = Uri.parse("file:///data/data/com.example.mytest.mytest/test.txt");
InputStream stream = getContentResolver().openInputStream(uri);
int i;
while ((i = stream.read()) != -1) {
Log.i("@@@", "znak: " + i);
}
但是,我不知道它是如何工作的。 Android 是否存在一些使用 "file" 方案的内容提供商?但是如何 - 我认为所有内容提供者的 URI 方案必须具有 "content" 方案?
ContentResolver
和 openInputStream()
直接处理 file:
方案。 the documentation for openInputStream()
.
此外,不要对路径进行硬编码。你的 Uri
在数百万台设备上是错误的:
在 Android 4.2+ 平板电脑和 Android 5.0+ 手机上,用于访客和其他辅助帐户
在 Android M 设备上,如果用户 "adopts" 可移动存储并将应用程序移动到其中