BitMapFactory.decodeByteArray返回null,完美解决
/**
* 下载图片
*
* @param context
* @param path
* @return
* @throws Exception
*/
public static final int REQUEST_TIMEOUT = 10 * 1000;//设置请求超时10秒钟
public static byte[] getImage(Context context, String path) throws Exception {
URL url = new URL(path);
HttpURLConnection httpURLconnection = (HttpURLConnection) url.openConnection();
httpURLconnection.setRequestProperty("cookie", "wallet_token=" + PreferenceFile
.getUserToken(context));
httpURLconnection.setRequestMethod("GET");
httpURLconnection.setReadTimeout(REQUEST_TIMEOUT);
InputStream in = null;
byte[] b = new byte[1024];
int len = -1;
if (httpURLconnection.getResponseCode() == HttpStatus.SC_OK) {
in = httpURLconnection.getInputStream();
byte[] result = readStream(in);
in.close();
return result;
}
return null;
}
public static byte[] readStream(InputStream in) throws Exception {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
outputStream.close();
in.close();
return outputStream.toByteArray();
}
/**
* 图片保存本地
* @param context
* @param bmp
*/
public static void saveImageToGallery(Context context, Bitmap bmp) {
// 首先保存图片
String SD_CARD_PIC_FILE = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg";
File file = new File(SD_CARD_PIC_FILE);
if (!file.exists()) {
file.delete();
}
// String fileName = System.currentTimeMillis() + ".jpg";
// currentFile = new File(appDir, fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace(); }
}
// 其次把文件插入到系统图库
// try {
// MediaStore.Images.Media.insertImage(context.getContentResolver(),
// currentFile.getAbsolutePath(), fileName, null);
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// }
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(file.getPath())))); }
class ErweimaAsyncTask extends AsyncTask<String, Integer, byte[]> {
@Override
protected byte[] doInBackground(String... paramArray) {
try {
return Utils.getImage(ShowWebViewActivity.this, paramArray[0]);
} catch (Exception e) {
return null;
}
}
@Override
protected void onPostExecute(byte[] result) {
if(result != null) {
try {
mImageByte = result;
int length = result.length;
Bitmap mBitmap = BitmapFactory.decodeByteArray(result, 0, length);
Utils.saveImageToGallery(ShowWebViewActivity.this, mBitmap);
} catch (WindowManager.BadTokenException e) { // activity结束后dialog调用show方法等操作
}
}
}
}