xumin_minzi 发表于 2013-1-15 08:15:45

gallery3D 展示指定SD卡图片文件夹问题

//调用gallery3d打开指定图片文件夹
    private void callGallery(String path, int type, String title)
    {
      Uri uri = Images.Media.INTERNAL_CONTENT_URI;
      uri = uri.buildUpon()
                .appendQueryParameter("bucketId", getHashcode(path)).build();
      Intent intent = new Intent(Intent.ACTION_VIEW, uri);
      intent.putExtra("windowTitle", title);
      intent.putExtra("mediaTypes", type);
      startActivity(intent);
    }
private String getHashcode(String path)
    {
      return String.valueOf(path.toLowerCase().hashCode());
    }

gallery3D是在cacheService中处理
首先将数据库中的路径加载到缓存当中,然后把缓存中的数据放到DataInputStream中处理,这是有问题,因为DataInputStream.writelong写会出问题的,我改成用一个list存起来,在writeSetsToCache方法中, 将dos.writeLong(set.mId);
                改成buckidList.add(set.mId);
                Utils.writeUTF(dos, set.mName);
改成map.put(i, set.mName);map是新增的一个全局变量来保存name的,因为dos.writeUTF会报异常,google这个地方应该没有好好测试

加载的时候在loadMediaSet方法中,将final long setId = dis.readLong();改成
                  final long setId = buckidList.get(i);

mediaSet.mName = Utils.readUTF(dis);改成mediaSet.mName = map.get(i);
这样就ok了
页: [1]
查看完整版本: gallery3D 展示指定SD卡图片文件夹问题