وبلاگ - مطالب آموزشی

0
268
افزودن دراپ باکس به اپلیکیشن اندروید

افزودن دراپ باکس به اپلیکیشن اندروید

ذخیره سازی داکیومنت و فایل نقش بسزایی در دستگاه های محاسباتی دارد. ذخیره سازی به سبک سنتی به صورت لوکال انجام می شود، اما با روی کار آمدن سیستم های ابری مکان ذخیره سازی مستندات نیز تغییر یافته است. ذخیره سازی کلود نیز دارای مشکلات منحصر به فرد خود می باشد، اما با در نظر گرفتن ظرفیت نامحدود و هزینه کم آن می توان بسیاری از مشکلات را نادیده گرفت.

در این مطلب آموزشی نحوه ذخیره سازی فایل ها از یک اپلیکیشن اندروید در دراپ باکس با استفاده از SDK اصلی دراپ باکس برای نسخه های 6 و بالاتر از جاوا در اندروید شرح داده خواهد شد. مبنی بر توضیحات، این Core SDK یک کتابخانه جاواست که به نسخه 2 از API مبتنی بر HTTP دسترسی دارد. این SDK از نسخه های قدیمی تر Core API v1 نیز پشتیبانی می کند، اما این پشتیبانی در آینده حذف خواهد شد. کد نهایی این پروژه را می توانید از GitHub دانلود کرده و مورد استفاده قرار دهید.

برای متصل شدن به دراپ باکس باید یک اکانت دراپ باکس بسازید و API دراپ باکس را مورد استفاده قرار دهید. یک اپلیکیشن جدید در App Console بسازید.

blog_19353_1

پس از اینکه اپلیکیشن جدید ساخته شد به وضعیت توسعه در می آید، اپلیکیشن در این شرایط تنها قابل استفاده توسط کاربران تستی است و چنانچه شما Additional Users را فعال کنید، 100 کاربر پپشتیبانی می شوند. زمانی که کار توسعه و ساخت اپلیکیشن تکمیل شد می توانید وضعیت را به تولید تغییر دهید.

کنسول اپلیکیشن دربرگیرنده اطلاعات اپلیکیشن است و شما به App Key نیز برای پروژه اندروید نیاز خواهید داشت.

bog_19353_2

افزودن مجوزهای دسترسی

با استفاده از Login Activity یک پروژه در اندروید استودیو بسازید و در فایل AndroidManifest.xml کدهای زیر را برای مجوزهای اینترنت و ذخیره سازی بیفزایید. می توانید مجوزهای پیش فرض تولید شده در فایل که توسط LoginActivity تولید شده است را نیز پاک کنید.

افزودن وابستگی ها

در فایل build.gradle کدهای زیر را اضافه کنید:

نکته: وابستگی اول برای Core API دراپ باکس می باشد، استفاده از کتابخانه Picasso اجباری نیست، اما برای لود کردن تصاویر کاربردی می باشد.

افزودن اکتیویتی دراپ باکس

فایل AndroidManifest.xml را باز کنید و در قسمت <application></application> اکتیویتی AuthActivity را بیفزایید.

خطای فایل تکراری

در حین تست اپلیکیشن ممکن است با خطایی مبنی بر تداخل در زمان بیلد چندین فایل License.txt یا Notice.txt مواجه شوید، به منظور پیشگیری از این مشکل در فایل build.gradle در بخش {…}android این فایل ها را خارج کنید.

کلید اپلیکیشن

app key را به فایل strings.xml بیفزایید.

در این مرحله پروژه اندروید برای استفاده از API دراپ باکس پیکربندی شده است، حال باید یک اکتیویتی جدید را به پروژه بیفزایید، این کار با استفاده از آیتم منوی File->New->Activity->Basic Activity انجام می شود، نام آن را MainActivity.java بگذارید.

توضیحات پروژه

این اپلیکیشن نمونه به اکانت دراپ باکس کاربر وارد شده، اطلاعات جزئی را دریافت می کند و یک عکس را به فولدر دراپ باکس اپلیکیشن آپلود می کند. این پروژه دو اکتیویتی به نام های LoginActivity و MainActivity خواهد داشت.

ورود با استفاده از دراپ باکس

وظیفه LoginActivity بسیار ساده و روشن است، با کلیک بر روی دکمه این اکتیویتی عملیات ورود به سیستم را به اجرا در آورده و یک توکن دسترسی را برای اپلیکیشن دراپ باکس تولید می کند که در منابع رشته ها با نام APP_KEY شناخته می شود.

متد ()startOAuthentication یک اکتیویتی AuthActivity را که به فایل Manifest افزوده شده بود باز می کند. در AuthActivity کاربر باید اکانت دراپ باکس خود را تایید کند، پس از این کار کاربر به loginActivity ری دایرکت می شود.

متد ()StartOAuthentication هیچ توکن دسترسی را بر نمی گرداند، این متد تنها AuthActivity را باز می کند که برای احراز هویت کاربر استفاده می شود. هم اکنون که کاربر احراز هویت شد، به یک توکن دسترسی نیاز دارد.

AuthActivity

blog_19353_3

در LoginActivity کدهای تولیدشده خودکار به جز نام پکیج پروژه را با کدهای زیر جایگزین کنید:

