-1

我正在打开一个文件夹 onClick 并通过 FTP 发送图像。但是当图像大小超过 2MB 时,我会遇到传输错误。因此,如果该文件夹的图像大小小于 1MB,我想打开该文件夹,否则它将发送一条消息进行检查。这种情况是否可能,因为我是 android 新手,请帮助我。

protected void LoadGalleryImages() {
 final String[] columns = { MediaStore.Images.Media.DATA,
                    MediaStore.Images.Media._ID };
            final String orderBy = MediaStore.Images.Media._ID;
            String foldername=sharedpre.getString("FolderName", "");

            imagecursor=managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,MediaStore.Images.Media.DATA + " like ? ",
                    new String[] {"%/"+foldername+"/%"},null);          

            int image_column_index = 0;

            if (imagecursor != null) {
                image_column_index = imagecursor
                        .getColumnIndex(MediaStore.Images.Media._ID);
                count = imagecursor.getCount();
            }

            imgSelected = new String[count];

            arrPath = new String[count];
            thumbnailsselection = new boolean[count];
            for (int i = 0; i < count; i++) {
                if (imagecursor != null) {
                    imagecursor.moveToPosition(i);                  
                    int dataColumnIndex = imagecursor
                            .getColumnIndex(MediaStore.Images.Media.DATA);

                    arrPath[i] = imagecursor.getString(dataColumnIndex);
                }
4

2 回答 2

2

您可以在管理查询中使用MediaStore.Images.Media.SIZE并将其过滤为特定大小,因此只能根据您的要求获取您需要的那些图像。

编辑 :

protected void LoadGalleryImages() {
 final String[] columns = { MediaStore.Images.Media.DATA,
                    MediaStore.Images.Media._ID };
            final String orderBy = MediaStore.Images.Media._ID;
            String foldername=sharedpre.getString("FolderName", "");

            imagecursor=managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,MediaStore.Images.Media.DATA + " like ? ",
                    new String[] {"%/"+foldername+"/%"},null);          

            int image_column_index = 0;

            if (imagecursor != null) {
                         String[] sizecolumns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media.SIZE };
                         Cursor imgcursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, sizecolumns,MediaStore.Images.Media.SIZE + " < ? ",  new String[] {"1024"},null);

                if(imgcursor !=null) {
                         // Your Code
                }
            }

            imgSelected = new String[count];

            arrPath = new String[count];
            thumbnailsselection = new boolean[count];
            for (int i = 0; i < count; i++) {
                if (imagecursor != null) {
                    imagecursor.moveToPosition(i);                  
                    int dataColumnIndex = imagecursor
                            .getColumnIndex(MediaStore.Images.Media.DATA);

                    arrPath[i] = imagecursor.getString(dataColumnIndex);
                }
于 2013-12-20T12:10:31.807 回答
1

File [] files = %FOLDER%.listFiles();

你得到一个目录的文件。%FOLDER% 是您要检查的目录。只需遍历这些文件并在其中一个大于 1 MB 时返回 false。

if(files.length > 1048576){
    return false;
}

把它放在一个方法中,将文件夹作为参数传递,就是这样。

于 2013-12-20T12:07:44.140 回答