Android - 拍照 - 将uri传递给相机应用

时间:2014-06-22 00:32:25

标签: android android-camera uri android-camera-intent

我正在尝试按照tutorial调用相机应用程序并要求它将图片保存在意图中传递的uri中。

 File image = File.createTempFile("testImage", ".jpg",
              getExternalFilesDir(Environment.DIRECTORY_PICTURES));

 Uri uri = Uri.fromFile(image);

 Intent i = new Intent();
 i.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
 i.putExtra(MediaStore.EXTRA_OUTPUT, uri);

 if (i.resolveActivity(getPackageManager()) != null) {
      startActivityForResult(i, 1);
 }

图片的路径是:

 /storage/emulated/0/Android/data/com.android.test1.app/files/Pictures/testImage-516714791.jpg

我想问一下相机应用程序是如何获得写入此路径的权限的?我在Android 4.4上进行测试,因此路径ExternalFilesDir不可公开写入。

1 个答案:

答案 0 :(得分:2)

reference说:

  

这些文件没有强制执行安全措施。例如,任何持有WRITE_EXTERNAL_STORAGE的应用程序都可以写入这些文件。

     

从KITKAT开始,读取或写入返回的路径不需要任何权限;它总是可以访问调用应用程序。这仅适用于为调用应用程序的包名生成的路径。要访问属于其他包的路径,需要WRITE_EXTERNAL_STORAGE和/或READ_EXTERNAL_STORAGE。

因此,系统相机应用或获得WRITE_EXTERNAL_STORAGE权限的任何其他应用都可以写入/storage/emulated/0/Android/data/com.android.test1.app/files/Pictures/