مقالات

بررسی نصب بودن یک برنامه در اندروید

تو این مقاله قصد دارم بهتون آموزش بدم که چطور بررسی نصب بودن یک برنامه در اندروید رو بررسی کنید. این کار رو خیلی ساده و با چند خط کد میتونیم انجام بدیم که در ادامه بهتون میگم چطور هستش.

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

 

چه زمانی به همچین چیزی نیاز پیدا میکنیم؟

مثلا بخشی از کارهای موجود در اپلیکیشن ما به یک یا چند برنامه دیگر وابسته است که در صورت نصب نبودن برنامه موردنظر روی دستگاه اندرویدی کاربر، می‌تواند باعث ایجاد اشکال در برنامه ما شود. فرض کنید قصد توسعه و برنامه نویسی اپلیکیشنی را دارید که بخشی از امکانات آن با پرداخت درون برنامه‌ای از طریق مارکت‌های اندرویدی فعال می‌شود. در اینجا چنانچه مارکت موردنظر شما (مانند بازار، مایکت و…) روی دستگاه کاربر از قبل نصب و فعال نشده باشد، عملیات پرداخت ناتمام مانده و برنامه کرش خواهد کرد.

برای حل این مشکل کافیست چک کنیم که آیا 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");

 

 

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

‫0/5 ‫(0 نظر)
محمد زارع

از سال 94 بصورت جدی وارد عرصه برنامه نویسی اندروید شدم، در شرکت‌ها و استارت‌آپ‌های زیادی مشغول به کار بوده و تجربه کسب کرده ام و در این سایت قصد دارم این تجربه را به اشتراک بگذارم

Recent Posts

چگونه دوره آموزشی کاتلین پیشرفته می‌تواند مهارت‌های شما را ارتقاء دهد؟

دوره آموزشی کاتلین پیشرفته می‌تواند مهارت‌های شما را با بهره‌گیری از ابزارها و فناوری‌های مدرن…

4 ماه ago

مزیت‌های کاتلین نسبت به سایر زبان‌های برنامه نویسی اندروید

مزیت‌های کاتلین نسبت به سایر زبان‌های برنامه نویسی اندروید این است که سایر زبان‌ها، از…

4 ماه ago

بهینه‌سازی عملکرد اپلیکیشن‌های اندروید: راهنمای جامع و کاربردی

بهینه‌سازی عملکرد اپلیکیشن‌های اندروید یکی از مهم‌ترین فاکتورهایی است که برای کاربران در دنیای امروز…

10 ماه ago

سوالات مصاحبه‌ی استخدامی کاتلین همراه با جواب(قسمت چهارم)

مصاحبه‌ی استخدامی کاتلین یک فرصت برای ارزیابی مهارت‌ها و توانایی‌های یک برنامه‌نویس در توسعه اپلیکیشن‌های…

10 ماه ago

سوالات مصاحبه استخدام زبان کاتلین همراه با جواب(قسمت سوم)

مصاحبه استخدام زبان کاتلین یک فرصت برای ارزیابی مهارت‌ها و توانایی‌های یک برنامه‌نویس در توسعه…

10 ماه ago

سوالات مصاحبه استخدام کاتلین همراه با جواب(قسمت دوم)

مصاحبه استخدام کاتلین یک فرصت برای ارزیابی مهارت‌ها و توانایی‌های یک برنامه‌نویس در توسعه اپلیکیشن‌های…

11 ماه ago