有条件地隐藏&在Android中取消隐藏图像文件夹

时间:2016-05-29 22:18:15

标签: android checkbox android-gallery mediastore

以下是我的要求: 我的活动中有一个复选框。如果选中该复选框,我会添加一个' .nomedia'文件以隐藏我的文件夹中的所有照片。如果取消选中该复选框,我将删除' .nomedia'文件,显示文件夹中的所有照片。我的问题是,虽然创建/删除了'.nomedia'文件成功,图像的隐藏/取消隐藏不会发生在android gallery应用程序中。如何根据我的复选框状态强制图库应用显示/隐藏文件夹内容?

以下是我的代码:

CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
 if (checkBox.isChecked()) {
                                hideFolder();                                    
                            } else {
                                unHideFolder();                                    
                            }

    private void hideFolder() {
        File targetDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + CONSTANTS.MYFOLDERPATH);
        File noMediaFile = new File(targetDir, ".nomedia");
        try {
            if (!noMediaFile.exists()) {
                noMediaFile.createNewFile();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    private void unHideFolder() {
        File targetDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + CONSTANTS.MYFOLDERPATH);
        File noMediaFile = new File(targetDir, ".nomedia");
        if (noMediaFile.exists()) {
            noMediaFile.delete();
        }
    }

1 个答案:

答案 0 :(得分:0)

您需要强制启动媒体扫描。因此,对于SD卡上的媒体索引,.nomedia将不会立即反映出来。在这样做的方法是清除Gallery应用程序的数据。