برای لی اوت این اکتیویتی فایل activity_login.xml را به شکل زیر تغییر دهید:

کدهای زیر را برای sign in در متن دکمه به فایل strings.xml اضافه کنید:

متد ()onResume از LoginActivity با فراخوانی متد ()GetOAuth2Token توکن موردنظر را درخواست می کند. این توکن برای کاربرد آینده در داده های SharedPreferences ذخیره شده و سپس MainActivity باز می شود.

متد ()onResume پیش از آنکه اپلیکیشن برای اولین بار باز شود فراخوانی می شود، اما چرا پس از آن توکن را دریافت نمی کنید؟

دلیل این شرایط این است که قبل از ورود به سیستم کاربر هنوز احراز هویت نشده و توکنی تولید نشده است، در صورت احراز هویت موفقیت آمیز پس از AuthActivity، متد ()onResume یک بار دیگر فراخوانی شده و توکن موردنظر را تولید خواهد نمود.

کلاینت دراپ باکس هم اکنون وارد شده است

در MainAvtivity متغییرهای زیر را تعریف کنید:

در فایل لی اوت content_main.xml از MainActivity محتوا را با کدهای زیر جایگزین کنید:

اطلاعات اکانت

دریافت اطلاعات کاربر یا دسترسی به دراپ باکس از هر طریقی یک درخواست شبکه است و در اندروید این قبیل از درخواست ها به صورت ناهمگام ترتیب اثر داده می شوند. این درخواست های شبکه همگی به یک کلاینت دراپ باکس نیاز دارند.

یک DropboxClient.java ساخته و کد زیر را به آن اضافه کنید:

رشته ACCESS_TOKEN در متد ()getClinet همان توکنی است که در زمان وارد شدن کاربر دریافت شده است.

کار بعدی دریافت اطلاعات اکانت کاربر می باشد، کلاس UserAccountTask نمایش دهنده درخواست اطلاعات کاربر می باشد. سازنده این کلاس غیرهمزمان دارای یک پارامتر رابط از TaskDelegate است که برای برگرداندن اطلاعات اکانت به اکتیویتی که این وظیفه در آن اجرا شده، مورد استفاده قرار گرفته است.

فایل UserAccountTask.java را ساخته و کدهای زیر را به آن اضافه کنید:

متد getUserAccount مثالی از نحوه اجرای کلاس UserAccountTask در کلاس MainActivity می باشد.

متد زیر را که در ادامه مورد استفاده قرار خواهد گرفت، به کلاس MainActivity بیفزایید:

به منظور نمایش اطلاعات اکانت کاربر در رابط کاربری تابع زیر را به کلاس MainActivity اضافه کنید:

آپلود در دراپ باکس

وظایف آپلود با کمک InputStream صورت می پذیرند، بدین ترتیب که فایل مشخص شده با کمک Core SDK به یک InputStream تبدیل می شود و استریم به فولدر اپلیکیشن ها در دراپ باکس آپلود می شود.

فایل UploadTask.java را ساخته و کد زیر را به آن بیفزایید:

نکته: اندروید استودیو پیام هشداری مبنی بر تداخل ورودی ها نشان می دهد که لازم است با وارد کردن java.io.file برای متغییر file این مشکل را برطرف نمایید.

به منظور انجام یک آپلود اول از همه به یک فایل مانند عکس نیاز دارید، می توانید با شروع یک اکتیویتی دیگر تصویر را دریافت کنید.

متد زیر را به MainActivity بیفزایید:

در هنگام فراخوانی ()startActivityForResult نیاز به جایگذاری متد ()onActivityResult برای مدیریت نتایج در MainActivity دارید. زمانی که یک URI عکس معتبر دریافت شد، یک فایل ساخته و UploudTask را به اجرا در آورید.

متد زیر را به MainActivity بیفزایید:

در متد ()onActivityResult پارامتر(()URI_to_Path.getPath(getApplication(), data.getData وجود دارد. کلاس جاوای URI_to_Path یک کلاس کمک کننده برای تبدیل URI به مسیرهای مطلق می باشد و یک کلاس بزرگ است و در این مطلب آموزشی به آن پرداخته نمی شود، بنابراین یک کلاس URI_to_Path.java ساخته و این کد را به آن اضافه کنید و نام پکیج را هم مطابق با پروژه خود تغییر دهید.

بالاخره نوبت به متد ()onCreate می رسد، کد زیر را به MainActivity افزوده و هرچیزی که در حال حاضر در آن وجود دارد را پاک کنید:

هر بار با باز شده اپلیکیشن لازم است تا وجود توکن دسترسی را چک کنید، چنانچه توکن وجود داشته باشد، آن را از SharedPreferences بازیابی کنید و متدهای زیر را برای انجام این کار به MainActivity اضافه نمایید.

نتیجه گیری

در این مطلب مقدماتی از یکپارچه سازی دراپ باکس با نسخه 2 از API در اندروید را فرا گرفتید، در صورت تمایل به دریافت جزئیات بیشتر درباره این موضوع می توانید به مستندات دراپ باکس برای جاوا، منبع SDK و مثال ها نگاهی بیندازید.

 

منبع:

https://www.sitepoint.com

این نوشته را به گوگل توصیه کنید :

بسته های آموزشی جذاب!بیشتر