آموزش File Picker در برنامه نویسی اندروید
سلام دوستان عزیز در این سری از آموزش برنامه نویسی اندروید به آموزش File Picker در برنامه نویسی اندروید می پردازیم File picker یا انتخاب کننده فایل همانطور که از اسمش معلوم است برای به دست آوردن مسیر فایل است همانند انتخاب گر برنامه تلگرام زمانی که می خواهید بک فایل را برای کسی ارسال کنید برای شما یک File Picker به نمایش در می آید. این آموزش از نوع متریال دیزاین است. بهتر است یک پیشنمایش از این File Chooser ببینید.
برای این کار ابتدا باید وارد build.gradle بخش Top level خط زیر را در بخش repositories اضافه کنیم
1 2 3 | maven { url "http://dl.bintray.com/lukaville/maven" } |
سپس وارد build.gradle بخش moudle شوید و خط زیر را به repositories اضافه کنید.
1 | compile 'com.nbsp:library:1.6' |
حال sync را بزنید تا پروژه همگان سازی شود (علت خطاهای گریدل را قبلتر بررسی کرده ایم سرچ کنید !)
حال در جایی که می خوایید File Picker نمایش داده شود کد زیر را قرار دهید.
1 2 3 4 5 6 7 | new MaterialFilePicker() .withActivity(this) .withRequestCode(1) .withFilter(Pattern.compile(".*\\.txt$")) .withFilterDirectories(true) // Set directories filterable (false by default) .withHiddenFiles(true) // Show hidden files and folders .start(); |
از نوع new برای ساخت یک File picker استفاده شده است و در پایین به بعضی از آنها می پردازیم.
withFilter برای قرار دادن فیلتر است به طور مثال فقط فایل txt یا فایلهای عکس رو نمایش دهد (باید پسوند را همانند مثال در آن قرار دهید) (فیلتر او نوع regex است )
withFilterDirectories : برای اینکه بتوانیم فیلتر را انجام دهیم باید مقدار آن را برابر با true قرار دهیم به صورت پیشفرض false است.
withHiddenFiles : برای اینکه فایل های hidden هم نمایش داده شود باید مقدار آن را برابر با Ture قرار دهیم.
و در آخر هم آن را start می کنیم.
یک راه دیگر هم برای نمایش آن وجود دارد همانند زیر
1 2 3 4 5 | Intent intent = new Intent(this, YourActivity.class); intent.putExtra(FilePickerActivity.ARG_FILE_FILTER, Pattern.compile(".*\\.txt$")); intent.putExtra(FilePickerActivity.ARG_DIRECTORIES_FILTER, true); intent.putExtra(FilePickerActivity.ARG_SHOW_HIDDEN, true); startActivityForResult(intent, 1); |
در اینجا از intent برای فرستادن مقدار استفاده شده است شبیه به کد بالا می ماند.
تا اینجا فقط به کاربر نمایش داده می شود حال برای اینکه بتوانیم مسیر فایلی که کاربر انتخاب کرده است را به دست بیاریم باید از void زیر استفاده کنیم.
1 2 3 4 5 6 7 | @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1 && resultCode == RESULT_OK) { String filePath = data.getStringExtra(FilePickerActivity.RESULT_FILE_PATH); } } |
در بالا مسیر فایل در متغیر filepath قرار می گیرد.البته اگر کاربر چیزی را انتخاب کند مسیر قرار خواهد گرفت در غیر اینصورت resultCode برابر با Result_fail خواهد بود و از سرط بیرون خواهد آمد.
این آموزش هم همانند آموزش های دیگر به پایان رسید.
موفق باشید.
با سلام ، چطور از این فایل میشه استفاده کرد؟ مثلا کاربر یک عکس انتهاب کند و ما اون رو در قسمتی از اپ ذخیره کنیم؟
سلام و درود
شما فقط می تونید مسیر فایل رو ذخیره کنید و بعد از آن استفاده کنید مثلا در یک imageview یک عکس را نمایش دهید یا یک متن را در textview نمایش دهید برای ذخیره سازی می تونید از sharedpreferences استفاده کنید.
موفق باشید.
مرسی
یعنی اگه درست متوجه شده باشم مثلا برای ست کردن عکس پروفایل کاربر بعد از اینکه کاربر فایل رو انتخاب کرد ما مسیر رو میگیریم و مثلا در sharedPreference میریزیم
بعد برای نمایش همون عکس میگیم عکس از این مسیر لود بشه
درسته ؟ 🙂
سلام بله درسته