解决方案 »

  1.   

     byte[] b = new byte[1024];         //创建字节数组。  
                 while(bis.read(b)!=-1){            //输入流中的数据如果还有下一行(!=-1)将继续循环  
                     bos.write(b);                 //将字节数组写入输出流。      
                 }   这个地方 改成
    int n = -1;
    while(n= bis.read(b) ! = -1)  {
         bos.write(0,n,b);类似这样的,否则有时候你的字节数刚好不是1024就可能打不开图片
    }如果你下载到SDCARD中,手机相册里面的数据 是有个数据库维护的,你重来不打开可能 数据库就没有 刚下载的图片信息。
      

  2.   

    byte[] b = new byte[1024];   不需要这句代码吗?  那while(n= bis.read(b) ! = -1)  b 是什么?
      

  3.   

    还需要更新media的database。
    可以发送broadcast Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,参数带上文件的完整路径,让mediaprovider scan这个文件。
      

  4.   

    如果没有通知系统更新图库的sqlite数据,新的图片是看不到的。可以发个开机广播或者sdcard重新放入的广播,系统就会更新的。 
    或者你重启模拟器
      

  5.   

    sccard重新放入广播,求指点?
      

  6.   

    你好,我不会用广播,能给个demo吗?  谢谢你了
      

  7.   


     public void scanFileAsync(Context ctx, String filePath) {
             Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
             scanIntent.setData(Uri.fromFile(new File(filePath)));
             ctx.sendBroadcast(scanIntent);
     }写了一个这样的方法,把我的midr(文件目录) 丢进去,貌似还是不行
      

  8.   

    问题解决了,网上找的答案,不过还是谢谢几位。  
     //扫描指定文件
     public void scanFileAsync(Context ctx, String filePath) {
             Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
             scanIntent.setData(Uri.fromFile(new File(filePath)));
             ctx.sendBroadcast(scanIntent);
     }
     
     //扫描指定目录
     public static final String ACTION_MEDIA_SCANNER_SCAN_DIR = "android.intent.action.MEDIA_SCANNER_SCAN_DIR";
         public void scanDirAsync(Context ctx, String dir) {
                Intent scanIntent = new Intent(ACTION_MEDIA_SCANNER_SCAN_DIR);
                scanIntent.setData(Uri.fromFile(new File(dir)));
                ctx.sendBroadcast(scanIntent);
         }调用这两个方法就可以了