2014-08-29 99 views
0

我将图像保存到SD卡中,但未显示在手机的图库中。我可以在文件夹中看到保存的图像,但该文件夹不在库中。在Android的图库中如何显示已保存的SD卡图像?

我的代码在这里,如何修复它?

img_icon.setOnLongClickListener(new View.OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 

      img_resim.buildDrawingCache(); 
      Bitmap bm = img_resim.getDrawingCache(); 

      OutputStream fOut = null; 

      Uri outputFileUri; 
      try { 
       root = new File(Environment.getExternalStorageDirectory() 
         + File.separator + "folder_name" + File.separator); 
       root.mkdirs(); 
       File sdImageMainDirectory = new File(root, "myPicName.jpg"); 
       outputFileUri = Uri.fromFile(sdImageMainDirectory); 
       fOut = new FileOutputStream(sdImageMainDirectory); 
      } catch (Exception e) { 
       Toast.makeText(context.getActivity(), 
         "Error occured. Please try again later.", 
         Toast.LENGTH_SHORT).show(); 
      } 

      try { 
       bm.compress(Bitmap.CompressFormat.PNG, 100, fOut); 
       fOut.flush(); 
       fOut.close(); 
      } catch (Exception e) { 

      } 

      context.getActivity() 
        .sendBroadcast(
          new Intent(
            Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
            Uri.parse("file://" 
              + Environment 
                .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)))); 

      return true; 
     } 
    }); 

    return rowView; 
} 

感谢您的帮助..

+0

正确关闭手机图库,然后再次启动该手机图库应用程序。 – Jamil 2014-08-29 15:14:43

回答

1

你的问题就在这里:

context.getActivity() 
       .sendBroadcast(
         new Intent(
           Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
           Uri.parse("file://" 
             + Environment 
               .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)))); 

你问的Android重新建立索引的所有文件在Environment.DIRECTORY_PICTURES

要求扫描整个目录树是很浪费的。在你的情况下,它更浪费,因为你没有将你的文件写入目录。相反,你是该文件写入到:

root = new File(Environment.getExternalStorageDirectory() 
        + File.separator + "folder_name" + File.separator); 
root.mkdirs(); 
File sdImageMainDirectory = new File(root, "myPicName.jpg"); 

因此,您的扫描不会拿起这个文件,你写在外部存储一些随机点。

您需要决定存储文件的适当位置,然后索引即一个文件。

相关问题