无法通过Nougat上的URI使用ExifInterface对象更改图像的LatLng

时间:2017-12-29 15:44:02

标签: android uri

我正在设计一个Android程序来更改LatLng图像。图像Uri在数组中,代码如下

发生的异常说 "ExifInterface does not support saving attributes for the currrent input"

    InputStream in = getContentResolver().openInputStream((Uri)AddArray[i]);

    ExifInterface ei = new ExifInterface(in);

    ei.setAttribute(TAG_GPS_LATITUDE, "80/1,35/1,4091/100");
    ei.setAttribute(TAG_GPS_LATITUDE_REF, "N");
    ei.setAttribute(TAG_GPS_LONGITUDE, "45/1,1/1,4390/100");
    ei.setAttribute(TAG_GPS_LONGITUDE_REF, "E");



    try {
        ei.saveAttributes();
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(), e.getMessage().toString(), Toast.LENGTH_LONG).show();

    }


} catch (IOException e) {
    Toast.makeText(getApplicationContext(), "Something went wrong" + e.getMessage(), Toast.LENGTH_LONG).show();
}

1 个答案:

答案 0 :(得分:0)

ExifInterface,正如您使用它一样,只有InputStream,因此无法保留您的更改。

你需要:

  • 使用InputStreamUri标识的内容复制到您控制的某个文件中(例如,在getCacheDir()中)

  • 对该文件使用ExifInterface,保存对该文件的更改

  • openOutputStream()上使用ContentResolver获取OutputStream标识的内容Uri,然后将文件的字节复制到OutputStream }}