为了账号安全,请及时绑定邮箱和手机立即绑定

如何在数据文件夹中将相机结果作为uri?

如何在数据文件夹中将相机结果作为uri?

沧海一幻觉 2019-09-20 16:06:03
我正在创建一个应用程序,我想在其中捕获图像,然后我想将该图像作为附件发送到电子邮件中。我正在使用android.provider.MediaStore.ACTION_IMAGE_CAPTUREintent动作打开相机,我将文件的Uri作为参数EXTRA_OUTPUT传递给图像以将图像恢复到文件中。这是完美的工作,如果我使用external storage urias作为a 我能够获取捕获的图像,  EXTRA_OUTPUT但如果我使用数据文件夹uri它不工作,相机没有关闭,它的所有按钮都不工作。这是我在外部存储目录中获取结果的代码Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);File out = Environment.getExternalStorageDirectory();out = new File(out, imagename);i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));startActivityForResult(i, CAMERA_RESULT);此代码用于获取数据文件夹中的图像Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);File out = getFilesDir();out = new File(out, MyPharmacyOptions.PRESCRIPTION_IMAGE_NAME);i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));startActivityForResult(i, CAMERA_RESULT);我知道第三个应用程序无法访问数据文件夹,因此可能会导致问题,因此我创建了一个内容提供程序来共享该文件。Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);Uri uri = MyContentProvider.CONTENT_URI;uri = Uri.withAppendedPath(uri, imagename);getContentResolver().insert(uri, null);getContentResolver().notifyChange(RingtonContentProvider.CONTENT_URI, null);Log.d(Tag, uri.toString());i.putExtra(MediaStore.EXTRA_OUTPUT, uri);startActivityForResult(i, CAMERA_RESULT);现在如果我传递其他外部存储目录的网址,相机正在打开,但它没有在模拟器中关闭,但在设备中相机将关闭,但我没有得到结果。我已在清单文件中声明了此内容<providerandroid:name=".contentproviders.MyContentProvider"android:authorities="x.y.z" />此外,我已经允许写入外部存储器以及使用相机。我能够使用外部存储捕获图像但我想将图像存储在数据目录而不是外部存储中,因为如果外部存储不可用我想捕获图像并想要发送邮件。如果我创建内容提供,那么我也可以将我的图像共享到电子邮件应用程序。如果我们不提供相机意图的附加功能,它会将图像作为活动结果中的byte []返回为额外的数据,但这是为了缩略图的目的,所以我无法使用这种方式获得高分辨率图像。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 400 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信