2017-09-19 9 views
1

ローカルストレージのファイルパスからimageViewにイメージをロードしようとしています。AndroidイメージをパスからimageViewにロード

private final String PATH = "file:///storage/emulated/0/Downloads/image.png" 

他の場所で、私は両方のグライドを使用して、それをロードしようとしたフォーラムで示唆したように:

Glide.with(this) 
      .load(PATH) 
      .into(imageView); 

とビットマップ/ BitmapFactory:

ImageView imageView = (ImageView) findViewById(R.id.imageView); 

    File f = new File(PATH); 

    if(f.exists()){ 

     Bitmap myBitmap = BitmapFactory.decodeFile(f.getAbsolutePath()); 

     imageView.setImageBitmap(myBitmap); 

が、私はいつもプレースホルダ画像を取得します。

マニフェストで、許可WRITE.EXTERNAL.STORAGEとREAD.EXTERNAL.STORAGEを追加しました。

デバッグしようとすると、f変数に正しいパスがロードされているようです。助けのための

おかげ

編集:私はまた、唯一のより良いテストに1つのImageViewの持つブランドの新しいアプリを作っている

...私はすべての提案された解決策を試してみましたが、私は空白の画面をgettinの継続:

package com.example.android.pic; 


import android.Manifest; 
import android.content.pm.PackageManager; 
import android.net.Uri; 
import android.os.Environment; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.ImageView; 

import com.bumptech.glide.Glide; 

import java.io.File; 

public class MainActivity extends AppCompatActivity { 


Uri PATH = Uri.fromFile(new File((Environment.getExternalStorageDirectory().getPath() + "/Pictures/agata.png"))); 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    int permissionCheck = ContextCompat.checkSelfPermission(this, 
      Manifest.permission.WRITE_EXTERNAL_STORAGE); 


    if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 

     if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
       Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 

     } else { 
      ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 

     } 


    } 
    ImageView imageView = (ImageView) findViewById(R.id.pic); 

    Glide.with(this) 
      .load(PATH) 
      .into(imageView); 

} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 

    switch (requestCode) { 
     case 1: { 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       ImageView imageView = (ImageView) findViewById(R.id.pic); 

       Glide.with(this) 
         .load(PATH) 
         .into(imageView); 
      } else { 
       finish(); 

      } 

     } 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
} 
} 

助けてください! ありがとう

+0

はウリ作品に変換していますか? 'Uri.parse(PATH) ' –

+0

あなたはandroid 6+でアプリケーションをテストしていますか? –

+0

[ファイルの画像ビューをファイルパスから表示しますか?](https://stackoverflow.com/questions/4181774/show-image-view-from-file-path) –

答えて

0

ファイルパスの減速が間違っています。 あなたはこのコードStringPATHを使用することができますあなたがimageUriをしたい、このコードで

final InputStream imageStream = getContentResolver().openInputStream(imageUri); 

final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); 

image.setImageBitmap(selectedImage); 

を使用すべき

private final StringPATH="/storage/emulated/0/Downloads/image.png" 
+0

ええ、私もこの道で試しましたが、同じ問題があります。 – akstavrh

+0

このプライベートな最終的なStringPATH = Environment.getExternalStorageDirectory()+ "/Downloads/image.png"; – DevThapa

0

にPATHを変更してみてください:

private final StringPATH="/storage/emulated/0/Downloads/image.png" 
関連する問題