ExifInterfaceを使用して画像情報を取得しようとした際にFileNotFoundExceptionが発生します。
Permission deniedなので権限関連だと思い、それらしいところを見てみましたがよく分かりません。
下の画像はエミュレーターの設定画面ですが、該当のアプリの設定ページのパーミッションが変更できません。
そもそもこれを変更すれば例外を吐かなくなるのかも分かりませんが。。
お知恵をお借りできればと思います!
よろしくお願いします。
package com.example.myapplication; import java.io.IOException; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.ExifInterface; import android.os.Bundle; import android.os.Environment; import android.widget.ImageView; import android.widget.TextView; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView sizeText = (TextView)findViewById(R.id.sizeinfo); TextView dateText = (TextView)findViewById(R.id.dateinfo); TextView latlongText = (TextView)findViewById(R.id.latlonginfo); ImageView thumbnailView = (ImageView)findViewById(R.id.thumbnail); try { // ExifInterfaceのインスタンス取得 ExifInterface exif = new ExifInterface(Environment.getExternalStorageDirectory().getPath() + "/Download/AkihabaraKousaten.JPG"); if (exif != null) { // 画像情報 String info = String.format("size: %d x %d", exif.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, -1), exif.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, -1)); sizeText.setText(info); info = String.format("date: %s", exif.getAttribute(ExifInterface.TAG_DATETIME)); dateText.setText(info); float[] latlong = new float[2]; exif.getLatLong(latlong); info = String.format("latlong: %f, %f", latlong[0], latlong[1]); latlongText.setText(info); // サムネイル if (exif.hasThumbnail()) { byte[] image = exif.getThumbnail(); Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length); thumbnailView.setImageBitmap(bitmap); } } } catch (IOException e) { e.printStackTrace(); } } }
java.io.FileNotFoundException: /storage/emulated/0/Download/AkihabaraKousaten.JPG (Permission denied)
回答2件
あなたの回答
tips
プレビュー