راستی قبل از اینکه ادامه این آموزش رو بخونی، میدونستی ما تو سایت ترولرن یه دوره صفر مطلق اندروید داریم که بصورت رایگان کل کاتلین رو آموزش دادیم و نحوه استفاده از اون تو اندروید رو بصورت کامل بررسی کردیم این دوره ویدیویی رو از دست ندید.
مثلا بخشی از کارهای موجود در اپلیکیشن ما به یک یا چند برنامه دیگر وابسته است که در صورت نصب نبودن برنامه موردنظر روی دستگاه اندرویدی کاربر، میتواند باعث ایجاد اشکال در برنامه ما شود. فرض کنید قصد توسعه و برنامه نویسی اپلیکیشنی را دارید که بخشی از امکانات آن با پرداخت درون برنامهای از طریق مارکتهای اندرویدی فعال میشود. در اینجا چنانچه مارکت موردنظر شما (مانند بازار، مایکت و…) روی دستگاه کاربر از قبل نصب و فعال نشده باشد، عملیات پرداخت ناتمام مانده و برنامه کرش خواهد کرد.
برای حل این مشکل کافیست چک کنیم که آیا PackageName برنامه مورد نظر ، در لیست اپلیکیشن های گوشی کاربر وجود دارد یا خیر. اگر وجود داشته باشد که کار مورد انتظار انجام میشود ولی اگر وجود نداشته باشد، برای مثال میتوانیم کاربر را به صفحه دانلود آن اپلیکیشن مورد نظر هدایت کنیم.
مثلا یک اپلیکیشن داریم که یک رقیب تجاری بسیار بزرگ دارد، میتوانیم بگوییم اگر میخاهید اپ ما روی گوشی شما نصب شود، باید آن اپلیکیشن خاص را از گوشی خود حذف کنید. برای مثال همه ما میدانیم که در زمینه حمل و نقل، دو شرکت بزرگ اسنپ و تپسی در رقابت شدید هستند. این دو شرکت برای اپلیکیشن رانندگان خود میتوانند این امکان را اضافه کنند تا برای مثال رانندهای که در اسنپ کار میکند، نتواند همزمان روی گوشی خود اپلیکیشن رانندگان تپسی را هم نصب کند و فقط بتواند در اسنپ مشغول به کار باشد.
من توی همین سایت یک دوره رایگان دارم به نام دوره صفر مطلق اندروید، که داخل اون یک پرژه باتری منییجر زدیم. داخل اون پروژه من از این قابلیت استفاده کردم و اونجا میتونی بصورت ویدیویی این قابلیت و همچنین کلی موارد دیگه رو یاد بگیری. اگرم خواستی کاملا تو برنامه نویسی اندروید حرفه ای بشی و وارد بازار کار بشی میتونی دوره پیشرفته ژنرال اندروید رو ببینی و یاد بگیری که چطور حرفهای کد بزنی!
با یک فانکشن و به سادگی میتوانیم این کار را انجام دهیم، در این مثال از جاوا استفاده کردیم:
private boolean installedOrNot(Context cnt, String packageName) { PackageManager pm = cnt.getPackageManager(); boolean appInstalled; try { pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); appInstalled = true; Toast.makeText(cnt, "برنامه قبلا نصب شده است", Toast.LENGTH_LONG).show(); } catch (PackageManager.NameNotFoundException e) { appInstalled = false; Toast.makeText(cnt, " برنامه قبلا نصب نشده است ", Toast.LENGTH_LONG).show(); } return appInstalled; }
و در این مثال کد بالا را با کاتلین نوشتیم:
private fun installedOrNot(cnt: Context, packageName: String): Boolean { val pm: PackageManager = cnt.getPackageManager() var appInstalled: Boolean try { pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES) appInstalled = true Toast.makeText(cnt, "برنامه قبلا نصب شده است", Toast.LENGTH_LONG).show() } catch (e: PackageManager.NameNotFoundException) { appInstalled = false Toast.makeText(cnt, " برنامه قبلا نصب نشده است ", Toast.LENGTH_LONG).show() } return appInstalled }
مطابق با کد فوق ابتدا یک متد از جنس boolean و با نام دلخواه installedOrNot درون اکتیویتی و بعد از متد onCreate تعریف کردهام. این متد دو پارامتر دارد که اولی کانتکست و دومی از جنس رشته تعریف شده.
درون این متد ابتدا یک شیء از کلاس PackageManager با نام دلخواه pm ساخته شده است. سپس یک متغیر از جنس boolean با نام appInstalled تعریف شده.
داخل بلاک try و با استفاده از متد getPackageInfo نام پکیج بررسی میشود. چنانچه پکیج و به عبارتی اپلیکیشن مدنظر قبلا نصب شده باشد، متغیر appInstalled مقدار true گرفته و کدهای بعد از آن اجرا میشود که من در اینجا یک پیغام Toast تعریف کردم.
برای بلاک catch یک Exception (استثناء) از نوع PackageManager.NameNotFoundException تعریف شده که از نامش پیداست مربوط به پیدا نشدن نام است (NameNotFound). یعنی هنگامی که نام پکیج یافت نشد این استثناء اجرا میشود که در اینصورت مقدار false برای متغیر appInstalled در نظر گرفته شده و مانند قسمت قبل یک پیغام برای کاربر ظاهر میشود که اعلام میکند برنامه مدنظر نصب نشده است.
در نهایت از آنجایی که تابع از جنس boolean بود لازم است appInstalled را return کنیم.
حالا میتوانیم برای استفاده از این متد، کد زیر را بزنیم:
installedOrNot(getApplicationContext(), "com.farsitel.bazaar");
امیدوارم مطالبی که در مورد بررسی نصب بودن یک برنامه در اندروید گفتم براتون مفید بوده باشه. از دیدن پیج اینستاگرام ترولرن غافل نشید، راستی یادتون باشه که همیشه بهترین جا برای یادگیری هر زبان برنامه نویسی، سایت خودش و خوندن داکیومنت های مرجع اون زبان هستش، بعد از خوندن این مقاله میتونید برای اطلاعات بیشتر به اینجا مراجعه کنید.
دوره آموزشی کاتلین پیشرفته میتواند مهارتهای شما را با بهرهگیری از ابزارها و فناوریهای مدرن…
مزیتهای کاتلین نسبت به سایر زبانهای برنامه نویسی اندروید این است که سایر زبانها، از…
بهینهسازی عملکرد اپلیکیشنهای اندروید یکی از مهمترین فاکتورهایی است که برای کاربران در دنیای امروز…
مصاحبهی استخدامی کاتلین یک فرصت برای ارزیابی مهارتها و تواناییهای یک برنامهنویس در توسعه اپلیکیشنهای…
مصاحبه استخدام زبان کاتلین یک فرصت برای ارزیابی مهارتها و تواناییهای یک برنامهنویس در توسعه…
مصاحبه استخدام کاتلین یک فرصت برای ارزیابی مهارتها و تواناییهای یک برنامهنویس در توسعه اپلیکیشنهای…