我正在编写一个需要读取两个图像文件以用于各种目的的应用程序。
其中一个图像文件是通过意图过滤器接收的,我以这种方式打开它(注意:mIntent是的结果getIntent()):
mFileUri = (Uri) mIntent.getParcelableExtra(Intent.EXTRA_STREAM);
mInputStream = getContentResolver().openInputStream(mFileUri);
然后读取 mInputStream 按预期工作。
问题是读取第二个图像文件:它Uri(使用 转换toString())写在共享首选项中,我获取值并使用Uri.parse()它来恢复它,作为getString()调用中的“默认值”参数我使用Uri位于资产子目录(android.resource方案)。我尝试阅读它的方式是相同的,使用getContentResolver().openInputStream(),但是出了点问题:调用read()返回的InputStream总是 return -1。我也试过,但不管用 an还是schemegetAssets().open()都行不通。注意:对于我使用的意图接收文件,而对于我使用的第二个文件。android.resourcecontentUriread(byte[])read()
所以,这是我的问题:为什么会发生这种情况,我该如何解决这个问题?