اندروید 13 چالش‌ها و فرصت‌ها

سلامتو این پست میخوام در مورد نسخه جدید سیستم عامل متن باز اندروید صحبت کنم. ویژگی های جدیدی که در اندروید 13 اضافه شده و چالش هایی که میتونه برای برنامه نویسای اندروید به وجود بیاره رو بررسی میکنم.اول بریم سراغ شعار رسمی اندروید 13: Make all your devices more personal, private and connected than ever before.همونطور که از شعار مشخصه عمده تمرکز گوگل مثل نسخه های قبلی اندروید روی حریم خصوصی کاربران و همچنین سهولت استفاده کاربران از چند دستگاه اندرویدی به صورت روزمره هستش.از اونجایی که این نوشته قراره یک نوشته با دیدگاه فنی باشه از اینجا به بعد بیشتر روی موارد فنی اضافه شده به اندروید و راهکار وفق دادن(adapt) اپلیکیشن های در حال توسعه‌مون با اندروید 13 می‌پردازیم.تعدادی از تغییرات عمده ای که گوگل برای اندروید 13 عنوان کرده عبارتند از:یک photo picker جدید اضافه شدهنیازه برای نمایش notification به کاربر run time permission بگیریم :|اضافه شدن قابلیت themed app icon (با انتخاب رنگ آیکون های برنامه ها داخل لانچر استاندارد اندریود عوض میشن)انتخاب زبان برنامه قبل از وارد شدن بهش، در نسخه های قبلی اندروید خود سیستم عامل بر اساس زبان دستگاه string resource مناسب رو انتخاب میکردافزایش سرعت خط فاصله ها بدون تاثیر در performanceاضافه شدن tile setting api جدید :) اضافه شدن preview به clipboard مثل screen shot که قبلا اضافه شده بوداضافه شدن پشتیبانی از Bluetooth Low Energy (LE) که بجای Bluetooth کلاسیک استفاده میشه پشتیبانی از MIDI 2.0 standardبیشتر مطالب این قسمت از اینجا برداشته شدن.خب حالا میریم سراغ عمده چالش های فنی که بهش بر میخوریم و راه حلی موجه شدن باهاش:1. مهمترین و احتمالا اذیت کننده ترین تغییر این نسخه اضافه شدن notification run time permission هست که طبیعتا برای وفق دادن اپلیکیشن باهاش باید از کاربر این دسترسی رو بگیریم، برای اینکار میتونیم به این شکل عمل کنیم:دسترسی رو به manifest اضافه میکنیم:<manifest ...> <uses-permission android:name=&quotandroid.permission.POST_NOTIFICATIONS&quot/> <application ...> ... </application> </manifest>اینطوری خود دسترسی رو از کاربر میگیریم:requestPermissions(requireContext(), new String[] { Manifest.permission.POST_NOTIFICATIONS }, REQUEST_CODE);2. دومین تغییر مهم اینه که کاربر های میتونن foreground service ها رو که یه dismissible notification نمایش میدن رو با بستن notification توقف کنن! و طبیعتا راه حلی برای جلوگیری از این مورد وجود نداره.3. سومین تغییر مهم و به نظرم خیلی خوب اینه که دیگه اپلیکیشن‌ها intent هایی که با <intent-filter>شون match نمیشه رو دریافت نمیکنن (این مورد برا خودش باگ امنیتی بزرگی بود که برطرف شده در اندروید 13).4. چهارمین تغییر مهم اینه که در راستای افزوده شدن permission های متعدد و اذیت شدن کاربر، از این به بعد دیگه دسترسی read storage نداریم و برای هر کدوم از انواع فایل ها باید دسترسی جداگانه گرفته بشه (واقعا دوستان دارن چیکار میکنن با تجریه کاربری کاربران اندروید).5. پنجمین تغییر اینه که یه photo picker خوشگل اضافه شده و از این به بعد باید از این photo picker برای انتخاب media استفاده بشه.6. ششمین تغییر اینه که برای اپلیکیشن هایی مثل یادآور ها که یک alarm میسازن یک install time permission اضافه شده. 7. هفتمین تغییر مهم که من نمیدونم چرا تا حالا نبوده و دقیقا مشخص نبود چرا از اول اضافه نشده قابلیت revoke کردن permission هاست.8. هشتمین تغییر مهم اضافه شده اینه که theme انتخابی کاربر در WebView ها هم اعمال میشهمطالب عنوان شده در بالا از اینجا برداشته شدن. موارد دیگری هم هستن که میتونین داخل لینک قرار داده شده ببینید.پی نوشت:‌ این نوشته به مرور زمان تکمیل و تکمیل تر میشه.