枫之缘 2018-05-10 07:36 采纳率: 60%
浏览 2154
已采纳

小米手机插入系统图库找不到图片

// 文件插入系统图库
try {
MediaStore.Images.Media.insertImage(instance.getContentResolver(), path, filename, null);
// 最后通知图库更新
instance.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

其他手机都行就是小米,图库里找不到图片,求大神解答

  • 写回答

1条回答 默认 最新

  • javaxiaobai18 2018-05-10 08:00
    关注

    安卓把照片加载到图库 (Add the Photo to a Gallery)
    http://developer.android.com/intl/zh-cn/training/camera/photobasics.html

    官方的指导已经说的很明确了,但有几个需要注意的小地方,稍不留神就会犯错

    1 官方文档不严谨
    在创建文件的最后有这样一句

    mCurrentPhotoPath = "file:" + image.getAbsolutePath();
    return image;
    1
    2
    3
    这是添加到相册的代码

    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);
    }
    1
    2
    3
    4
    5
    6
    7
    8
    因为先前已经增加了file:”,所以再一次解析uri就会有问题,应当Uri.fromfile时候直接传入保存的图片就行

    2 小米手机无法添加到相册
    注意在创建文件的时候的这一句

    File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    1
    2
    小米手机会发现在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;
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)