├── app ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── font │ │ │ ├── aller_bold.ttf │ │ │ ├── aller_italic.ttf │ │ │ ├── aller_regular.ttf │ │ │ ├── aller_bolditalic.ttf │ │ │ └── aller.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── styles.xml │ │ │ └── strings.xml │ │ ├── values-ko │ │ │ └── strings.xml │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ ├── values-ja │ │ │ └── strings.xml │ │ ├── values-ar │ │ │ └── strings.xml │ │ ├── values-tr │ │ │ └── strings.xml │ │ ├── values-ur │ │ │ └── strings.xml │ │ ├── values-in │ │ │ └── strings.xml │ │ ├── values-sv │ │ │ └── strings.xml │ │ ├── values-ca │ │ │ └── strings.xml │ │ ├── values-cs │ │ │ └── strings.xml │ │ ├── values-hi │ │ │ └── strings.xml │ │ ├── values-nl │ │ │ └── strings.xml │ │ ├── values-uk │ │ │ └── strings.xml │ │ ├── values-bn │ │ │ └── strings.xml │ │ ├── values-it │ │ │ └── strings.xml │ │ ├── values-es │ │ │ └── strings.xml │ │ ├── values-pl │ │ │ └── strings.xml │ │ ├── values-de │ │ │ └── strings.xml │ │ ├── values-pt │ │ │ └── strings.xml │ │ ├── values-ro │ │ │ └── strings.xml │ │ ├── values-ru │ │ │ └── strings.xml │ │ ├── values-fr │ │ │ └── strings.xml │ │ ├── values-hu │ │ │ └── strings.xml │ │ └── layout │ │ │ └── activity_main.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── rmartinper │ │ └── filepickerexample │ │ └── MainActivity.java ├── build.gradle └── proguard-rules.pro ├── filepicker ├── .gitignore ├── consumer-rules.pro ├── src │ └── main │ │ ├── res │ │ ├── drawable │ │ │ ├── bottom_shadow.9.png │ │ │ ├── file_list_divider.xml │ │ │ ├── ic_file.xml │ │ │ ├── ic_folder.xml │ │ │ ├── ic_folder_opened.xml │ │ │ └── ic_file_view.xml │ │ ├── values │ │ │ ├── dimens.xml │ │ │ ├── colors.xml │ │ │ └── strings.xml │ │ ├── anim │ │ │ ├── marked_item_animation.xml │ │ │ └── unmarked_item_animation.xml │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ ├── values-ko │ │ │ └── strings.xml │ │ ├── values-ja │ │ │ └── strings.xml │ │ ├── values-tr │ │ │ └── strings.xml │ │ ├── values-ar │ │ │ └── strings.xml │ │ ├── values-sv │ │ │ └── strings.xml │ │ ├── values-in │ │ │ └── strings.xml │ │ ├── values-cs │ │ │ └── strings.xml │ │ ├── values-hi │ │ │ └── strings.xml │ │ ├── values-hu │ │ │ └── strings.xml │ │ ├── values-ca │ │ │ └── strings.xml │ │ ├── values-ro │ │ │ └── strings.xml │ │ ├── values-es │ │ │ └── strings.xml │ │ ├── values-pl │ │ │ └── strings.xml │ │ ├── values-pt │ │ │ └── strings.xml │ │ ├── values-ru │ │ │ └── strings.xml │ │ ├── values-bn │ │ │ └── strings.xml │ │ ├── values-fr │ │ │ └── strings.xml │ │ ├── values-it │ │ │ └── strings.xml │ │ ├── values-nl │ │ │ └── strings.xml │ │ ├── values-uk │ │ │ └── strings.xml │ │ ├── values-ur │ │ │ └── strings.xml │ │ ├── values-de │ │ │ └── strings.xml │ │ ├── layout │ │ │ ├── dialog_file_list.xml │ │ │ ├── dialog_main.xml │ │ │ ├── dialog_footer.xml │ │ │ ├── dialog_file_list_item.xml │ │ │ └── dialog_header.xml │ │ ├── layout-v23 │ │ │ └── dialog_file_list.xml │ │ └── layout-v21 │ │ │ └── dialog_file_list_item.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── rmartinper │ │ └── filepicker │ │ ├── widget │ │ ├── OnCheckedChangeListener.java │ │ └── MaterialCheckbox.java │ │ ├── controller │ │ ├── NotifyItemChecked.java │ │ ├── DialogSelectionListener.java │ │ └── adapters │ │ │ └── FileListAdapter.java │ │ ├── model │ │ ├── MarkedItemList.java │ │ ├── DialogConfigs.java │ │ ├── FileListItem.java │ │ └── DialogProperties.java │ │ ├── utils │ │ ├── ExtensionFilter.java │ │ └── Utility.java │ │ └── view │ │ └── FilePickerDialog.java ├── proguard-rules.pro ├── build.gradle └── publish.gradle ├── .idea ├── .name ├── vcs.xml ├── misc.xml ├── runConfigurations.xml ├── sonarIssues.xml ├── gradle.xml ├── jarRepositories.xml └── codeStyles │ └── Project.xml ├── settings.gradle ├── screenshots ├── select_file_1.png ├── select_file_2.png ├── select_file_3.png ├── select_file_4.png ├── select_folder_1.png ├── select_folder_2.png ├── select_folder_3.png └── select_folder_4.png ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── gradle.properties ├── gradlew.bat ├── gradlew ├── README.md └── LICENSE /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /filepicker/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | File Picker Example -------------------------------------------------------------------------------- /filepicker/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':filepicker' 2 | include ':app' 3 | rootProject.name = "File Picker Example" -------------------------------------------------------------------------------- /screenshots/select_file_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/screenshots/select_file_1.png -------------------------------------------------------------------------------- /screenshots/select_file_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/screenshots/select_file_2.png -------------------------------------------------------------------------------- /screenshots/select_file_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/screenshots/select_file_3.png -------------------------------------------------------------------------------- /screenshots/select_file_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/screenshots/select_file_4.png -------------------------------------------------------------------------------- /screenshots/select_folder_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/screenshots/select_folder_1.png -------------------------------------------------------------------------------- /screenshots/select_folder_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/screenshots/select_folder_2.png -------------------------------------------------------------------------------- /screenshots/select_folder_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/screenshots/select_folder_3.png -------------------------------------------------------------------------------- /screenshots/select_folder_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/screenshots/select_folder_4.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/font/aller_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/font/aller_bold.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/aller_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/font/aller_italic.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/aller_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/font/aller_regular.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/aller_bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/font/aller_bolditalic.ttf -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /filepicker/src/main/res/drawable/bottom_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/filepicker/src/main/res/drawable/bottom_shadow.9.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RMartinPer/File-Picker/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4dp 4 | 16dp 5 | 32dp 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 24 12:28:03 CEST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /filepicker/src/main/res/anim/marked_item_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /filepicker/src/main/res/anim/unmarked_item_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /filepicker/src/main/res/drawable/file_list_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /filepicker/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #2196F3 4 | #1976D2 5 | #64B5F6 6 | #536DFE 7 | -------------------------------------------------------------------------------- /filepicker/src/main/java/com/rmartinper/filepicker/widget/OnCheckedChangeListener.java: -------------------------------------------------------------------------------- 1 | package com.rmartinper.filepicker.widget; 2 | 3 | /** 4 | *

