从获得ACTION_SEND意图的Exif数据(TAG_GPS_LATITUDE)(Get Exif

2019-10-22 13:20发布

好像这个问题上到处左右,但没有什么工作。 我送从Android相机的意图,我的应用程序(分享我的Android相机拍摄到我的应用程序一个图像)。

在我framgent

// ...
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = null;

    Intent intent = getActivity().getIntent();
    String action = intent.getAction();
    String type = intent.getType();
    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
        // ...
        } else if (type.startsWith("image/")) {
            Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
            if (imageUri != null) {
                Log.v(null, imageUri.getPath());
                try {
                    ExifInterface exif = new ExifInterface(imageUri.getPath());
                    String str = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE);
                    Log.v(null, "lat "+str);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // ...
            }
        }
    } else {
        view = inflater.inflate(R.layout.fragment_main, container, false);
        initComponents(view);
        initListeners();
    }
    return view;
}
// ...

Log.v(NULL,imageUri.getPath()); 打印出/external/images/media/5670

出现错误: E/JHEAD﹕ can't open '/external/images/media/5670'然后Log.v(null, "lat "+str); 打印出lat null

Answer 1:

imageUri.getPath()不返回文件系统路径,因为一个Uri是不是一个文件 。 的执行不力ExifInterface是在Android SDK提供不支持从读取InputStream ,这是你就需要消耗什么Uri可靠,使用ContentResolver

你可能会需要切换到使用其他EXIF库。 我使用谷歌的AOSP一个从MMS应用程序在我CWAC-相机库。



文章来源: Get Exif data from ACTION_SEND intent (TAG_GPS_LATITUDE)