2014-01-02 1 views
0

Я новичок в Android. В моем приложении я хочу получить доступ к определенному изображению с моей SD-карты. Но изображение не отображается. У меня есть запрос WRITE_EXTERNAL_STORAGE в моем манифесте.Отображение изображения с SD-карты

public class Display extends Activity 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.display); 

    final ImageView imageView = (ImageView) findViewById(R.id.imageView1); 
    final TextView name=(TextView) findViewById(R.id.name); 
    final TextView phone_no=(TextView) findViewById(R.id.phone_no); 

    File f= new File("/storage/sdcard0/Download/images.jpeg"); 
      Bitmap bMap = BitmapFactory.decodeFile(f.getAbsolutePath()); 
      imageView.setImageBitmap(bMap); 
} 

Я также попытался следующие коды, но не использовать

File mFichier = new File(Environment.getExternalStorageDirectory(),"/storage/sdcard0/Download/images.jpeg"); 

    if(mFichier.exists()) 
    { 
     imageView.setImageURI(Uri.fromFile(mFichier)); 
    } 

, а также этот код

Bitmap mBitmap = BitmapFactory.decodeFile("/storage/sdcard0/Download/images.jpeg"); 
imageView.setImageBitmap(mBitmap); 

Пожалуйста, помогите мне, почему не получает отображается мое изображение ..

+2

Вы не должны жестко указывать путь. используйте 'Environment.getExternalStorageDirectory()', а вместо '/' это использовать 'File.Seperator'. – Raghunandan

+0

все еще не работает – Andro

+0

Вы проверили, что f.exists()? – Guy

ответ

0

Прежде всего, вы хотите загрузить файл с внешнего хранилища, например, sdcard, лучше использовать следующий код :

public File getDataFolder(Context context) { 
    File dataDir = null; 
     if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 
      dataDir = new File(Environment.getExternalStorageDirectory(), "myappdata"); 
      if(!dataDir.isDirectory()) { 
       dataDir.mkdirs(); 
      } 
     } 

     if(!dataDir.isDirectory()) { 
      dataDir = context.getFilesDir(); 
     } 

    return dataDir; 
} 

Он вернет папку, названную «myappdata», расположенную на вашей SD-карте. После этого, если вы хотите загрузить изображение из этой папки, вы можете использовать следующий код:

File cacheDir = getDataFolder(this); 
File cacheFile = new File(cacheDir, "images.jpeg"); 
InputStream fileInputStream = new FileInputStream(cacheFile); 
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
bitmapOptions.inSampleSize = scale; 
bitmapOptions.inJustDecodeBounds = false; 
Bitmap wallpaperBitmap = BitmapFactory.decodeStream(fileInputStream, null, bitmapOptions); 
ImageView imageView = (ImageView)this.findViewById(R.id.preview); 
imageView.setImageBitmap(wallpaperBitmap); 

Если у вас есть проблемы с выше коде, вы можете проверить полный пример здесь:

Android Save And Load Downloading File Locally