5 | * Created by Raul Martin on 02-07-2020. 6 | *

7 | */ 8 | public interface OnCheckedChangeListener { 9 | void onCheckedChanged(MaterialCheckbox checkbox, boolean isChecked); 10 | } 11 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 取消 4 | 选择 5 | 上级目录 6 | 修改过的: %s 7 | 该目录无法访问 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 取消 4 | 選擇 5 | 上級目錄 6 | 修改過的: %s 7 | 該目錄無法訪問 8 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 취소 4 | 선택 5 | 부모 디렉토리 6 | 수정: %s 7 | 디렉터리액세스할 수 없습니다 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | キャンセル 4 | 選択する 5 | 親ディレクトリ 6 | 変わった: %s 7 | ディレクトリにアクセスできません 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | İptal 4 | Seçmek 5 | Veli Dizini 6 | Değişti: %s 7 | Dizin erişilemiyor 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | إلغاء 4 | اختار 5 | المجلد الأصل 6 | المحورة: %s 7 | لا يمكن الوصول إلى الدليل 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Avbryt 4 | Välja 5 | Överordnad Katalog 6 | Ändrad: %s 7 | Katalogen kan inte nås 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Batal 4 | Pilih 5 | Direktori Induk 6 | Diubah: %s 7 | Direktori tidak dapat diakses 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Zrušit 4 | Vybrat 5 | Rodičovský Adresář 6 | Upraveno: %s 7 | Do adresáře nelze přistupovat 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | रद्द करें 4 | चुनना 5 | जनक निर्देशिका 6 | संशोधित: %s 7 | निर्देशिका तक पहुँचा नहीं जा सकता 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Mégse 4 | Kijelöl 5 | Szülő Könyvtára 6 | Módosítva: %s 7 | Nem lehet elérni a könyvtárat 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cancel·la 4 | Selecciona 5 | Directori Pare 6 | Modificat: %s 7 | El directori no pot ser accedit 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-ro/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Anulați 4 | Selectați 5 | Directorul Părinte 6 | Modificat: %s 7 | Directorul nu poate fi accesat 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cancelar 4 | Seleccionar 5 | Directorio Padre 6 | Modificado: %s 7 | No se puede acceder al directorio 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Anuluj 4 | Wybierz 5 | Katalog Nadrzędny 6 | Zmienione: %s 7 | Nie można uzyskać dostępu do katalogu 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cancelar 4 | Selecionar 5 | Diretório Pai 6 | Modificado: %s 7 | O diretório não pode ser acessado 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Отмена 4 | Выбрать 5 | Родительский Каталог 6 | Изменено: %s 7 | Невозможно получить доступ к каталогу 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-bn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | বাতিল করতে 4 | নির্বাচন করুন 5 | পেরেন্ট ডাইরেক্টরি 6 | পরিবর্তিত: %s 7 | ডিরেক্টরি অ্যাক্সেস করা যাবে না 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Annuler 4 | Sélectionner 5 | Répertoire Parent 6 | Modifié: %s 7 | Le répertoire ne peut pas être consulté 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Annulla 4 | Selezionare 5 | Directory Padre 6 | Modificato: %s 7 | Non è possibile accedere alla directory 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Annuleren 4 | Selecteren 5 | Bovenliggende Directory 6 | Gewijzigd: %s 7 | Geen toegang tot de directory 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Скасувати 4 | Вибирати 5 | Батьківський Каталог 6 | Змінено: %s 7 | Не вдалося отримати доступ до каталогу 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-ur/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | منسوخ کریں 4 | منتخب کریں 5 | والدین کی ڈائرکٹری 6 | ترمیم شدہ: %s 7 | ڈائریکٹری تک رسائی نہیں ہوسکتی ہے 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Abbrechen 4 | Auswählen 5 | Überverzeichnis 6 | Geändert: %s 7 | Das Verzeichnis kann nicht zugegriffen werden 8 | -------------------------------------------------------------------------------- /filepicker/src/main/java/com/rmartinper/filepicker/controller/NotifyItemChecked.java: -------------------------------------------------------------------------------- 1 | package com.rmartinper.filepicker.controller; 2 | 3 | /*

4 | * Created by Raul Martin on 02-07-2020. 5 | *

6 | */ 7 | 8 | /** 9 | * Interface definition for a callback to be invoked 10 | * when a checkbox is checked. 11 | */ 12 | public interface NotifyItemChecked { 13 | 14 | /** 15 | * Called when a checkbox is checked. 16 | */ 17 | void notifyCheckBoxIsClicked(); 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 파일 피커 앱 4 | 허가 된 권한 5 | 무단 권한 6 | 더미 텍스트 7 | 파일 선택 8 | 폴더 선택 9 | 파일을 선택 10 | 폴더를 선택 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 文件选择器的应用 4 | 授予权限 5 | 拒绝权限 6 | 虚构文字 7 | 选择文件 8 | 选择文件夹 9 | 选择一个文件 10 | 选择一个文件夹 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 文件選擇器的應用 4 | 授予權限 5 | 拒絕權限 6 | 虛構文字 7 | 選擇文件 8 | 選擇文件夾 9 | 選擇一個文件 10 | 選擇一個文件夾 11 | -------------------------------------------------------------------------------- /filepicker/src/main/res/layout/dialog_file_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ファイルピッカーアプリ 4 | 許可が付与されました 5 | アクセス許可が拒否されました 6 | ダミーテキスト 7 | ファイルを選択 8 | フォルダーを選択 9 | ファイルを選択する 10 | フォルダーを選択する 11 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #536DFE 6 | #FFFFFF 7 | #FFFFFF 8 | #FFFFFF 9 | #9E9E9E 10 | @color/colorPrimary 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | تطبيق منتقي الملفات 4 | تم منح الإذن 5 | تم رفض الإذن 6 | نص وهمي 7 | أخذ الملف 8 | أخذ مجلد 9 | خذ ملفًا 10 | خذ مجلدًا 11 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dosya Seçici App 4 | İzin verildi 5 | İzin reddedildi 6 | Kukla Metin 7 | Dosya Seç 8 | Klasör Seç 9 | Dosya seçin 10 | Klasör seçme 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-ur/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | فائل چننے والا ایپ 4 | اجازت دی گئی 5 | اجازت نہیں دی گئی 6 | ڈمی متن 7 | مسل چنیں 8 | پوشہ چنیں 9 | ایک مسل چنیں 10 | ایک پوشہ چنیں 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Aplikasi Pemilih File 4 | Izin diberikan 5 | Izin ditolak 6 | Teks Fiktif 7 | Pilih File 8 | Pilih Folder 9 | Pilih file 10 | Pilih folder 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Filväljaren App 4 | Tillstånd beviljat 5 | Tillåtelse nekad 6 | Fiktiv Text 7 | Välj Fil 8 | Välj Mapp 9 | Välj en fil 10 | Välj en mapp 11 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | File Picker App 4 | Permission granted 5 | Permission denied 6 | Dummy Text 7 | Pick File 8 | Pick Folder 9 | Pick a file 10 | Pick a folder 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | App Picker de Fitxers 4 | Permís atorgat 5 | Permís denegat 6 | Text Fictici 7 | Triar Arxiu 8 | Triar Carpeta 9 | Tria un arxiu 10 | Tria una carpeta 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Výběr Souborů App 4 | Povolení uděleno 5 | Povolení odepřeno 6 | Fiktivní Text 7 | Vybrat Soubor 8 | Vybrat Složku 9 | Vyberte soubor 10 | Vyberte složku 11 | -------------------------------------------------------------------------------- /filepicker/src/main/res/layout-v23/dialog_file_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | फ़ाइल पिकर ऐप 4 | अनुमति प्रदान की गई 5 | अनुमति नहीं मिली 6 | अभ्यास पाठ 7 | फ़ाइल का चयन 8 | फ़ोल्डर का चयन 9 | एक फ़ाइल चुनें 10 | एक फ़ोल्डर चुनें 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | App Bestandskiezer 4 | Toestemming verleend 5 | Toestemming geweigerd 6 | Fictieve Tekst 7 | Kies Bestand 8 | Kies Map 9 | Kies een bestand 10 | Kies een map 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Файл Picker Додатки 4 | Дозвіл наданий 5 | Дозвіл відмовлено 6 | Фіктивний Текст 7 | Вибирати Файл 8 | Вибирати Папку 9 | Виберіть файл 10 | Виберіть папку 11 | -------------------------------------------------------------------------------- /filepicker/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cancel 4 | Select 5 | /sdcard 6 | Parent Directory 7 | Modified: %s 8 | The directory cannot be accessed 9 | ... 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-bn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ফাইল পিকার অ্যাপ্লিকেশন 4 | অনুমতি মঞ্জুর 5 | অনুমতি অস্বীকৃত 6 | ডামি পাঠ্য 7 | ফাইল বাছুন 8 | ফোল্ডার বাছুন 9 | একটি ফাইল বাছাই করুন 10 | একটি ফোল্ডার বাছাই করুন 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | App di Selettore File 4 | Permesso accordato 5 | Permesso negato 6 | Testo Fittizio 7 | Scegli File 8 | Scegli Cartella 9 | Scegli un file 10 | Scegli una cartella 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | App Selector de Archivos 4 | Permiso concedido 5 | Permiso denegado 6 | Texto Ficticio 7 | Elegir Archivo 8 | Elegir Carpeta 9 | Elige un archivo 10 | Elige una carpeta 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | App Selektora Plików 4 | Zezwolenie udzielone 5 | Odmowa zezwolenia 6 | Atrapa Tekstu 7 | Wybierz Plik 8 | Wybierz Folder 9 | Wybieranie pliku 10 | Wybieranie folderu 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dateiauswahl App 4 | Erlaubnis erteilt 5 | Erlaubnis verweigert 6 | Fiktiver Text 7 | Datei Wählen 8 | Ordner Wählen 9 | Wählen Sie einen Datei 10 | Wählen Sie einen Ordner 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Arquivo Selector App 4 | Permissão concedida 5 | Permissão negada 6 | Texto Fictício 7 | Escolher Arquivo 8 | Escolher Pasta 9 | Escolha um arquivo 10 | Escolha uma pasta 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-ro/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Aplicație Selector Fișier 4 | Permisiune acordată 5 | Permisiune refuzată 6 | Text Fictiv 7 | Alegere Fișier 8 | Alegere Folder 9 | Alegeți un fișier 10 | Alegeți un folder 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Файл Picker Приложения 4 | Разрешение предоставлено 5 | Разрешение отказано 6 | Фиктивный Текст 7 | Выбирать Файл 8 | Выбирать Папку 9 | Выберите файл 10 | Выберите папку 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Picker Fichier App 4 | Permission accordée 5 | Permission refusée 6 | Texte Factice 7 | Choisir Fichier 8 | Choisir Dossier 9 | Choisissez un fichier 10 | Choisissez un dossier 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fájlválasztó Alkalmazás 4 | Engedély megadva 5 | Engedély megtagadva 6 | Kitalált Szöveg 7 | Válassz Fájlt 8 | Válassz Mappát 9 | Válasszon egy fájlt 10 | Válasszon egy mappát 11 | -------------------------------------------------------------------------------- /filepicker/src/main/res/drawable/ic_file.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /filepicker/src/main/java/com/rmartinper/filepicker/controller/DialogSelectionListener.java: -------------------------------------------------------------------------------- 1 | package com.rmartinper.filepicker.controller; 2 | 3 | /*

4 | * Created by Raul Martin on 02-07-2020. 5 | *

6 | */ 7 | 8 | /** 9 | * Interface definition for a callback to be invoked 10 | * when dialog selects files. 11 | */ 12 | public interface DialogSelectionListener { 13 | 14 | /** 15 | * The method is called when files or directories are selected. 16 | * 17 | * @param files The array of String containing selected file paths. 18 | */ 19 | void onSelectedFilePaths(String[] files); 20 | } 21 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 30 5 | buildToolsVersion "30.0.1" 6 | defaultConfig { 7 | applicationId "com.rmartinper.filepickerexample" 8 | minSdkVersion 15 9 | targetSdkVersion 30 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | implementation project(":filepicker") 23 | implementation 'androidx.appcompat:appcompat:1.3.0-alpha01' 24 | } -------------------------------------------------------------------------------- /.idea/sonarIssues.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/font/aller.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 15 | 16 | 17 | 21 | 22 | 23 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /filepicker/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /filepicker/src/main/res/drawable/ic_folder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /filepicker/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply from: file('publish.gradle') 3 | 4 | ext { 5 | publishedGroupId = 'com.rmartinper' 6 | orgName = 'rmartinper' 7 | artifact = 'filepicker' 8 | 9 | libraryName = 'File Picker' 10 | libraryDescription = 'Android Library to pick Files from Device Storage.' 11 | libraryVersion = '1.0' 12 | } 13 | 14 | android { 15 | compileSdkVersion 30 16 | buildToolsVersion '30.0.1' 17 | defaultConfig { 18 | minSdkVersion 15 19 | targetSdkVersion 30 20 | versionCode 1 21 | versionName '1.0' 22 | } 23 | buildTypes { 24 | release { 25 | minifyEnabled false 26 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 27 | } 28 | } 29 | lintOptions { 30 | abortOnError false 31 | } 32 | } 33 | 34 | dependencies { 35 | implementation 'androidx.appcompat:appcompat:1.3.0-alpha01' 36 | } -------------------------------------------------------------------------------- /filepicker/src/main/res/layout/dialog_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | 22 | 23 | 26 | -------------------------------------------------------------------------------- /filepicker/src/main/res/drawable/ic_folder_opened.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx2048m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app"s APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /filepicker/src/main/res/drawable/ic_file_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 8 | -------------------------------------------------------------------------------- /filepicker/src/main/res/layout/dialog_footer.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 20 | 21 | 26 | 27 |