Galleryから取得した画像のExifメタタグが読み込めない

IntentでGalleryを呼び出して、選択した画像のメタタグを読み込み、GPS情報等の情報を取得するプログラムを作ってみた。
メタタグの読み込みはExifInterfaceクラスを用いる。
インスタンス生成にはJPEGファイルのディレクトリが必要なので、
Galleryから取得したURIをContentResolverでディレクトリ文字列に変換したものを設定することにした。

Galleryからのコールバックメソッドの部分を以下に示す。

public void onActivityResult(int requestCode, int responseCode, Intent data) {
    if (requestCode == REQUEST_GALLERY && responseCode == RESULT_OK) {
        // URIを取得
        Uri uri = data.getData();
        // ContentResolverを用いてURIが示す画像ファイルの情報を取得
        Cursor c = getContentResolver().query(uri, new String[]{MediaStore.Images.Media.DATA}, null, null, null);
        String filePath = null;
        if (c.moveToFirst()) {
            int index = c.getColumnIndex(MediaStore.Images.Media.DATA);
            // 画像ファイルのディレクトリを取得
            filePath = c.getString(index);
        }
        try {
            // ExifInterfaceインスタンスを生成
            ExifInterface exif = new ExifInterface(filePath);
            // TODO タグ情報を取得
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

GalaxyS4(4.2)では取得できるのだが、Nexus7(4.4.2)では以下のようなエラーが発生する。

03-12 22:34:01.571 21283-21283/net.atlabo.sample.exif E/JHEAD﹕ can't open '/storage/emulated/0/Download/20140309_172716.jpg’

調べてみたら、こんなことが書いてあった。
http://stackoverflow.com/questions/21857327/exifinterface-jhead-cant-open-error-android

どうやらAndroidManifest.xmlにSDカード書き込み権限を付与してやらないといけないらしい。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

機種依存なのかAndroidAPIなのかは調べてないが、これで解決。