2017-09-19 93 views
1

我試圖從本地存儲中的文件路徑加載圖像到imageView。Android將圖像從路徑加載到圖像查看

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變量中的正確路徑。

感謝您的幫助

編輯:我已經嘗試了所有建議的解決方案,但我仍然剛開黑屏......

我也只是爲了更好地測試做一個ImageView的一個全新的應用程序:

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

您的文件路徑減速是錯誤的。 嘗試改變路徑,以

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

是的,我也嘗試過這個路徑,但我有同樣的問題 – akstavrh

+0

嘗試使用此私有最終StringPATH = Environment.getExternalStorageDirectory()+「/Downloads/image.png」; – DevThapa

0

你應該在你想imageUri可以使用StringPATH這個代碼中使用此代碼

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

final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); 

image.setImageBitmap(selectedImage); 

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