我的应用程序允许用户选择要上传的图像。当用户从picasa相册中选择图片时,我的数据意图会返回dat=content://com.sec.android.gallery3d.provider/picasa/item/...
。
显然,当从picasa文件夹中选择图像时,我必须按照标记in this answer处理不同的图像。
但在我实施修复之前,我希望能够重现崩溃,以便我可以验证我的修复确实有效。 那么,如果Picasa被Google杀死,我怎样才能在我的新(marshmallow)Android测试设备上获得Picasa文件夹?
答案 0 :(得分:0)
在文件中发送文件的最有保证的方法是打开一个文件流并将其复制到应用程序的私人文件夹中。
这种方式适用于本地文件,content
uri,picasa,所有这些。
类似的东西:
private File getSharedFile() {
Uri uri = intent.getExtras().getParcelable(Intent.EXTRA_STREAM);
// or using the new compat lib
Uri uri = ShareCompat.IntentReader(this).getStream();
InputStream is = null;
OutputStream os = null;
try {
File f = ... define here a temp file // maybe getCacheDir();
is = getContentResolver().openInputStream(uri);
os = new BufferedOutputStream(new FileOutputStream(f));
int read;
byte[] bytes = new byte[2048];
while ((read = is.read(bytes)) != -1) {
os.write(bytes, 0, read);
}
return f;
} catch (Exception e) {
... handle exceptions, buffer underflow, NPE, etc
} finally {
try { is.close(); } catch (Exception e) { /* u never know */ }
try {
os.flush();
os.close();
} catch (Exception e) { /* seriously can happen */ }
}
return null;
}