小妹请教SD卡从文件夹读取图片不成功的问题!
同一张图片我在SD卡根目录读取就没有问题!
在某一个文件夹下读取Bitmap返回的就是null!
请问各位这是为什么!是哪里没设置!
请各位前辈指教!
package com.myAndroid.execrise;import java.io.File;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Environment;import android.widget.ImageView;public class ImageActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView imageView01=(ImageView)findViewById(R.id.imageView01); ImageView imageView02=(ImageView)findViewById(R.id.imageView02); String filepath=Environment.getExternalStorageDirectory()+File.separator+"firstmobile/abc.jpg"; String rootpath=Environment.getExternalStorageDirectory()+File.separator+"abc.jpg"; Bitmap bitmap1=BitmapFactory.decodeFile(filepath);//这里得到的结果是null Bitmap bitmap2=BitmapFactory.decodeFile(rootpath); imageView01.setImageBitmap(bitmap1); imageView02.setImageBitmap(bitmap2); }}package com.myandrod.execrise;import java.io.File;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Environment;import android.widget.ImageView;public class ImageActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView imageView01=(ImageView)findViewById(R.id.imageview01); ImageView imageView02=(ImageView)findViewById(R.id.imageview02); String filepath=Environment.getExternalStorageDirectory()+File.separator+"DCIM/3_1161090452.jpg"; String rootpath=Environment.getExternalStorageDirectory()+File.separator+"00.JPG"; Bitmap bitmap1=BitmapFactory.decodeFile(filepath);//我在系统默认的子目录DCIM下面读取图片不为null Bitmap bitmap2=BitmapFactory.decodeFile(rootpath); imageView01.setImageBitmap(bitmap1); imageView02.setImageBitmap(bitmap2); }}
[解决办法]
package com.test.android;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.widget.ImageView;public class DownloadImage extends Activity { String filepath; String rootpath="/sdcard/img.jpg"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView imageView01=(ImageView)findViewById(R.id.image1); ImageView imageView02=(ImageView)findViewById(R.id.image2); try { downloadFile("http://www.sohu.com/upload/hp/images/icon01.gif"); } catch (IOException e) { e.printStackTrace(); } File file=new File(filepath); if(file.exists()) { Bitmap bitmap1=BitmapFactory.decodeFile(filepath);//这里得到的结果是null Bitmap bitmap2=BitmapFactory.decodeFile(rootpath); imageView01.setImageBitmap(bitmap1); imageView02.setImageBitmap(bitmap2); } } public void downloadFile(String url) throws IOException { String fileEx = url.substring(url.lastIndexOf(".")+1,url.length()).toLowerCase(); String fileNa = url.substring(url.lastIndexOf("/")+1,url.lastIndexOf(".")); URL fileUrl = new URL(url); URLConnection conn = fileUrl.openConnection(); conn.connect(); InputStream inputStream = conn.getInputStream(); if (inputStream == null){ Log.e("Error", "流为空"); throw new RuntimeException("流为空"); } File sdCard = Environment.getExternalStorageDirectory(); String rootPath = sdCard.getPath()+"/first/"; File file=new File(rootPath); if(!file.exists()) { file.mkdir(); } filepath=rootPath+fileNa+"."+fileEx; OutputStream os = new FileOutputStream(filepath); byte buf[] = new byte[1024]; int numread = 0; while ((numread = inputStream.read(buf))!= -1) { os.write(buf, 0, numread); } inputStream.close(); os.close(); }}
[解决办法]
47正解,我在真机上也测试成功,代码没有改动,就是刚开始连不上网。刚重启了下机器又能连上了