我使用名为takePicture的函数拍摄图像并将其存储到文件中。然后我将该文件传递给intent。我无法弄清楚如何从onActivityResult
中的意图中获取文件。 Android文档说
接收内容URI的客户端应用程序可以打开文件 通过调用ContentResolver.openFileDescriptor来访问其内容 得到一个ParcelFileDescriptor。
我根本不知道如何实现它。
public void takePicture(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
file = FileProvider.getUriForFile(FallingActivity.this, this.getApplicationContext().getPackageName() + ".provider", getOutputMediaFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, file);
startActivityForResult(intent, RESULT_TAKE_PHOTO);
}
以下是我设置onActivityResult
的方法。我的最终目标是从onActivityResult
中的意图中获取文件并将其转换为Uri,以便将其传递给Adobe的Aviary编辑器。目前,当Adobe Aviary编辑器加载时,我收到一条消息,说“#34;下载图像时出错”#34;。任何人都可以帮我找出原因吗?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_TAKE_PHOTO && resultCode == RESULT_OK && data != null) {
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri selectedImage = FileProvider.getUriForFile(FallingActivity.this, this.getApplicationContext().getPackageName() + ".provider", getOutputMediaFile());
Intent imageEditorIntent = new AdobeImageIntent.Builder(this)
.setData(selectedImage)
.build();
imageEditorIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(imageEditorIntent, RESULT_AVIARY_EDIT);
}
}
答案 0 :(得分:1)
我无法弄清楚如何从onActivityResult的意图中获取文件
没有文件可以从<table border="0" cellspacing="1" cellpadding="1" width="400" height="300">
<tr>
<td width="50%">
<div id="left_div">
</br>
</br>
</br>
</br>
<a class="tditems_tooltip">
<font color="red">TRIGGER</font>
<span>
<table border="0" cellspacing="0" cellpadding="1" width="300">
<tr bgcolor="green">
<td>CONTENT OF TOOLTIP</td>
</tr>
</table>
</span>
</a>
</br>
</br>
</br>
</br>
</br>
</br>
</br>
</br>
</div>
</td>
<td width="50%">INSIGNIFICANT CONTENT</td>
</tr>
</table>
中获取。当您提供Intent
时,ACTION_IMAGE_CAPTURE
不会返回任何内容,除了确定/取消状态。
你知道这张照片应该在哪里。它是EXTRA_OUTPUT
的结果。您需要保留该值,例如通过活动或片段上的字段。请务必将其保存在配置更改中,例如通过已保存的实例状态getOutputMediaFile()
。
答案 1 :(得分:-1)
我可能迟到提供解决方案了。
EXTRA_OUTPUT extra不会返回任何数据。.因此,onActivityResult方法(data!= null)中的检查将不起作用,因为该数据始终为null相反,您可以像EXTRA_OUTPUT一样进行其余的检查(检查请求和结果代码)。
希望它对某人有所帮助。