当我在android中下载图像并存储到Sd卡时出现空指针异常 公共类MainActivity扩展活动{ 线性布局线性化; 复选框; 图像视图图像视图; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageview=(imageview)findViewById(R.id.image); 新建myAsyncTask().execute(); } 类myAsyncTask扩展了AsyncTask{ 公共对话; myAsyncTask(){ dialog=新建ProgressDialog(MainActivity.this); setMessage(“正在加载图像…”); 对话框。可设置可取消(true); 对话框。setUndeterminate(true); } //AQuery aq=新的AQuery(上下文); //aq.id(recciverimage).image(位图); // ; @凌驾 受保护的void onPreExecute(){ super.onPreExecute(); dialog.show(); } 受保护的Void doInBackground(Void…arg0){ 试一试{ InputStream=null; URL=新URL(“http://api.lociiapp.com/TransientStorage/" +“1”+“.jpg”); URLConnection=url.openConnection(); 试一试{ //sdcard目录,例如“/sdcard”,可以直接使用, //或 //使用getExternalStorageDirectory()更安全地抽象 文件存储路径=环境 .getExternalStorageDirectory(); OutputStream输出=新文件OutputStream(新文件( storagePath,“1.jpg”); 试一试{ 字节[]缓冲区=新字节[1024]; int字节读取=0; 而((bytesRead=stream.read)(缓冲区,0, buffer.length))>=0){ 输出写入(缓冲区,0,字节读取); } }最后{ output.close(); } }捕获(例外情况除外){ 例如printStackTrace(); } }捕获(格式错误){ e、 printStackTrace(); }捕获(IOE异常){ e、 printStackTrace(); } 返回null; } @凌驾 受保护的void onPostExecute(void结果){ super.onPostExecute(结果); dialog.dismise(); 字符串imagePath=Environment.getExternalStorageDirectory() .toString()+“/lociImages/“+”1“+”.jpg”; 位图位图=BitmapFactory.decodeFile(imagePath); AQURY aq=新的AQURY(MainActivity.this); aq.id(imageview).image(位图); //recciverImageSetImageBitmap(位图); } } }
这是我从服务器下载图像并存储在sd卡中的代码,我们使用此URl在图像视图上打印图像。我正在将图像下载到服务器,但无法存储。请建议我哪里出错,并提供空指针异常。我想问题出在这里:当我在android中下载图像并存储到Sd卡时出现空指针异常 公共类MainActivity扩展活动{ 线性布局线性化; 复选框; 图像视图图像视图; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageview=(imageview)findViewById(R.id.image); 新建myAsyncTask().execute(); } 类myAsyncTask扩展了AsyncTask{ 公共对话; myAsyncTask(){ dialog=新建ProgressDialog(MainActivity.this); setMessage(“正在加载图像…”); 对话框。可设置可取消(true); 对话框。setUndeterminate(true); } //AQuery aq=新的AQuery(上下文); //aq.id(recciverimage).image(位图); // ; @凌驾 受保护的void onPreExecute(){ super.onPreExecute(); dialog.show(); } 受保护的Void doInBackground(Void…arg0){ 试一试{ InputStream=null; URL=新URL(“http://api.lociiapp.com/TransientStorage/" +“1”+“.jpg”); URLConnection=url.openConnection(); 试一试{ //sdcard目录,例如“/sdcard”,可以直接使用, //或 //使用getExternalStorageDirectory()更安全地抽象 文件存储路径=环境 .getExternalStorageDirectory(); OutputStream输出=新文件OutputStream(新文件( storagePath,“1.jpg”); 试一试{ 字节[]缓冲区=新字节[1024]; int字节读取=0; 而((bytesRead=stream.read)(缓冲区,0, buffer.length))>=0){ 输出写入(缓冲区,0,字节读取); } }最后{ output.close(); } }捕获(例外情况除外){ 例如printStackTrace(); } }捕获(格式错误){ e、 printStackTrace(); }捕获(IOE异常){ e、 printStackTrace(); } 返回null; } @凌驾 受保护的void onPostExecute(void结果){ super.onPostExecute(结果); dialog.dismise(); 字符串imagePath=Environment.getExternalStorageDirectory() .toString()+“/lociImages/“+”1“+”.jpg”; 位图位图=BitmapFactory.decodeFile(imagePath); AQURY aq=新的AQURY(MainActivity.this); aq.id(imageview).image(位图); //recciverImageSetImageBitmap(位图); } } },android,Android,这是我从服务器下载图像并存储在sd卡中的代码,我们使用此URl在图像视图上打印图像。我正在将图像下载到服务器,但无法存储。请建议我哪里出错,并提供空指针异常。我想问题出在这里: public class MainActivity extends Activity { LinearLayout linearMain; CheckBox checkBox; ImageView imageview; @Override protected void onCr
public class MainActivity extends Activity {
LinearLayout linearMain;
CheckBox checkBox;
ImageView imageview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageview = (ImageView) findViewById(R.id.image);
new myAsyncTask().execute();
}
class myAsyncTask extends AsyncTask<Void, Void, Void> {
public ProgressDialog dialog;
myAsyncTask() {
dialog = new ProgressDialog(MainActivity.this);
dialog.setMessage("Loading image...");
dialog.setCancelable(true);
dialog.setIndeterminate(true);
}
// AQuery aq = new AQuery(context);
// aq.id(recciverimage).image(bitmap);
// ;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.show();
}
protected Void doInBackground(Void... arg0) {
try {
InputStream stream = null;
URL url = new URL("http://api.lociiapp.com/TransientStorage/"
+ "1" + ".jpg");
URLConnection connection = url.openConnection();
try {
// The sdcard directory e.g. '/sdcard' can be used directly,
// or
// more safely abstracted with getExternalStorageDirectory()
File storagePath = Environment
.getExternalStorageDirectory();
OutputStream output = new FileOutputStream(new File(
storagePath, "1.jpg"));
try {
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = stream.read(buffer, 0,
buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
dialog.dismiss();
String imagePath = Environment.getExternalStorageDirectory()
.toString() + "/LociiImages/" + "1" + ".jpg";
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
AQuery aq = new AQuery(MainActivity.this);
aq.id(imageview).image(bitmap);
// recciverimage.setImageBitmap(bitmap);
}
}
}
其中,storagePath
是:
OutputStream output = new FileOutputStream(new File(
storagePath, "1.jpg"));
然后,您尝试在以下位置访问下载的图像:
File storagePath = Environment
.getExternalStorageDirectory();
如果比较storagePath和要查找的路径,您将看到您正在子文件夹lociImages
中搜索,但您没有将图片保存在那里
这就是为什么这一行:
String imagePath = Environment.getExternalStorageDirectory()
.toString() + "/LociiImages/" + "1" + ".jpg";
抛出一个NPE。只是一个建议。希望有帮助。当我调试时,您的日志在哪里?然后是catchblockExcute@MDpatel请检查我无法从下载图像到sd卡server@Departure没有办法。把你完整的日志放到问题的底部!没有错误,没有地方,我只想下载这张图片并存储在sd卡上
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);