解决华为手机获取不到图库图片的路径问题
来源:互联网 发布:kafka数据写入 hdfs 编辑:程序博客网 时间:2024/05/01 11:59
Uri originalUri = data.getData();Cursor cursor = getContentResolver().query(originalUri, null, null, null, null);if (cursor != null) { cursor.moveToFirst(); String document_id = cursor.getString(0); document_id = document_id.substring(document_id.lastIndexOf(":") + 1); cursor.close(); cursor = getContentResolver().query( android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null); if (cursor != null) { cursor.moveToFirst(); picturePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); cursor.close(); } Log.e("zm","picturePath1111:"+picturePath);}if(bitmap!=null&&!bitmap.isRecycled()){ bitmap.recycle();} bitmap = getBitmap(picturePath);iv_img.setImageBitmap(bitmap);
package cc.angis.jy365.activity;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.ContentResolver;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.net.Uri;import android.os.AsyncTask;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import com.custom.view.SpinerPopWindow;import com.lidroid.xutils.HttpUtils;import com.lidroid.xutils.exception.HttpException;import com.lidroid.xutils.http.RequestParams;import com.lidroid.xutils.http.ResponseInfo;import com.lidroid.xutils.http.callback.RequestCallBack;import com.lidroid.xutils.http.client.HttpRequest;import com.nui.multiphotopicker.model.ImageItem;import com.nui.multiphotopicker.util.CustomConstants;import com.zqy.datetimepicker.datedialog.DateTimePickerDialog;import com.zqy.datetimepicker.datedialog.DateTimePickerDialog.OnDateTimeSetListener;import org.json.JSONException;import org.json.JSONObject;import java.io.ByteArrayOutputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.UUID;import cc.angis.jy365.appinterface.CreateStudentForClass;import cc.angis.jy365.appinterface.TCInsertOrTCEdit;import cc.angis.jy365.db.LightDBHelper;import cc.angis.jy365.util.GobalConstants;import cc.angis.ssyy.R;import static com.networkbench.com.google.gson.internal.a.m.F;public class CreateActivity extends Activity { private ImageView back; private EditText conferName; private TextView conferTypeAll; private TextView conferTypePart; private ImageView image1, image2; private LinearLayout addPer; private LinearLayout conferType; private TextView startTime; private LinearLayout startTimeLinear; private EditText durationTime; private EditText conferAddress; private EditText conferUnit; private EditText conferIntroduction; private EditText conferPlan; private EditText conferContent; private Button publish; private TextView conferTypeText; private String conferTypeStr = ""; private ImageView videoConfer; private ProgressDialog progress = null; private boolean islive = false;//是否视频会议 private boolean isAll = true;//全体党员 private long startTimeSec = 0; ////////////////////// private SpinerPopWindow<String> mSpinerPopWindow; private List<String> list; private String user_nm; private Button bt_select_pic, bt_take_photo; private ImageView iv_img; String conferNameText; String startTimeText; String conferAddText; String conferUnitText; String conferIntroductionText; String conferPlanText; String conferContentText; String picturePath = ""; private int readTimeOut = 10 * 1000; // 读取超时 private int connectTimeout = 10 * 1000; // 超时时间 /*** * 请求使用多长时间 */ private static int requestTime = 0; private static final String CHARSET = "utf-8"; // 设置编码 String tcid = ""; Bitmap bitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_create); ///////////////////////////////////// startTimeLinear = (LinearLayout) findViewById(R.id.startTimeLinear); videoConfer = (ImageView) findViewById(R.id.videoConfer); back = (ImageView) findViewById(R.id.back4); conferType = (LinearLayout) findViewById(R.id.conferType); conferName = (EditText) findViewById(R.id.conferName); conferAddress = (EditText) findViewById(R.id.conferAddress); conferUnit = (EditText) findViewById(R.id.conferUnit); conferIntroduction = (EditText) findViewById(R.id.conferIntroduction); conferPlan = (EditText) findViewById(R.id.conferPlan); conferContent = (EditText) findViewById(R.id.conferContent); conferTypeAll = (TextView) findViewById(R.id.conferTypeAll); conferTypePart = (TextView) findViewById(R.id.conferTypePart); startTime = (TextView) findViewById(R.id.startTime); durationTime = (EditText) findViewById(R.id.durationTime); addPer = (LinearLayout) findViewById(R.id.addPer); publish = (Button) findViewById(R.id.publish); image1 = (ImageView) findViewById(R.id.image1); image2 = (ImageView) findViewById(R.id.image2); bt_select_pic = (Button) findViewById(R.id.bt_select_pic); bt_take_photo = (Button) findViewById(R.id.bt_take_photo); iv_img = (ImageView) findViewById(R.id.iv_img); bt_select_pic.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { onLocation(); } }); bt_take_photo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { onTakePhoto(); } }); ////////////////// image1.setImageResource(R.drawable.meetsele); image2.setImageResource(R.drawable.meet_unsele); addPer.setVisibility(View.INVISIBLE); ////////////////// back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub CreateActivity.this.finish(); } }); videoConfer.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (islive) { islive = false; videoConfer.setImageResource(R.drawable.meet_unsele); } else { islive = true; videoConfer.setImageResource(R.drawable.meetsele); } } }); //下拉框 conferTypeText = (TextView) findViewById(R.id.conferTypeText); list = new ArrayList<String>(); list.add("支部大会"); list.add("支部委员会"); list.add("党小组会"); list.add("党课"); list.add("其他"); conferType.setOnClickListener(clickListener); mSpinerPopWindow = new SpinerPopWindow<String>(this, list, itemClickListener); startTimeLinear.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showDialog(startTime); } }); image1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub image1.setImageResource(R.drawable.meetsele); image2.setImageResource(R.drawable.meet_unsele); addPer.setVisibility(View.INVISIBLE); isAll = true; } }); image2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub image1.setImageResource(R.drawable.meet_unsele); image2.setImageResource(R.drawable.meetsele); addPer.setVisibility(View.VISIBLE); isAll = false; } }); addPer.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(CreateActivity.this, cc.angis.jy365.activity.ChangeUserAcitivity.class); startActivityForResult(intent, 1); } }); publish.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (conferTypeStr.equals("")) { Toast.makeText(CreateActivity.this, "请选择会议类型", Toast.LENGTH_SHORT).show(); return; } if (startTimeSec == 0) { Toast.makeText(CreateActivity.this, "请选择会议开始时间", Toast.LENGTH_SHORT).show(); return; } if (conferName.getText().toString().equals("")) { Toast.makeText(CreateActivity.this, "请输入会议名称", Toast.LENGTH_SHORT).show(); return; } if (getStopTime().equals("")) { Toast.makeText(CreateActivity.this, "会议时长错误", Toast.LENGTH_SHORT).show(); return; } if (TextUtils.isEmpty(user_nm)) { Toast.makeText(CreateActivity.this, "请添加党组成员", Toast.LENGTH_SHORT).show(); return; } if(picturePath.equals("")||picturePath==null){ Toast.makeText(CreateActivity.this, "请选择图片", Toast.LENGTH_SHORT).show(); return; } progress = ProgressDialog.show(CreateActivity.this, "", "正在提交请稍后。。。。", true, true); conferNameText = conferName.getText().toString(); startTimeText = startTime.getText().toString(); conferAddText = conferAddress.getText().toString(); conferUnitText = conferUnit.getText().toString(); conferIntroductionText = conferIntroduction.getText().toString(); conferPlanText = conferPlan.getText().toString(); conferContentText = conferContent.getText().toString(); //new SendDataTask().execute(); Log.i("zm", "picturePath:" + picturePath); //uploadFile(picturePath); //RequestParams params = new RequestParams(); if (getIntent().getStringExtra("toCreateActivity") != null && getIntent().getStringExtra("toCreateActivity").equals("volunteer")) { } else { new SendPictureDataTask().execute(); } } }); } /*-------------------------------*/// 拍照上传 public void onTakePhoto() { Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File vFile = new File(Environment.getExternalStorageDirectory() + "/myimage/", String.valueOf(System.currentTimeMillis()) + ".jpg"); if (!vFile.exists()) { File vDirPath = vFile.getParentFile(); vDirPath.mkdirs(); } else { if (vFile.exists()) { vFile.delete(); } } picturePath = vFile.getPath(); Uri cameraUri = Uri.fromFile(vFile); openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, cameraUri); startActivityForResult(openCameraIntent, 0); /* Uri imageUri = null; String fileName = null; Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileName = "image.jpg"; imageUri = Uri.fromFile(new File(Environment .getExternalStorageDirectory(), fileName)); // 指定照片保存路径(SD卡),image.jpg为一个临时文件,每次拍照后这个图片都会被替换 openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(openCameraIntent, 0);*/ } // 本地上传 public void onLocation() { Intent openAlbumIntent = new Intent(Intent.ACTION_GET_CONTENT); openAlbumIntent.setDataAndType( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(openAlbumIntent, 2); } /*--------------------------------*/ public String getStopTime() { String duration = durationTime.getText().toString(); if (duration.equals("")) { return ""; } else { String stopTime = getStringDate((startTimeSec + (Integer.parseInt(duration) * 60000))); return stopTime.substring(0, stopTime.length() - 3); } } public void showDialog(final TextView textView) { DateTimePickerDialog dialog = new DateTimePickerDialog(this, System.currentTimeMillis()); /** * 实现接口 */ dialog.setOnDateTimeSetListener(new OnDateTimeSetListener() { public void OnDateTimeSet(AlertDialog dialog, long date) { Toast.makeText(CreateActivity.this, "您输入的日期是:" + getStringDate(date), Toast.LENGTH_LONG).show(); String dateStr = getStringDate(date); startTimeSec = date; textView.setText(dateStr.substring(0, dateStr.length() - 3)); } }); dialog.show(); } /** * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss */ public static String getStringDate(Long date) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(date); return dateString; } //////////////////////////////// private class SendUserTask extends AsyncTask<Void, Void, String[]> { String tc_id = ""; int result = 0; public SendUserTask(String tc_id) { this.tc_id = tc_id; } ; @Override protected String[] doInBackground(Void... params) { result = new CreateStudentForClass(tc_id, user_nm).connect(); return null; } @Override protected void onPostExecute(String[] result0) { super.onPostExecute(result0); progress.dismiss(); if (result == 1) { Toast.makeText(CreateActivity.this, "添加成功!", Toast.LENGTH_LONG).show(); CreateActivity.this.finish(); } else { Toast.makeText(CreateActivity.this, "添加失败!", Toast.LENGTH_LONG).show(); } } } ///////////////////////////////// //////////////////////////////////////// /** * popupwindow显示的ListView的item点击事件 */ private OnItemClickListener itemClickListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mSpinerPopWindow.dismiss(); // management.setText(list.get(position)); conferTypeText.setText(list.get(position).toString()); /* @[@"14",@"15",@"16",@"17",@"8"]; @[@"支部大会",@"支部委员会",@"党小组会",@"党课",@"其他分类"];*/ if (position != 4) { conferTypeStr = 14 + position + ""; } else { conferTypeStr = "8"; } } }; /** * 显示PopupWindow */ private OnClickListener clickListener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.conferType: mSpinerPopWindow.setWidth(conferType.getWidth()); mSpinerPopWindow.showAsDropDown(conferType); break; } } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 0: if (resultCode == -1 && !TextUtils.isEmpty(picturePath)) { if(bitmap!=null&&!bitmap.isRecycled()){ bitmap.recycle(); } bitmap = getBitmap(picturePath); iv_img.setImageBitmap(bitmap); } break; case 1: if (resultCode == Activity.RESULT_OK) { user_nm = data.getStringExtra("user_nm"); if (!user_nm.equals("") && !user_nm.equals(",")) user_nm = user_nm.substring(0, user_nm.length() - 1); } break; case 2: Uri originalUri = data.getData(); Cursor cursor = getContentResolver().query(originalUri, null, null, null, null); if (cursor != null) { cursor.moveToFirst(); String document_id = cursor.getString(0); document_id = document_id.substring(document_id.lastIndexOf(":") + 1); cursor.close(); cursor = getContentResolver().query( android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null); if (cursor != null) { cursor.moveToFirst(); picturePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); cursor.close(); } Log.e("zm","picturePath1111:"+picturePath); } if(bitmap!=null&&!bitmap.isRecycled()){ bitmap.recycle(); } bitmap = getBitmap(picturePath); iv_img.setImageBitmap(bitmap); break; } } private void uploadFile(String uploadFile) { File file = new File(uploadFile); String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成 String PREFIX = "--"; String LINE_END = "\r\n"; String CONTENT_TYPE = "multipart/form-data"; // 内容类型 Map<String, String> paramsAnd = new HashMap<String, String>(); paramsAnd.put("method", "TCInsertOrTCEdit"); paramsAnd.put("tcid", "0"); paramsAnd.put("TcName", conferNameText); paramsAnd.put("txtEndTime", getStopTime()); paramsAnd.put("UserID", LightDBHelper.getUserMail(CreateActivity.this)); paramsAnd.put("txtHostedAdd", conferAddText); paramsAnd.put("txtHostedGroup", conferUnitText); paramsAnd.put("txtStartTime", startTimeText); paramsAnd.put("txtSynopsis", conferContentText); paramsAnd.put("tc_ClassTypeID", conferTypeStr); paramsAnd.put("tc_ClassCredits", "2"); paramsAnd.put("tc_Plan", conferPlanText); paramsAnd.put("txtRemark", conferIntroductionText); paramsAnd.put("islive", islive + ""); String uploadUrl = GobalConstants.URL.DEFAULTPREFIX; /*String uploadUrl = GobalConstants.URL.DEFAULTPREFIX+"?method=TCInsertOrTCEdit"+"&tcid="+0+"&TcName="+conferNameText+"&txtEndTime="+getStopTime() +"&UserID="+LightDBHelper.getUserMail(CreateActivity.this)+"&txtHostedAdd="+conferAddText+"&txtHostedGroup="+conferUnitText +"&txtStartTime="+startTimeText+"&txtSynopsis="+conferContentText+"&tc_ClassTypeID="+conferTypeStr+"&tc_ClassCredits="+"2" +"&tc_Plan="+conferPlanText+"&txtRemark="+conferIntroductionText+"&islive="+ islive;*/ long requestTime = System.currentTimeMillis(); long responseTime = 0; try { URL url = new URL(uploadUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(readTimeOut); conn.setConnectTimeout(connectTimeout); conn.setDoInput(true); // 允许输入流 conn.setDoOutput(true); // 允许输出流 conn.setUseCaches(false); // 不允许使用缓存 conn.setRequestMethod("POST"); // 请求方式 conn.setRequestProperty("Charset", CHARSET); // 设置编码 conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);// conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); /** * 当文件不为空,把文件包装并且上传 */ if (!file.exists()) { Toast.makeText(CreateActivity.this, "文件不存在", Toast.LENGTH_SHORT).show(); } DataOutputStream dos = new DataOutputStream(conn.getOutputStream()); StringBuffer sb = null; String params = ""; /*** * 以下是用于上传参数 */ if (paramsAnd != null && paramsAnd.size() > 0) { Iterator<String> it = paramsAnd.keySet().iterator(); while (it.hasNext()) { sb = null; sb = new StringBuffer(); String key = it.next(); String value = paramsAnd.get(key); sb.append(PREFIX).append(BOUNDARY).append(LINE_END); sb.append("Content-Disposition: form-data; name=\"").append(key).append("\"").append(LINE_END).append(LINE_END); sb.append(value).append(LINE_END); params = sb.toString(); Log.i("zm", key + "=" + params + "##"); dos.write(params.getBytes());// dos.flush(); } } sb = null; params = null; sb = new StringBuffer(); /** * 这里重点注意: name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件 * filename是文件的名字,包含后缀名的 比如:abc.png */ sb.append(PREFIX).append(BOUNDARY).append(LINE_END); sb.append("Content-Disposition:form-data; name=\"" + "File" + "\"; filename=\"" + file.getName() + "\"" + LINE_END); sb.append("Content-Type:image/pjpeg" + LINE_END); // 这里配置的Content-type很重要的 ,用于服务器端辨别文件的类型的 sb.append(LINE_END); params = sb.toString(); sb = null; Log.i("zm", file.getName() + "=" + params + "##"); dos.write(params.getBytes()); /**上传文件*/ InputStream is = new FileInputStream(file); //onUploadProcessListener.initUpload((int)file.length()); byte[] bytes = new byte[1024]; int len = 0; int curLen = 0; while ((len = is.read(bytes)) != -1) { curLen += len; dos.write(bytes, 0, len); //onUploadProcessListener.onUploadProcess(curLen); } is.close(); dos.write(LINE_END.getBytes()); byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes(); dos.write(end_data); dos.flush();//// dos.write(tempOutputStream.toByteArray()); /** * 获取响应码 200=成功 当响应成功,获取响应的流 */ int res = conn.getResponseCode(); responseTime = System.currentTimeMillis(); this.requestTime = (int) ((responseTime - requestTime) / 1000); Log.e("zm", "response code:" + res); if (res == 200) { Log.e("zm", "request success"); InputStream input = conn.getInputStream(); StringBuffer sb1 = new StringBuffer(); int ss; while ((ss = input.read()) != -1) { sb1.append((char) ss); } String result = sb1.toString(); Log.i("zm", "result:" + result); try { JSONObject js = new JSONObject(result); tcid = js.getString("TCID"); } catch (JSONException e) { e.printStackTrace(); } return; } else { return; } } catch (MalformedURLException e) { e.printStackTrace(); return; } catch (IOException e) { e.printStackTrace(); return; } } public String getFileName(String pathandname) { return pathandname.substring(pathandname.lastIndexOf(".") + 1); } private class SendPictureDataTask extends AsyncTask<Void, Void, String[]> { @Override protected String[] doInBackground(Void... params) { uploadFile(picturePath); return null; } @Override protected void onPostExecute(String[] result) { Log.d("zm", "tcid:" + tcid); if (!tcid.equals("")) { new SendUserTask(tcid).execute(); } super.onPostExecute(result); } } private Bitmap getBitmap(String uploadFile) { try { Bitmap bitMap = BitmapFactory.decodeFile(uploadFile); if (bitMap.getWidth() * bitMap.getHeight() < 490000) {// Caused by: java.lang.NullPointerException: Attempt to invoke virtual method // 'int android.graphics.Bitmap.getWidth()' on a null object reference return bitMap; } //图片允许最大空间 单位:KB double maxSize = 300.00; //将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大) ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitMap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); //将字节换成KB double mid = b.length / 1024; //判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩 if (mid > maxSize) { //获取bitmap大小 是允许最大大小的多少倍 double i = mid / maxSize; //开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍 (1.保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小) bitMap = zoomImage(bitMap, bitMap.getWidth() / Math.sqrt(i), bitMap.getHeight() / Math.sqrt(i)); } return bitMap; }catch (OutOfMemoryError err){ BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 4; Bitmap bmp = BitmapFactory.decodeFile(uploadFile, opts); return bmp; } } public static Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) { // 获取这个图片的宽和高 float width = bgimage.getWidth(); float height = bgimage.getHeight(); // 创建操作图片用的matrix对象 Matrix matrix = new Matrix(); // 计算宽高缩放率 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 缩放图片动作 matrix.postScale(scaleWidth, scaleHeight); Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true); return bitmap; }}
阅读全文
0 0
- 解决华为手机获取不到图库图片的路径问题
- Android解决部分机型获取不到系统拍照图片,图库图片问题的解决
- 解决Android4.4及以上系统获取系统图片失败的问题,例如华为手机,调系统图库的时候就出现异常
- 解决华为手机获取相册图片路径为null
- 解决Android手机自带内部存储路径存在但是却获取不到内容的问题
- 解决android4.4以上获取不到图片路径问题
- 解决华为手机选择图片路径不一样问题
- Android 头像替换,解决华为手机取不到图片
- 解决一下华为手机选取相册照片,选取不到问题。
- 解决在华为手机获取的图片列表中部分图片不能被获取到
- FileUpload获取不到路径的问题
- FileUpload获取不到路径的问题
- android拍照后图片路径的获取(解决不同手机存在拍照后旋转的问题)
- 解决安卓4.4适配--获取不到图库url的BUG
- android解决三星手机拍照获取图片的问题
- 手机拍照获取不到图片?<部分手机>
- Android 解决华为手机图片底色变绿问题
- android 扫描手机上的图片 获取手机图片路径
- Maven项目集成cxf框架发布WebService
- POJ2318 TOYS(叉积,计算几何)
- File Permissions
- JMeter在NON GUI Mode下执行压力测试(Windows)
- 快速检测是否在线
- 解决华为手机获取不到图库图片的路径问题
- redis入门
- 5分钟通俗易懂了解什么是云存储
- APP优雅退出的几种方式
- 令人惊艳的废弃集装箱改造设计
- iOS
- centos升级内核
- spark 安装与python pycharm搭建
- 如何在官网下载JDK(版本、系统类型、字节位等)