Skip to content

Commit b5ce6a0

Browse files
committed
Add option to not show hidden files
1 parent e5ec49e commit b5ce6a0

File tree

7 files changed

+29
-9
lines changed

7 files changed

+29
-9
lines changed

library/src/main/java/com/developer/filepicker/model/DialogProperties.java

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class DialogProperties {
1212
public File error_dir;
1313
public File offset;
1414
public String[] extensions;
15+
public boolean show_hidden_files;
1516

1617
public DialogProperties() {
1718
selection_mode = DialogConfigs.SINGLE_MODE;
@@ -20,5 +21,6 @@ public DialogProperties() {
2021
error_dir = new File(DialogConfigs.DEFAULT_DIR);
2122
offset = new File(DialogConfigs.DEFAULT_DIR);
2223
extensions = null;
24+
show_hidden_files = false;
2325
}
2426
}

library/src/main/java/com/developer/filepicker/utils/Utility.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import android.content.Context;
44
import android.content.pm.PackageManager;
5+
56
import com.developer.filepicker.model.FileListItem;
7+
68
import java.io.File;
79
import java.util.ArrayList;
810
import java.util.Collections;
@@ -23,11 +25,11 @@ public static boolean checkStorageAccessPermissions(Context context) {
2325
}
2426
}
2527

26-
public static ArrayList<FileListItem> prepareFileListEntries(ArrayList<FileListItem> internalList, File inter, ExtensionFilter filter) {
28+
public static ArrayList<FileListItem> prepareFileListEntries(ArrayList<FileListItem> internalList, File inter, ExtensionFilter filter, boolean show_hidden_files) {
2729
try {
28-
2930
for (File name : inter.listFiles(filter)) {
3031
if (name.canRead()) {
32+
if(name.getName().startsWith(".") && !show_hidden_files) continue;
3133
FileListItem item = new FileListItem();
3234
item.setFilename(name.getName());
3335
item.setDirectory(name.isDirectory());

library/src/main/java/com/developer/filepicker/view/FilePickerDialog.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import android.widget.ListView;
1515
import android.widget.TextView;
1616
import android.widget.Toast;
17+
1718
import com.developer.filepicker.R;
1819
import com.developer.filepicker.controller.DialogSelectionListener;
1920
import com.developer.filepicker.controller.NotifyItemChecked;
@@ -25,6 +26,7 @@
2526
import com.developer.filepicker.utils.ExtensionFilter;
2627
import com.developer.filepicker.utils.Utility;
2728
import com.developer.filepicker.widget.MaterialCheckbox;
29+
2830
import java.io.File;
2931
import java.util.ArrayList;
3032
import java.util.List;
@@ -209,7 +211,7 @@ protected void onStart() {
209211
dname.setText(currLoc.getName());
210212
dir_path.setText(currLoc.getAbsolutePath());
211213
setTitle();
212-
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter);
214+
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter, properties.show_hidden_files);
213215
mFileListAdapter.notifyDataSetChanged();
214216
listView.setOnItemClickListener(this);
215217
}
@@ -240,7 +242,7 @@ public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
240242
parent.setTime(currLoc.lastModified());
241243
internalList.add(parent);
242244
}
243-
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter);
245+
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter, properties.show_hidden_files);
244246
mFileListAdapter.notifyDataSetChanged();
245247
} else {
246248
Toast.makeText(context, R.string.error_dir_access, Toast.LENGTH_SHORT).show();
@@ -422,7 +424,7 @@ public void onBackPressed() {
422424
parent.setTime(currLoc.lastModified());
423425
internalList.add(parent);
424426
}
425-
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter);
427+
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter, properties.show_hidden_files);
426428
mFileListAdapter.notifyDataSetChanged();
427429
}
428430
setTitle();

sample/src/main/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
android:icon="@mipmap/ic_launcher"
1313
android:label="@string/app_name"
1414
android:theme="@style/AppTheme"
15+
android:requestLegacyExternalStorage="true"
1516
tools:ignore="AllowBackup,GoogleAppIndexingWarning">
1617

1718
<activity android:name="com.developer.filepicker.file.MainActivity">

sample/src/main/java/com/developer/filepicker/file/MainActivity.java

+9-4
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,21 @@
33
import android.content.Intent;
44
import android.content.pm.PackageManager;
55
import android.os.Bundle;
6-
import androidx.annotation.NonNull;
7-
import androidx.appcompat.app.AppCompatActivity;
8-
import androidx.recyclerview.widget.LinearLayoutManager;
9-
import androidx.recyclerview.widget.RecyclerView;
106
import android.view.Menu;
117
import android.view.MenuInflater;
128
import android.view.MenuItem;
139
import android.view.View;
1410
import android.widget.Button;
11+
import android.widget.CheckBox;
1512
import android.widget.EditText;
1613
import android.widget.RadioGroup;
1714
import android.widget.Toast;
1815

16+
import androidx.annotation.NonNull;
17+
import androidx.appcompat.app.AppCompatActivity;
18+
import androidx.recyclerview.widget.LinearLayoutManager;
19+
import androidx.recyclerview.widget.RecyclerView;
20+
1921
import com.developer.filepicker.controller.DialogSelectionListener;
2022
import com.developer.filepicker.model.DialogConfigs;
2123
import com.developer.filepicker.model.DialogProperties;
@@ -89,6 +91,7 @@ public void onCheckedChanged(RadioGroup group, int checkedId) {
8991
final EditText extension = findViewById(R.id.extensions);
9092
final EditText root = findViewById(R.id.root);
9193
final EditText offset = findViewById(R.id.offset);
94+
final CheckBox show_hidden_files = findViewById(R.id.show_hidden_files);
9295
Button apply = findViewById(R.id.apply);
9396
Button showDialog = findViewById(R.id.show_dialog);
9497
apply.setOnClickListener(new View.OnClickListener() {
@@ -141,6 +144,8 @@ public void onClick(View view) {
141144
properties.offset=new File(DialogConfigs.DEFAULT_DIR);
142145
}
143146

147+
properties.show_hidden_files = show_hidden_files.isChecked();
148+
144149
//Setting Alternative Directory, in case root is not accessible.This will be
145150
//used.
146151

sample/src/main/res/layout/activity_main.xml

+7
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,13 @@
134134
android:layout_marginTop="@dimen/activity_vertical_margin"
135135
android:hint="@string/hint_offset"
136136
android:id="@+id/offset" />
137+
138+
<androidx.appcompat.widget.AppCompatCheckBox
139+
android:layout_width="match_parent"
140+
android:layout_height="wrap_content"
141+
android:layout_marginTop="@dimen/activity_vertical_margin"
142+
android:id="@+id/show_hidden_files"
143+
android:text="@string/show_hidden_files"/>
137144
</androidx.appcompat.widget.LinearLayoutCompat>
138145
</androidx.core.widget.NestedScrollView>
139146

sample/src/main/res/values/strings.xml

+1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@
1818
<string name="label_directory">Directory</string>
1919
<string name="label_files_and_directories">Files and Directories</string>
2020
<string name="label_extensions">Filter Extensions(Seperate with Commas, Don\'t use dots)</string>
21+
<string name="show_hidden_files">Show hidden files</string>
2122
</resources>

0 commit comments

Comments
 (0)