关于小米手机无法将照片添加到图库解决方法

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值