環境
- Android 5.0 Zenfone 2
- Android Studio 2.3
やったこと
MainActivity.java
// Import とかは省略 public class MainActivity extends AppCompatActivity { public android.widget.ImageView ImageView; public Button Button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView = (android.widget.ImageView)findViewById(R.id.imageView); Button2 = (Button) findViewById(R.id.button2); Button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // DCIM へのパスを取得 File dir = new File(Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_DCIM ); // DCIM 上の画像ファイルへのパスを設定 File file = new File(dir.getAbsolutePath()+"/image.jpeg"); // 正しい画像へのパスが取れているか確認のためにログ出力 Log.d("画像を表示させるやつ",file.getPath()); // 画像ファイルが存在してないときは Image View に表示させないようにしている if (file.exists()) { // 画像が存在していたら ImageView に表示させる ImageView.setImageBitmap(BitmapFactory.decodeFile(file.getPath())); }else{ // 画像ファイルを見つけれなかったら、調査のためにログ出力 Log.d("StorageAccessTest","File not found."); } } }); } }
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
実行結果
はまったこと
画像ファイルがあるはずなのに、 画像ファイルを見つけることができずに file.exists() が False を返していました。
原因を探ってみると、 Permission へ記述しなければいけないようでした。