并不总是得到正确的形象

时间:2012-04-02 00:59:44

标签: android android-sdcard android-file

我有一个自定义相机,它有一个公共方法,用于将最后一张图像的缩略图保存到SD卡上的特定文件夹...

该方法如下所示:

public void getGalleryThumb(){
             // TODO add Logic for gallery images..
            File sdDir = new File("/sdcard/LC/images");
            File[] sdDirFiles = sdDir.listFiles();
            if(sdDir.length()>0){
                File lastPhoto = sdDirFiles[0];
                Bitmap myBitmap = BitmapFactory.decodeFile(lastPhoto.getAbsolutePath());
                //SET MY IMAGE VIEW BITMAP TO LAST FILE IN sdDIRFiles
                photo.setImageBitmap(myBitmap);
                btn_gallery.setVisibility(View.VISIBLE);
            }
            //Toast.makeText(getBaseContext(), "num images in gal:"+sdDirFiles.length +"last image name: "+sdDirFiles[0], Toast.LENGTH_LONG).show();

        }

我注意到如果我从该文件夹中删除了一张照片,上面的方法并不总是检索到正确的图像..我用过:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
                         Uri.parse("file://"+ Environment.getExternalStorageDirectory()+"/LC/images/")));

删除并将新文件写入该sdcard /文件夹后,但它似乎没有做这个技巧加上它强制这个令人讨厌的关于正在安装的SD卡的Toast消息..

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我在评论中写这篇文章,但我会在这里详细说明。多个问题:

  • listFiles不保证订单。您需要按上次修改后的方式对文件进行排序。
  • 您不应直接访问“/ sdcard”。您的第二段代码为Environment.getExternalStorageDirectory()。使用它。
  • 您收到有关SDCARD的消息?他们来自哪里?如果将其安装到本地计算机,则无法在应用程序安装时从您的应用程序访问它。