关于小米手机无法将照片添加到图库解决方法
2016-04-10 16:47
621 查看
安卓把照片加载到图库 (Add the Photo to a Gallery)
http://developer.android.com/intl/zh-cn/training/camera/photobasics.html官方的指导已经说的很明确了,但有几个需要注意的小地方,稍不留神就会犯错
1 官方文档不严谨
在创建文件的最后有这样一句mCurrentPhotoPath = "file:" + image.getAbsolutePath(); return image;
这是添加到相册的代码
private void galleryAddPic() { Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File f = new File(mCurrentPhotoPath); Uri contentUri = Uri.fromFile(f);//这一句有错误 mediaScanIntent.setData(contentUri); this.sendBroadcast(mediaScanIntent); }
因为先前已经增加了file:”,所以再一次解析uri就会有问题,应当Uri.fromfile时候直接传入保存的图片就行
2 小米手机无法添加到相册
注意在创建文件的时候的这一句File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
小米手机会发现在sd卡下找不到Picture这一个文件夹,默认照相机是放在sdcard下DCIM/Camera这一个文件夹,这个文件夹对外是可读可写的,也就是说我们应用通过调用系统相机,可以把图片放在这里
3 全部代码
//点击这个按钮开启系统相机,并且添加到相册 public void photo(View view){ try { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); photoFile = createImageFile(); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); startActivityForResult(takePictureIntent, 1); //startActivity(takePictureIntent); } catch (IOException e) { e.printStackTrace(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // super.onActivityResult(requestCode, resultCode, data); Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File f = new File(mCurrentPhotoPath); Uri contentUri = Uri.fromFile( photoFile ); System.out.println(contentUri.toString()); mediaScanIntent.setData(contentUri); this.sendBroadcast(mediaScanIntent); } private File createImageFile() throws IOException { // Create an image file name /* String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File storageDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES); File image = File.createTempFile( imageFileName, ".jpg", storageDir ); */ String timeStamp = new SimpleDateFormat("HHmmss").format(new Date()); File image = new File(Environment.getExternalStorageDirectory(),"DCIM/Camera/"+timeStamp+".jpg"); // Save a file: path for use with ACTION_VIEW intents mCurrentPhotoPath = image.getAbsolutePath(); return image; }
相关文章推荐
- 3章 程序流程控制
- 让 UITextView 带上 Placeholder
- 如何设计好的RESTful API之安全性
- 20145215《Java程序设计》实验一实验报告
- db2 - DETACH & ATTACH PARTITION
- 进程之进程间的8种通信方式
- Nio
- WSDL UDDI SOAP与在webserver标准中的作用
- 4种方法让SpringMVC接收多个对象
- java代理机制
- string类的使用
- webAPP前端必备知识
- [python]使用txt保存和读取列表变量
- 大型电商网站两年之技术总结
- ScrollView与GridView滚动发生冲突
- 关于Adapter的notifyDataSetChanged是否生效
- 树结构
- 通过第三方平台shareSDK分享链接
- 机器学习:贝叶斯_3:贝叶斯网络
- 使用dojo.connect()添加事件的注意事项