اندروید 10 (سطح API 29) تعدادی ویژگی و تغییرات رفتاری را برای محافظت بهتر از حریم خصوصی کاربران معرفی می کند. این تغییرات شفافیت و کنترلی را که کاربران بر روی داده های خود و قابلیت هایی که به برنامه ها می دهند، گسترش می دهد. این ویژگیها ممکن است به این معنی باشد که رفتارها یا دادههای خاصی که برنامه شما به آن وابسته است ممکن است در مقایسه با نسخههای قدیمیتر پلتفرم رفتار متفاوتی داشته باشد. اگر برنامه شما از بهترین شیوه های فعلی برای مدیریت داده های کاربر پیروی کند، تأثیرات روی برنامه شما باید حداقل باشد.
این صفحه خلاصه ای از هر تغییر را فهرست می کند.
تغییرات برتر
این بخش شامل تغییرات کلیدی اندروید 10 مربوط به حریم خصوصی است.
دسترسی به حافظه خارجی به فایلها و رسانههای برنامه
بهطور پیشفرض، به برنامههایی که Android 10 و بالاتر را هدف قرار میدهند ، به فضای ذخیرهسازی خارجی یا فضای ذخیرهسازی محدوده دسترسی دارند. چنین برنامههایی میتوانند انواع فایلهای زیر را در یک دستگاه ذخیرهسازی خارجی بدون نیاز به درخواست مجوزهای کاربر مرتبط با فضای ذخیرهسازی ببینند:
- فایلهای موجود در دایرکتوری مخصوص برنامه، با استفاده از
getExternalFilesDir()
قابل دسترسی هستند. - عکسها، ویدیوها و کلیپهای صوتی که برنامه از فروشگاه رسانه ایجاد کرده است.
برای کسب اطلاعات بیشتر در مورد فضای ذخیرهسازی با دامنه، و همچنین نحوه اشتراکگذاری، دسترسی و اصلاح فایلهایی که در دستگاههای ذخیرهسازی خارجی ذخیره میشوند، به راهنمای نحوه مدیریت فایلها در حافظه خارجی و دسترسی و اصلاح فایلهای رسانه مراجعه کنید.
دسترسی به مکان دستگاه در پسزمینه نیاز به مجوز دارد
برای پشتیبانی از کنترل اضافی که کاربران بر دسترسی برنامه به اطلاعات مکان دارند، Android 10 مجوز ACCESS_BACKGROUND_LOCATION
را معرفی می کند.
برخلاف مجوزهای ACCESS_FINE_LOCATION
و ACCESS_COARSE_LOCATION
، مجوز ACCESS_BACKGROUND_LOCATION
تنها زمانی که برنامه در پسزمینه اجرا میشود، بر دسترسی برنامه به مکان تأثیر میگذارد. برنامهای در نظر گرفته میشود که به موقعیت مکانی در پسزمینه دسترسی دارد، مگر اینکه یکی از شرایط زیر برآورده شود:
- یک فعالیت متعلق به برنامه قابل مشاهده است.
این برنامه یک سرویس پیش زمینه را اجرا می کند که نوع
location
سرویس پیش زمینه را اعلام کرده است.برای اعلام نوع سرویس پیش زمینه برای یک سرویس در برنامه خود،
targetSdkVersion
یاcompileSdkVersion
برنامه خود را روی29
یا بالاتر تنظیم کنید. درباره اینکه چگونه سرویسهای پیشزمینه میتوانند فعالیتهای آغاز شده توسط کاربر را که نیاز به دسترسی به مکان دارند، ادامه دهند، بیشتر بیاموزید.
اگر برنامه شما geofences ایجاد و نظارت می کند و Android 10 (سطح API 29) یا بالاتر را هدف قرار می دهد، باید مجوز ACCESS_BACKGROUND_LOCATION
اعلام کنید.
هنگام هدف قرار دادن Android 9 یا پایینتر، دسترسی بهطور خودکار اعطا میشود
اگر برنامه شما روی Android 10 یا بالاتر اجرا میشود اما اندروید 9 (سطح API 28) یا پایینتر را هدف قرار میدهد، پلتفرم رفتار زیر را اعمال میکند:
- اگر برنامه شما عنصر
<uses-permission>
را برایACCESS_FINE_LOCATION
یاACCESS_COARSE_LOCATION
اعلام کند، سیستم به طور خودکار یک عنصر<uses-permission>
را برایACCESS_BACKGROUND_LOCATION
در حین نصب اضافه میکند. - اگر برنامه شما
ACCESS_FINE_LOCATION
یاACCESS_COARSE_LOCATION
درخواست کند، سیستم به طور خودکارACCESS_BACKGROUND_LOCATION
به درخواست اضافه میکند.
هنگامی که دستگاه به Android 10 ارتقا داده می شود، دسترسی داشته باشید
اگر کاربری به برنامه شما اجازه دسترسی به مکان دستگاه - یا ACCESS_COARSE_LOCATION
یا ACCESS_FINE_LOCATION
- بدهد، سپس دستگاه خود را از Android 9 به Android 10 ارتقا دهد، سیستم به طور خودکار مجموعه مجوزهای مبتنی بر مکان را که به برنامه شما اعطا شده است، بهروزرسانی میکند. مجموعه مجوزهایی که برنامه شما پس از ارتقا دریافت می کند به نسخه SDK هدف و مجوزهای تعریف شده آن بستگی دارد، همانطور که در جدول زیر نشان داده شده است:
جدول 1. تغییرات در وضعیت مجوز مکان پس از ارتقای دستگاه به Android 10
نسخه پلتفرم هدف | درشت یا ریز مجوز داده شده است؟ | مجوز پس زمینه در مانیفست تعریف شده است؟ | وضعیت مجوز پیش فرض به روز شد |
---|---|---|---|
اندروید 10 | بله | بله | دسترسی به پیش زمینه و پس زمینه |
اندروید 10 | بله | خیر | فقط دسترسی به پیش زمینه |
اندروید 10 | خیر | (توسط سیستم نادیده گرفته شد) | بدون دسترسی |
اندروید 9 یا پایین تر | بله | به صورت خودکار توسط سیستم در زمان ارتقاء دستگاه اضافه می شود | دسترسی به پیش زمینه و پس زمینه |
اندروید 9 یا پایین تر | خیر | (توسط سیستم نادیده گرفته شد) | بدون دسترسی |
توجه داشته باشید که کاربر میتواند این سطح دسترسی را حتی پس از بهروزرسانی خودکار دسترسی برنامه شما به مکان دستگاه توسط سیستم تغییر دهد. به عنوان مثال، کاربر ممکن است دسترسی برنامه شما را فقط به پیش زمینه کاهش دهد یا دسترسی را به طور کامل لغو کند. قبل از تلاش برای دسترسی به موقعیت مکانی دستگاه، به ویژه در یک سرویس پیش زمینه، برنامه شما باید بررسی کند که آیا کاربر همچنان به برنامه شما اجازه می دهد این اطلاعات مکان را دریافت کند یا خیر.
هنگام بهروزرسانی سطح API هدف در دستگاههای Android 10، دسترسی لغو شد
موردی را در نظر بگیرید که برنامه شما قبلاً روی دستگاهی نصب شده است که Android 10 را اجرا می کند. اگر در این شرایط برنامه خود را برای هدف قرار دادن Android 10 به روز کنید، دستگاه مجوز ACCESS_BACKGROUND_LOCATION
را لغو می کند.
برای اطلاعات بیشتر در مورد نحوه بازیابی موقعیت مکانی دستگاه در حالی که برنامه شما در پسزمینه است، به راهنمای دریافت بهروزرسانیهای مکان دورهای مراجعه کنید.
محدودیت در شروع فعالیت ها از پس زمینه
با شروع اندروید 10، این سیستم محدودیت هایی را برای شروع فعالیت ها از پس زمینه اعمال می کند. این تغییر رفتار به کاهش وقفهها برای کاربر کمک میکند و کاربر را کنترل بیشتری بر آنچه روی صفحه نمایش نشان داده میشود، حفظ میکند. تا زمانی که برنامه شما فعالیت های خود را در نتیجه مستقیم تعامل کاربر شروع می کند، برنامه شما به احتمال زیاد تحت تأثیر این محدودیت ها قرار نمی گیرد.
برای کسب اطلاعات بیشتر در مورد جایگزین توصیه شده برای شروع فعالیت ها از پس زمینه، به راهنمای نحوه هشدار به کاربران از رویدادهای حساس به زمان در برنامه خود مراجعه کنید.
شناسه ها و داده ها
این بخش تغییرات خاص مربوط به کار با شناسه ها و داده های دستگاه را فهرست می کند.
حذف وابستگی مخاطبین
با شروع اندروید 10، این پلتفرم اطلاعات وابستگی مخاطبین را ردیابی نمی کند. در نتیجه، اگر برنامه شما در مخاطبین کاربر جستجو کند، نتایج بر اساس فراوانی تعامل مرتب نمیشوند.
راهنمای مربوط به ContactsProvider
حاوی اطلاعیهای است که فیلدها و روشهای خاصی را توصیف میکند که در همه دستگاههای شروع شده در Android 10 منسوخ شدهاند .
تصادفی سازی آدرس MAC
در دستگاههایی که اندروید 10 یا بالاتر را اجرا میکنند، سیستم بهطور پیشفرض آدرسهای MAC را بهصورت تصادفی ارسال میکند.
اگر برنامه شما یک مورد استفاده سازمانی را مدیریت میکند، پلتفرم APIهایی را برای چندین عملیات مرتبط با آدرسهای MAC ارائه میکند:
- به دست آوردن آدرس MAC تصادفی: برنامههای مالک دستگاه و برنامههای مالک نمایه میتوانند با فراخوانی
getRandomizedMacAddress()
، آدرس MAC تصادفی اختصاص داده شده به یک شبکه خاص را بازیابی کنند. - به دست آوردن آدرس MAC واقعی و کارخانه ای: برنامه های مالک دستگاه می توانند آدرس MAC سخت افزاری واقعی دستگاه را با فراخوانی
getWifiMacAddress()
بازیابی کنند. این روش برای ردیابی ناوگان دستگاه ها مفید است.
محدودیت دسترسی به فایل سیستم /proc/net
در دستگاههایی که Android 10 یا بالاتر را اجرا میکنند، برنامهها نمیتوانند به /proc/net
دسترسی داشته باشند که شامل اطلاعاتی درباره وضعیت شبکه دستگاه است. برنامه هایی که نیاز به دسترسی به این اطلاعات دارند، مانند VPN ها، باید از کلاس NetworkStatsManager
یا ConnectivityManager
استفاده کنند.
محدودیت در شناسههای دستگاه غیر قابل تنظیم مجدد
از Android 10، برنامهها باید مجوز ممتاز READ_PRIVILEGED_PHONE_STATE
را داشته باشند تا بتوانند به شناسههای غیرقابل تنظیم دستگاه، که شامل IMEI و شماره سریال هستند، دسترسی داشته باشند.
روش های تحت تأثیر شامل موارد زیر است:
-
Build
-
TelephonyManager
اگر برنامه شما مجوز ندارد و به هر حال سعی میکنید اطلاعاتی درباره شناسههای غیرقابل تنظیم مجدد بخواهید، پاسخ پلتفرم براساس نسخه SDK هدف متفاوت است:
- اگر برنامه شما Android 10 یا بالاتر را هدف قرار دهد، یک
SecurityException
رخ می دهد. - اگر برنامه شما Android 9 (سطح API 28) یا پایینتر را هدف قرار میدهد، اگر برنامه دارای مجوز
READ_PHONE_STATE
باشد، این روش دادههایnull
یا placeholder را برمیگرداند. در غیر این صورت، یکSecurityException
رخ می دهد.
بسیاری از موارد استفاده نیازی به شناسه دستگاه غیر قابل تنظیم مجدد ندارند. به عنوان مثال، اگر برنامه شما از شناسههای دستگاه غیر قابل تنظیم مجدد برای ردیابی تبلیغات یا اهداف تجزیه و تحلیل کاربر استفاده میکند، به جای آن از شناسه تبلیغات Android برای آن موارد استفاده خاص استفاده کنید . برای کسب اطلاعات بیشتر، بهترین روشها برای شناسههای منحصربهفرد را ببینید.
دسترسی محدود به داده های کلیپ بورد
اگر برنامه شما ویرایشگر روش ورودی پیشفرض (IME) نباشد یا برنامهای باشد که در حال حاضر فوکوس دارد، برنامه شما نمیتواند به دادههای کلیپبورد در Android 10 یا بالاتر دسترسی داشته باشد.
محافظت از شماره سریال دستگاه USB
اگر برنامه شما Android 10 یا بالاتر را هدف قرار می دهد، برنامه شما نمی تواند شماره سریال را بخواند تا زمانی که کاربر به برنامه شما اجازه دسترسی به دستگاه یا لوازم جانبی USB را بدهد.
برای کسب اطلاعات بیشتر در مورد کار با دستگاههای USB، راهنمای نحوه پیکربندی میزبانهای USB را ببینید.
دوربین و قابلیت اتصال
در این بخش تغییرات مختص متادیتا دوربین و APIهای اتصال فهرست می شود.
محدودیت دسترسی به جزئیات و ابرداده دوربین
اندروید 10 وسعت اطلاعاتی را که متد getCameraCharacteristics()
به طور پیش فرض برمی گرداند تغییر می دهد. بهویژه، برنامه شما باید مجوز CAMERA
را داشته باشد تا بتواند به ابردادههای بالقوه خاص دستگاه که در مقدار برگشتی این روش گنجانده شده است، دسترسی داشته باشد.
برای کسب اطلاعات بیشتر در مورد این تغییرات، به بخش مربوط به فیلدهای دوربینی که به مجوز نیاز دارند مراجعه کنید.
محدودیت در فعال و غیرفعال کردن وای فای
برنامههایی که Android 10 یا بالاتر را هدف قرار میدهند، نمیتوانند Wi-Fi را فعال یا غیرفعال کنند. متد WifiManager.setWifiEnabled()
همیشه false
را برمی گرداند.
اگر باید از کاربران بخواهید که Wi-Fi را فعال و غیرفعال کنند، از پانل تنظیمات استفاده کنید.
محدودیت در دسترسی مستقیم به شبکه های Wi-Fi پیکربندی شده
برای محافظت از حریم خصوصی کاربر، پیکربندی دستی فهرست شبکههای Wi-Fi به برنامههای سیستم و کنترلکنندههای خطمشی دستگاه (DPC) محدود میشود. یک DPC معین می تواند مالک دستگاه یا مالک نمایه باشد.
اگر برنامه شما اندروید 10 یا بالاتر را هدف قرار میدهد و یک برنامه سیستمی یا DPC نیست، روشهای زیر اطلاعات مفیدی را بر نمیگردانند:
متد
getConfiguredNetworks()
همیشه یک لیست خالی برمی گرداند.هر روش عملیات شبکه که یک مقدار صحیح
addNetwork()
وupdateNetwork()
برمی گرداند - همیشه -1 را برمی گرداند.هر عملیات شبکه که یک مقدار بولی برمیگرداند
removeNetwork()
،reassociate()
،enableNetwork()
،disableNetwork()
،reconnect()
وdisconnect()
— همیشهfalse
برمیگرداند.
اگر برنامه شما نیاز به اتصال به شبکه های Wi-Fi دارد، از روش های جایگزین زیر استفاده کنید:
- برای راه اندازی یک اتصال محلی فوری به یک شبکه Wi-Fi، از
WifiNetworkSpecifier
در یک شیءNetworkRequest
استاندارد استفاده کنید. - برای افزودن شبکههای Wi-Fi برای در نظر گرفتن دسترسی به اینترنت برای کاربر، با اشیاء
WifiNetworkSuggestion
کار کنید. با فراخوانیaddNetworkSuggestions()
وremoveNetworkSuggestions()
میتوانید شبکههایی را که در گفتگوی انتخاب شبکه اتصال خودکار ظاهر میشوند اضافه و حذف کنید. این روش ها به هیچ مجوز مکان نیاز ندارند.
برخی از APIهای تلفن، بلوتوث، وای فای به مجوز مکان FINE نیاز دارند
اگر برنامه شما Android 10 یا بالاتر را هدف قرار میدهد، باید مجوز ACCESS_FINE_LOCATION
را داشته باشد تا بتواند از چندین روش در APIهای Wi-Fi، Wi-Fi Aware یا بلوتوث استفاده کند. بخشهای زیر کلاسها و متدهای آسیبدیده را فهرست میکنند.
تلفن
-
TelephonyManager
-
getCellLocation()
-
getAllCellInfo()
-
requestNetworkScan()
-
requestCellInfoUpdate()
-
getAvailableNetworks()
-
getServiceState()
-
-
TelephonyScanManager
-
requestNetworkScan()
-
-
TelephonyScanManager.NetworkScanCallback
-
onResults()
-
-
PhoneStateListener
-
onCellLocationChanged()
-
onCellInfoChanged()
-
onServiceStateChanged()
-
وای فای
-
WifiManager
-
startScan()
-
getScanResults()
-
getConnectionInfo()
-
getConfiguredNetworks()
-
-
WifiAwareManager
-
WifiP2pManager
-
WifiRttManager
بلوتوث
-
BluetoothAdapter
-
startDiscovery()
-
startLeScan()
-
-
BluetoothAdapter.LeScanCallback
-
BluetoothLeScanner
-
startScan()
-
مجوزها
این بخش بهروزرسانیهای مدل مجوزهای Android را توضیح میدهد.
دسترسی محدود به محتویات صفحه نمایش
برای محافظت از محتویات صفحه کاربران، Android 10 با تغییر دامنه مجوزهای READ_FRAME_BUFFER
، CAPTURE_VIDEO_OUTPUT
، و CAPTURE_SECURE_VIDEO_OUTPUT
از دسترسی بی صدا به محتویات صفحه دستگاه جلوگیری می کند. از اندروید 10، این مجوزها فقط برای دسترسی به امضا هستند.
برنامههایی که نیاز به دسترسی به محتویات صفحهنمایش دستگاه دارند باید از MediaProjection
API استفاده کنند، که درخواستی از کاربر برای ارائه رضایت نمایش داده میشود.
بررسی مجوزهای کاربر در برنامه های قدیمی
اگر برنامه شما Android 5.1 (سطح API 22) یا پایینتر را هدف قرار میدهد، کاربران هنگام استفاده از برنامه شما در دستگاهی که برای اولین بار دارای Android 10 یا بالاتر است، صفحه مجوزها را مشاهده میکنند، همانطور که در شکل 1 نشان داده شده است. این صفحه به کاربران این فرصت را میدهد تا دسترسی به مجوزهایی را که سیستم قبلاً در زمان نصب به برنامه شما اعطا کرده بود لغو کنند.
تشخیص فعالیت بدنی
Android 10 مجوز زمان اجرا android.permission.ACTIVITY_RECOGNITION
را برای برنامههایی که نیاز به شناسایی تعداد قدمهای کاربر یا طبقهبندی فعالیت بدنی کاربر، مانند پیادهروی، دوچرخهسواری، یا حرکت در وسیله نقلیه دارند، معرفی میکند. این طراحی شده است تا به کاربران نحوه استفاده از دادههای حسگر دستگاه در تنظیمات را مشاهده کنند.
برخی از کتابخانههای موجود در سرویسهای Google Play، مانند Activity Recognition API و Google Fit API ، نتایجی را ارائه نمیدهند مگر اینکه کاربر این مجوز را به برنامه شما داده باشد.
تنها حسگرهای داخلی دستگاه که به شما نیاز به اعلام این مجوز دارند، سنسورهای گام شمار و ردیاب گام هستند.
اگر برنامه شما Android 9 (سطح API 28) یا پایینتر را هدف قرار میدهد، سیستم به طور خودکار مجوز android.permission.ACTIVITY_RECOGNITION
را در صورت نیاز به برنامه شما اعطا میکند، اگر برنامه شما هر یک از شرایط زیر را داشته باشد:
- فایل مانیفست شامل مجوز
com.google.android.gms.permission.ACTIVITY_RECOGNITION
است. - فایل مانیفست شامل مجوز
android.permission.ACTIVITY_RECOGNITION
نیست .
اگر system-auto مجوز android.permission.ACTIVITY_RECOGNITION
را اعطا کند، پس از اینکه برنامه خود را برای هدف قرار دادن Android 10 بهروزرسانی کردید، برنامه شما این مجوز را حفظ میکند. با این حال، کاربر میتواند هر زمان که بخواهد در تنظیمات سیستم این مجوز را لغو کند.
گروههای مجوز از رابط کاربری حذف شدند
از اندروید 10، برنامهها نمیتوانند نحوه گروهبندی مجوزها را در رابط کاربری جستجو کنند.
،اندروید 10 (سطح API 29) تعدادی ویژگی و تغییرات رفتاری را برای محافظت بهتر از حریم خصوصی کاربران معرفی می کند. این تغییرات شفافیت و کنترلی را که کاربران بر روی داده های خود و قابلیت هایی که به برنامه ها می دهند، گسترش می دهد. این ویژگیها ممکن است به این معنی باشد که رفتارها یا دادههای خاصی که برنامه شما به آن وابسته است ممکن است در مقایسه با نسخههای قدیمیتر پلتفرم رفتار متفاوتی داشته باشد. اگر برنامه شما از بهترین شیوه های فعلی برای مدیریت داده های کاربر پیروی کند، تأثیرات روی برنامه شما باید حداقل باشد.
این صفحه خلاصه ای از هر تغییر را فهرست می کند.
تغییرات برتر
این بخش شامل تغییرات کلیدی اندروید 10 مربوط به حریم خصوصی است.
دسترسی به حافظه خارجی به فایلها و رسانههای برنامه
بهطور پیشفرض، به برنامههایی که Android 10 و بالاتر را هدف قرار میدهند ، به فضای ذخیرهسازی خارجی یا فضای ذخیرهسازی محدوده دسترسی دارند. چنین برنامههایی میتوانند انواع فایلهای زیر را در یک دستگاه ذخیرهسازی خارجی بدون نیاز به درخواست مجوزهای کاربر مرتبط با فضای ذخیرهسازی ببینند:
- فایلهای موجود در دایرکتوری مخصوص برنامه، با استفاده از
getExternalFilesDir()
قابل دسترسی هستند. - عکسها، ویدیوها و کلیپهای صوتی که برنامه از فروشگاه رسانه ایجاد کرده است.
برای کسب اطلاعات بیشتر در مورد فضای ذخیرهسازی با دامنه، و همچنین نحوه اشتراکگذاری، دسترسی و اصلاح فایلهایی که در دستگاههای ذخیرهسازی خارجی ذخیره میشوند، به راهنمای نحوه مدیریت فایلها در حافظه خارجی و دسترسی و اصلاح فایلهای رسانه مراجعه کنید.
دسترسی به مکان دستگاه در پسزمینه نیاز به مجوز دارد
برای پشتیبانی از کنترل اضافی که کاربران بر دسترسی برنامه به اطلاعات مکان دارند، Android 10 مجوز ACCESS_BACKGROUND_LOCATION
را معرفی می کند.
برخلاف مجوزهای ACCESS_FINE_LOCATION
و ACCESS_COARSE_LOCATION
، مجوز ACCESS_BACKGROUND_LOCATION
تنها زمانی که برنامه در پسزمینه اجرا میشود، بر دسترسی برنامه به مکان تأثیر میگذارد. برنامهای در نظر گرفته میشود که به موقعیت مکانی در پسزمینه دسترسی دارد، مگر اینکه یکی از شرایط زیر برآورده شود:
- یک فعالیت متعلق به برنامه قابل مشاهده است.
این برنامه یک سرویس پیش زمینه را اجرا می کند که نوع
location
سرویس پیش زمینه را اعلام کرده است.برای اعلام نوع سرویس پیش زمینه برای یک سرویس در برنامه خود،
targetSdkVersion
یاcompileSdkVersion
برنامه خود را روی29
یا بالاتر تنظیم کنید. درباره اینکه چگونه سرویسهای پیشزمینه میتوانند فعالیتهای آغاز شده توسط کاربر را که نیاز به دسترسی به مکان دارند، ادامه دهند، بیشتر بیاموزید.
اگر برنامه شما geofences ایجاد و نظارت می کند و Android 10 (سطح API 29) یا بالاتر را هدف قرار می دهد، باید مجوز ACCESS_BACKGROUND_LOCATION
اعلام کنید.
هنگام هدف قرار دادن Android 9 یا پایینتر، دسترسی بهطور خودکار اعطا میشود
اگر برنامه شما روی Android 10 یا بالاتر اجرا میشود اما اندروید 9 (سطح API 28) یا پایینتر را هدف قرار میدهد، پلتفرم رفتار زیر را اعمال میکند:
- اگر برنامه شما عنصر
<uses-permission>
را برایACCESS_FINE_LOCATION
یاACCESS_COARSE_LOCATION
اعلام کند، سیستم به طور خودکار یک عنصر<uses-permission>
را برایACCESS_BACKGROUND_LOCATION
در حین نصب اضافه میکند. - اگر برنامه شما
ACCESS_FINE_LOCATION
یاACCESS_COARSE_LOCATION
درخواست کند، سیستم به طور خودکارACCESS_BACKGROUND_LOCATION
به درخواست اضافه میکند.
هنگامی که دستگاه به Android 10 ارتقا داده می شود، دسترسی داشته باشید
اگر کاربری به برنامه شما اجازه دسترسی به مکان دستگاه - یا ACCESS_COARSE_LOCATION
یا ACCESS_FINE_LOCATION
- بدهد، سپس دستگاه خود را از Android 9 به Android 10 ارتقا دهد، سیستم به طور خودکار مجموعه مجوزهای مبتنی بر مکان را که به برنامه شما اعطا شده است، بهروزرسانی میکند. مجموعه مجوزهایی که برنامه شما پس از ارتقا دریافت می کند به نسخه SDK هدف و مجوزهای تعریف شده آن بستگی دارد، همانطور که در جدول زیر نشان داده شده است:
جدول 1. تغییرات در وضعیت مجوز مکان پس از ارتقای دستگاه به Android 10
نسخه پلتفرم هدف | درشت یا ریز مجوز داده شده است؟ | مجوز پس زمینه در مانیفست تعریف شده است؟ | وضعیت مجوز پیش فرض به روز شد |
---|---|---|---|
اندروید 10 | بله | بله | دسترسی به پیش زمینه و پس زمینه |
اندروید 10 | بله | خیر | فقط دسترسی به پیش زمینه |
اندروید 10 | خیر | (توسط سیستم نادیده گرفته شد) | بدون دسترسی |
اندروید 9 یا پایین تر | بله | به صورت خودکار توسط سیستم در زمان ارتقاء دستگاه اضافه می شود | دسترسی به پیش زمینه و پس زمینه |
اندروید 9 یا پایین تر | خیر | (توسط سیستم نادیده گرفته شد) | بدون دسترسی |
توجه داشته باشید که کاربر میتواند این سطح دسترسی را حتی پس از بهروزرسانی خودکار دسترسی برنامه شما به مکان دستگاه توسط سیستم تغییر دهد. به عنوان مثال، کاربر ممکن است دسترسی برنامه شما را فقط به پیش زمینه کاهش دهد یا دسترسی را به طور کامل لغو کند. قبل از تلاش برای دسترسی به موقعیت مکانی دستگاه، به ویژه در یک سرویس پیش زمینه، برنامه شما باید بررسی کند که آیا کاربر همچنان به برنامه شما اجازه می دهد این اطلاعات مکان را دریافت کند یا خیر.
هنگام بهروزرسانی سطح API هدف در دستگاههای Android 10، دسترسی لغو شد
موردی را در نظر بگیرید که برنامه شما قبلاً روی دستگاهی نصب شده است که Android 10 را اجرا می کند. اگر در این شرایط برنامه خود را برای هدف قرار دادن Android 10 به روز کنید، دستگاه مجوز ACCESS_BACKGROUND_LOCATION
را لغو می کند.
برای اطلاعات بیشتر در مورد نحوه بازیابی موقعیت مکانی دستگاه در حالی که برنامه شما در پسزمینه است، به راهنمای دریافت بهروزرسانیهای مکان دورهای مراجعه کنید.
محدودیت در شروع فعالیت ها از پس زمینه
با شروع اندروید 10، این سیستم محدودیت هایی را برای شروع فعالیت ها از پس زمینه اعمال می کند. این تغییر رفتار به کاهش وقفهها برای کاربر کمک میکند و کاربر را کنترل بیشتری بر آنچه روی صفحه نمایش نشان داده میشود، حفظ میکند. تا زمانی که برنامه شما فعالیت های خود را در نتیجه مستقیم تعامل کاربر شروع می کند، برنامه شما به احتمال زیاد تحت تأثیر این محدودیت ها قرار نمی گیرد.
برای کسب اطلاعات بیشتر در مورد جایگزین توصیه شده برای شروع فعالیت ها از پس زمینه، به راهنمای نحوه هشدار به کاربران از رویدادهای حساس به زمان در برنامه خود مراجعه کنید.
شناسه ها و داده ها
این بخش تغییرات خاص مربوط به کار با شناسه ها و داده های دستگاه را فهرست می کند.
حذف وابستگی مخاطبین
با شروع اندروید 10، این پلتفرم اطلاعات وابستگی مخاطبین را ردیابی نمی کند. در نتیجه، اگر برنامه شما در مخاطبین کاربر جستجو کند، نتایج بر اساس فراوانی تعامل مرتب نمیشوند.
راهنمای مربوط به ContactsProvider
حاوی اطلاعیهای است که فیلدها و روشهای خاصی را توصیف میکند که در همه دستگاههای شروع شده در Android 10 منسوخ شدهاند .
تصادفی سازی آدرس MAC
در دستگاههایی که اندروید 10 یا بالاتر را اجرا میکنند، سیستم بهطور پیشفرض آدرسهای MAC را بهصورت تصادفی ارسال میکند.
اگر برنامه شما یک مورد استفاده سازمانی را مدیریت میکند، پلتفرم APIهایی را برای چندین عملیات مرتبط با آدرسهای MAC ارائه میکند:
- به دست آوردن آدرس MAC تصادفی: برنامههای مالک دستگاه و برنامههای مالک نمایه میتوانند با فراخوانی
getRandomizedMacAddress()
، آدرس MAC تصادفی اختصاص داده شده به یک شبکه خاص را بازیابی کنند. - به دست آوردن آدرس MAC واقعی و کارخانه ای: برنامه های مالک دستگاه می توانند آدرس MAC سخت افزاری واقعی دستگاه را با فراخوانی
getWifiMacAddress()
بازیابی کنند. این روش برای ردیابی ناوگان دستگاه ها مفید است.
محدودیت دسترسی به فایل سیستم /proc/net
در دستگاههایی که Android 10 یا بالاتر را اجرا میکنند، برنامهها نمیتوانند به /proc/net
دسترسی داشته باشند که شامل اطلاعاتی درباره وضعیت شبکه دستگاه است. برنامه هایی که نیاز به دسترسی به این اطلاعات دارند، مانند VPN ها، باید از کلاس NetworkStatsManager
یا ConnectivityManager
استفاده کنند.
محدودیت در شناسههای دستگاه غیر قابل تنظیم مجدد
از Android 10، برنامهها باید مجوز ممتاز READ_PRIVILEGED_PHONE_STATE
را داشته باشند تا بتوانند به شناسههای غیرقابل تنظیم دستگاه، که شامل IMEI و شماره سریال هستند، دسترسی داشته باشند.
روش های تحت تأثیر شامل موارد زیر است:
-
Build
-
TelephonyManager
اگر برنامه شما مجوز ندارد و به هر حال سعی میکنید اطلاعاتی درباره شناسههای غیرقابل تنظیم مجدد بخواهید، پاسخ پلتفرم براساس نسخه SDK هدف متفاوت است:
- اگر برنامه شما Android 10 یا بالاتر را هدف قرار دهد، یک
SecurityException
رخ می دهد. - اگر برنامه شما Android 9 (سطح API 28) یا پایینتر را هدف قرار میدهد، اگر برنامه دارای مجوز
READ_PHONE_STATE
باشد، این روش دادههایnull
یا placeholder را برمیگرداند. در غیر این صورت، یکSecurityException
رخ می دهد.
بسیاری از موارد استفاده نیازی به شناسه دستگاه غیر قابل تنظیم مجدد ندارند. به عنوان مثال، اگر برنامه شما از شناسههای دستگاه غیر قابل تنظیم مجدد برای ردیابی تبلیغات یا اهداف تجزیه و تحلیل کاربر استفاده میکند، به جای آن از شناسه تبلیغات Android برای آن موارد استفاده خاص استفاده کنید . برای کسب اطلاعات بیشتر، بهترین روشها برای شناسههای منحصربهفرد را ببینید.
دسترسی محدود به داده های کلیپ بورد
اگر برنامه شما ویرایشگر روش ورودی پیشفرض (IME) نباشد یا برنامهای باشد که در حال حاضر فوکوس دارد، برنامه شما نمیتواند به دادههای کلیپبورد در Android 10 یا بالاتر دسترسی داشته باشد.
محافظت از شماره سریال دستگاه USB
اگر برنامه شما Android 10 یا بالاتر را هدف قرار می دهد، برنامه شما نمی تواند شماره سریال را بخواند تا زمانی که کاربر به برنامه شما اجازه دسترسی به دستگاه یا لوازم جانبی USB را بدهد.
برای کسب اطلاعات بیشتر در مورد کار با دستگاههای USB، راهنمای نحوه پیکربندی میزبانهای USB را ببینید.
دوربین و قابلیت اتصال
در این بخش تغییرات مختص متادیتا دوربین و APIهای اتصال فهرست می شود.
محدودیت دسترسی به جزئیات و ابرداده دوربین
اندروید 10 وسعت اطلاعاتی را که متد getCameraCharacteristics()
به طور پیش فرض برمی گرداند تغییر می دهد. بهویژه، برنامه شما باید مجوز CAMERA
را داشته باشد تا بتواند به ابردادههای بالقوه خاص دستگاه که در مقدار برگشتی این روش گنجانده شده است، دسترسی داشته باشد.
برای کسب اطلاعات بیشتر در مورد این تغییرات، به بخش مربوط به فیلدهای دوربینی که به مجوز نیاز دارند مراجعه کنید.
محدودیت در فعال و غیرفعال کردن وای فای
برنامههایی که Android 10 یا بالاتر را هدف قرار میدهند، نمیتوانند Wi-Fi را فعال یا غیرفعال کنند. متد WifiManager.setWifiEnabled()
همیشه false
را برمی گرداند.
اگر باید از کاربران بخواهید که Wi-Fi را فعال و غیرفعال کنند، از پانل تنظیمات استفاده کنید.
محدودیت در دسترسی مستقیم به شبکه های Wi-Fi پیکربندی شده
برای محافظت از حریم خصوصی کاربر، پیکربندی دستی فهرست شبکههای Wi-Fi به برنامههای سیستم و کنترلکنندههای خطمشی دستگاه (DPC) محدود میشود. یک DPC معین می تواند مالک دستگاه یا مالک نمایه باشد.
اگر برنامه شما اندروید 10 یا بالاتر را هدف قرار میدهد و یک برنامه سیستمی یا DPC نیست، روشهای زیر اطلاعات مفیدی را بر نمیگردانند:
متد
getConfiguredNetworks()
همیشه یک لیست خالی برمی گرداند.هر روش عملیات شبکه که یک مقدار صحیح
addNetwork()
وupdateNetwork()
برمی گرداند - همیشه -1 را برمی گرداند.هر عملیات شبکه که یک مقدار بولی برمیگرداند
removeNetwork()
،reassociate()
،enableNetwork()
،disableNetwork()
،reconnect()
وdisconnect()
— همیشهfalse
برمیگرداند.
اگر برنامه شما نیاز به اتصال به شبکه های Wi-Fi دارد، از روش های جایگزین زیر استفاده کنید:
- برای راه اندازی یک اتصال محلی فوری به یک شبکه Wi-Fi، از
WifiNetworkSpecifier
در یک شیءNetworkRequest
استاندارد استفاده کنید. - برای افزودن شبکههای Wi-Fi برای در نظر گرفتن دسترسی به اینترنت برای کاربر، با اشیاء
WifiNetworkSuggestion
کار کنید. با فراخوانیaddNetworkSuggestions()
وremoveNetworkSuggestions()
میتوانید شبکههایی را که در گفتگوی انتخاب شبکه اتصال خودکار ظاهر میشوند اضافه و حذف کنید. این روش ها به هیچ مجوز مکان نیاز ندارند.
برخی از APIهای تلفن، بلوتوث، وای فای به مجوز مکان FINE نیاز دارند
اگر برنامه شما Android 10 یا بالاتر را هدف قرار میدهد، باید مجوز ACCESS_FINE_LOCATION
را داشته باشد تا بتواند از چندین روش در APIهای Wi-Fi، Wi-Fi Aware یا بلوتوث استفاده کند. بخشهای زیر کلاسها و متدهای آسیبدیده را فهرست میکنند.
تلفن
-
TelephonyManager
-
getCellLocation()
-
getAllCellInfo()
-
requestNetworkScan()
-
requestCellInfoUpdate()
-
getAvailableNetworks()
-
getServiceState()
-
-
TelephonyScanManager
-
requestNetworkScan()
-
-
TelephonyScanManager.NetworkScanCallback
-
onResults()
-
-
PhoneStateListener
-
onCellLocationChanged()
-
onCellInfoChanged()
-
onServiceStateChanged()
-
وای فای
-
WifiManager
-
startScan()
-
getScanResults()
-
getConnectionInfo()
-
getConfiguredNetworks()
-
-
WifiAwareManager
-
WifiP2pManager
-
WifiRttManager
بلوتوث
-
BluetoothAdapter
-
startDiscovery()
-
startLeScan()
-
-
BluetoothAdapter.LeScanCallback
-
BluetoothLeScanner
-
startScan()
-
مجوزها
این بخش بهروزرسانیهای مدل مجوزهای Android را توضیح میدهد.
دسترسی محدود به محتویات صفحه نمایش
برای محافظت از محتویات صفحه کاربران، Android 10 با تغییر دامنه مجوزهای READ_FRAME_BUFFER
، CAPTURE_VIDEO_OUTPUT
، و CAPTURE_SECURE_VIDEO_OUTPUT
از دسترسی بی صدا به محتویات صفحه دستگاه جلوگیری می کند. از اندروید 10، این مجوزها فقط برای دسترسی به امضا هستند.
برنامههایی که نیاز به دسترسی به محتویات صفحهنمایش دستگاه دارند باید از MediaProjection
API استفاده کنند، که درخواستی از کاربر برای ارائه رضایت نمایش داده میشود.
بررسی مجوزهای کاربر در برنامه های قدیمی
اگر برنامه شما Android 5.1 (سطح API 22) یا پایینتر را هدف قرار میدهد، کاربران هنگام استفاده از برنامه شما در دستگاهی که برای اولین بار دارای Android 10 یا بالاتر است، صفحه مجوزها را مشاهده میکنند، همانطور که در شکل 1 نشان داده شده است. این صفحه به کاربران این فرصت را میدهد تا دسترسی به مجوزهایی را که سیستم قبلاً در زمان نصب به برنامه شما اعطا کرده بود لغو کنند.
تشخیص فعالیت بدنی
Android 10 مجوز زمان اجرا android.permission.ACTIVITY_RECOGNITION
را برای برنامههایی که نیاز به شناسایی تعداد قدمهای کاربر یا طبقهبندی فعالیت بدنی کاربر، مانند پیادهروی، دوچرخهسواری، یا حرکت در وسیله نقلیه دارند، معرفی میکند. این طراحی شده است تا به کاربران نحوه استفاده از دادههای حسگر دستگاه در تنظیمات را مشاهده کنند.
برخی از کتابخانههای موجود در سرویسهای Google Play، مانند Activity Recognition API و Google Fit API ، نتایجی را ارائه نمیدهند مگر اینکه کاربر این مجوز را به برنامه شما داده باشد.
تنها حسگرهای داخلی دستگاه که به شما نیاز به اعلام این مجوز دارند، سنسورهای گام شمار و ردیاب گام هستند.
اگر برنامه شما Android 9 (سطح API 28) یا پایینتر را هدف قرار میدهد، سیستم به طور خودکار مجوز android.permission.ACTIVITY_RECOGNITION
را در صورت نیاز به برنامه شما اعطا میکند، اگر برنامه شما هر یک از شرایط زیر را داشته باشد:
- فایل مانیفست شامل مجوز
com.google.android.gms.permission.ACTIVITY_RECOGNITION
است. - فایل مانیفست شامل مجوز
android.permission.ACTIVITY_RECOGNITION
نیست .
اگر system-auto مجوز android.permission.ACTIVITY_RECOGNITION
را اعطا کند، پس از اینکه برنامه خود را برای هدف قرار دادن Android 10 بهروزرسانی کردید، برنامه شما این مجوز را حفظ میکند. با این حال، کاربر میتواند هر زمان که بخواهد در تنظیمات سیستم این مجوز را لغو کند.
گروههای مجوز از رابط کاربری حذف شدند
از اندروید 10، برنامهها نمیتوانند نحوه گروهبندی مجوزها را در رابط کاربری جستجو کنند.
،اندروید 10 (سطح API 29) تعدادی ویژگی و تغییرات رفتاری را برای محافظت بهتر از حریم خصوصی کاربران معرفی می کند. این تغییرات شفافیت و کنترلی را که کاربران بر روی داده های خود و قابلیت هایی که به برنامه ها می دهند، گسترش می دهد. این ویژگیها ممکن است به این معنی باشد که رفتارها یا دادههای خاصی که برنامه شما به آن وابسته است ممکن است در مقایسه با نسخههای قدیمیتر پلتفرم رفتار متفاوتی داشته باشد. اگر برنامه شما از بهترین شیوه های فعلی برای مدیریت داده های کاربر پیروی کند، تأثیرات روی برنامه شما باید حداقل باشد.
این صفحه خلاصه ای از هر تغییر را فهرست می کند.
تغییرات برتر
این بخش شامل تغییرات کلیدی اندروید 10 مربوط به حریم خصوصی است.
دسترسی به حافظه خارجی به فایلها و رسانههای برنامه
بهطور پیشفرض، به برنامههایی که Android 10 و بالاتر را هدف قرار میدهند ، به فضای ذخیرهسازی خارجی یا فضای ذخیرهسازی محدوده دسترسی دارند. چنین برنامههایی میتوانند انواع فایلهای زیر را در یک دستگاه ذخیرهسازی خارجی بدون نیاز به درخواست مجوزهای کاربر مرتبط با فضای ذخیرهسازی ببینند:
- فایلهای موجود در دایرکتوری مخصوص برنامه، با استفاده از
getExternalFilesDir()
قابل دسترسی هستند. - عکسها، ویدیوها و کلیپهای صوتی که برنامه از فروشگاه رسانه ایجاد کرده است.
برای کسب اطلاعات بیشتر در مورد فضای ذخیرهسازی با دامنه، و همچنین نحوه اشتراکگذاری، دسترسی و اصلاح فایلهایی که در دستگاههای ذخیرهسازی خارجی ذخیره میشوند، به راهنمای نحوه مدیریت فایلها در حافظه خارجی و دسترسی و اصلاح فایلهای رسانه مراجعه کنید.
دسترسی به مکان دستگاه در پسزمینه نیاز به مجوز دارد
برای پشتیبانی از کنترل اضافی که کاربران بر دسترسی برنامه به اطلاعات مکان دارند، Android 10 مجوز ACCESS_BACKGROUND_LOCATION
را معرفی می کند.
برخلاف مجوزهای ACCESS_FINE_LOCATION
و ACCESS_COARSE_LOCATION
، مجوز ACCESS_BACKGROUND_LOCATION
تنها زمانی که برنامه در پسزمینه اجرا میشود، بر دسترسی برنامه به مکان تأثیر میگذارد. در نظر گرفته می شود که یک برنامه در پس زمینه به مکان دسترسی پیدا کند مگر اینکه یکی از شرایط زیر راضی باشد:
- فعالیتی متعلق به برنامه قابل مشاهده است.
این برنامه یک سرویس پیش زمینه را اجرا می کند که نوع خدمات پیش زمینه
location
اعلام کرده است.برای اعلام نوع سرویس پیش زمینه برای یک سرویس در برنامه خود ،
targetSdkVersion
برنامه خود را بر روی29
یا بالاترcompileSdkVersion
کنید. در مورد چگونگی ادامه خدمات پیش زمینه می توانند اقدامات مبتنی بر کاربر را که نیاز به دسترسی به مکان دارند ، ادامه دهید .
اگر برنامه شما Geofences را ایجاد و نظارت می کند و Android 10 (API سطح 29) یا بالاتر را هدف قرار می دهد ، باید اجازه ACCESS_BACKGROUND_LOCATION
اعلام کنید.
دسترسی به صورت خودکار هنگام هدف قرار دادن Android 9 یا پایین
اگر برنامه شما روی Android 10 یا بالاتر اجرا شود اما Android 9 (API سطح 28) یا پایین تر را هدف قرار می دهد ، این سیستم عامل رفتار زیر را اعمال می کند:
- اگر برنامه شما یک عنصر
<uses-permission>
را برایACCESS_FINE_LOCATION
یاACCESS_COARSE_LOCATION
اعلام کند ، سیستم به طور خودکار یک عنصر<uses-permission>
را برایACCESS_BACKGROUND_LOCATION
در هنگام نصب اضافه می کند. - اگر برنامه شما درخواست
ACCESS_FINE_LOCATION
یاACCESS_COARSE_LOCATION
را دارد ، سیستم به طور خودکارACCESS_BACKGROUND_LOCATION
به درخواست اضافه می کند.
دسترسی به دستگاه به Android 10 دسترسی پیدا کنید
اگر کاربر به دسترسی برنامه شما به مکان دستگاه-یا ACCESS_COARSE_LOCATION
یا ACCESS_FINE_LOCATION
اعطا می کند-سپس دستگاه خود را از Android 9 به Android 10 ارتقا می دهد ، سیستم به طور خودکار مجموعه ای از مجوزهای مبتنی بر مکان را که به برنامه شما اعطا می شود ، به روز می کند. مجموعه مجوزهایی که برنامه شما پس از بروزرسانی دریافت می کند بستگی به نسخه SDK هدف آن و مجوزهای تعریف شده آن دارد ، همانطور که در جدول زیر نشان داده شده است:
جدول 1. تغییر در حالت مجوز مکان پس از به روزرسانی دستگاه به Android 10
نسخه پلت فرم هدف | درشت یا ریز مجوز اعطا شده است؟ | مجوز پس زمینه تعریف شده در مانیفست؟ | حالت اجازه پیش فرض به روز شده |
---|---|---|---|
اندروید 10 | بله | بله | پیش زمینه و دسترسی به پس زمینه |
اندروید 10 | بله | خیر | فقط دسترسی پیش زمینه |
اندروید 10 | خیر | (نادیده گرفته شده توسط سیستم) | بدون دسترسی |
Android 9 یا پایین | بله | به طور خودکار توسط سیستم در زمان ارتقاء دستگاه اضافه می شود | پیش زمینه و دسترسی به پس زمینه |
Android 9 یا پایین | خیر | (نادیده گرفته شده توسط سیستم) | بدون دسترسی |
توجه داشته باشید که کاربر می تواند این سطح از دسترسی را حتی پس از اینکه سیستم به طور خودکار دسترسی برنامه شما به مکان دستگاه را به روز می کند ، تغییر دهد. به عنوان مثال ، کاربر ممکن است دسترسی برنامه شما را فقط به پیش زمینه کاهش دهد یا دسترسی را به طور کامل ابطال کند. قبل از تلاش برای دسترسی به مکان دستگاه ، به ویژه در یک سرویس پیش زمینه ، برنامه شما باید بررسی کند که آیا کاربر هنوز به برنامه شما اجازه می دهد تا این اطلاعات را دریافت کند.
هنگام به روزرسانی سطح API هدف در دستگاه های Android 10 ، دسترسی به آن ابطال شد
موردی را در نظر بگیرید که برنامه شما از قبل روی دستگاهی که Android 10 را اجرا می کند نصب شده باشد. اگر برنامه خود را برای هدف قرار دادن Android 10 در این شرایط به روز کنید ، دستگاه اجازه ACCESS_BACKGROUND_LOCATION
باطل می کند.
برای کسب اطلاعات بیشتر در مورد نحوه بازیابی مکان دستگاه در حالی که برنامه شما در پس زمینه است ، به راهنمای دریافت به روزرسانی های دوره ای موقعیت مکانی مراجعه کنید.
محدودیت در شروع فعالیت ها از پس زمینه
با شروع در اندروید 10 ، سیستم محدودیت هایی را برای شروع فعالیت ها از پس زمینه قرار می دهد. این تغییر رفتار به به حداقل رساندن وقفه برای کاربر کمک می کند و کاربر را بیشتر کنترل می کند که در صفحه نمایش آنها نشان داده شده است. تا زمانی که برنامه شما فعالیت ها را به عنوان نتیجه مستقیم تعامل کاربر شروع کند ، برنامه شما به احتمال زیاد تحت تأثیر این محدودیت ها قرار نمی گیرد.
برای کسب اطلاعات بیشتر در مورد جایگزین توصیه شده برای شروع فعالیت ها از پس زمینه ، به راهنمای نحوه هشدار دادن به کاربران از رویدادهای حساس به زمان در برنامه خود مراجعه کنید.
شناسه ها و داده ها
در این بخش تغییرات خاص برای کار با شناسه های دستگاه و داده ها ذکر شده است.
حذف وابستگی مخاطبین
با شروع در Android 10 ، این پلتفرم اطلاعات مربوط به وابستگی مخاطبین را پیگیری نمی کند. در نتیجه ، اگر برنامه شما در مخاطبین کاربر جستجو کند ، نتایج با فرکانس تعامل سفارش نمی شوند.
راهنمای مربوط به ContactsProvider
حاوی یک اخطار است که زمینه ها و روش های خاص را که در همه دستگاه ها که از Android 10 شروع می شوند ، منسوخ می کنند ، توصیف می کند.
تصادفی آدرس MAC
در دستگاه هایی که Android 10 یا بالاتر را اجرا می کنند ، سیستم به طور پیش فرض آدرس های MAC تصادفی را منتقل می کند.
اگر برنامه شما یک مورد استفاده از سازمانی را کنترل می کند ، این پلتفرم API را برای چندین عملیات مربوط به آدرس های MAC فراهم می کند:
- به دست آوردن آدرس MAC تصادفی: برنامه های مالک دستگاه و برنامه های مالک پروفایل می توانند آدرس MAC تصادفی شده را که به یک شبکه خاص اختصاص داده شده است با تماس با
getRandomizedMacAddress()
بازیابی کنید. - آدرس MAC واقعی ، کارخانه را بدست آورید: برنامه های مالک دستگاه می توانند با فراخوانی
getWifiMacAddress()
آدرس MAC سخت افزاری واقعی دستگاه را بازیابی کنند. این روش برای ردیابی ناوگان دستگاه ها مفید است.
محدودیت در دسترسی به /proc /سیستم فایل خالص
در دستگاه هایی که Android 10 یا بالاتر را اجرا می کنند ، برنامه ها نمی توانند به /proc/net
دسترسی پیدا کنند ، که شامل اطلاعات مربوط به حالت شبکه دستگاه است. برنامه هایی که نیاز به دسترسی به این اطلاعات دارند ، مانند VPN ، باید از کلاس NetworkStatsManager
یا ConnectivityManager
استفاده کنند.
محدودیت در شناسه های دستگاه غیر قابل تهیه
با شروع در Android 10 ، برنامه ها باید برای دسترسی به شناسه های غیر قابل تعیین دستگاه ، که شامل IMEI و شماره سریال است ، مجوز ممتاز READ_PRIVILEGED_PHONE_STATE
داشته باشند.
روشهای آسیب دیده شامل موارد زیر است:
-
Build
-
TelephonyManager
اگر برنامه شما مجوز ندارد و به هر حال سعی می کنید اطلاعاتی در مورد شناسه های غیر قابل مقاوم درآورد ، پاسخ این پلتفرم بر اساس نسخه SDK Target متفاوت است:
- اگر برنامه شما Android 10 یا بالاتر را هدف قرار دهد ،
SecurityException
رخ می دهد. - اگر برنامه شما Android 9 (سطح API 28) یا پایین تر را هدف قرار دهد ، اگر برنامه مجوز
READ_PHONE_STATE
را داشته باشد ، این روش داده هایnull
یا مکان نگهدارنده را برمی گرداند. در غیر این صورت ،SecurityException
رخ می دهد.
بسیاری از موارد استفاده نیازی به شناسه دستگاه های غیر قابل تهیه ندارند. به عنوان مثال ، اگر برنامه شما از شناسه دستگاه های غیر قابل رزرو برای اهداف ردیابی یا تجزیه و تحلیل کاربر استفاده می کند ، به جای آن از شناسه تبلیغاتی Android برای آن موارد استفاده خاص استفاده کنید . برای کسب اطلاعات بیشتر ، به بهترین روشها برای شناسه های منحصر به فرد مراجعه کنید.
دسترسی محدود به داده های کلیپ بورد
مگر اینکه برنامه شما ویرایشگر روش ورودی پیش فرض (IME) باشد یا برنامه ای که در حال حاضر تمرکز دارد ، برنامه شما نمی تواند به داده های کلیپ بورد در Android 10 یا بالاتر دسترسی پیدا کند.
محافظت از شماره سریال دستگاه USB
اگر برنامه شما Android 10 یا بالاتر را هدف قرار داده است ، برنامه شما نمی تواند شماره سریال را بخواند تا زمانی که کاربر اجازه دسترسی به برنامه USB یا لوازم جانبی را صادر کند.
برای کسب اطلاعات بیشتر در مورد کار با دستگاه های USB ، به راهنمای نحوه پیکربندی میزبان USB مراجعه کنید.
دوربین و اتصال
در این بخش تغییرات خاص برای ابرداده دوربین و API های اتصال ذکر شده است.
محدودیت در دسترسی به جزئیات دوربین و ابرداده
Android 10 وسعت اطلاعاتی را که روش getCameraCharacteristics()
به طور پیش فرض باز می گرداند تغییر می دهد. به طور خاص ، برنامه شما برای دسترسی به ابرداده بالقوه خاص دستگاه که در مقدار بازگشت این روش درج شده است ، باید مجوز CAMERA
را داشته باشد.
برای کسب اطلاعات بیشتر در مورد این تغییرات ، به بخش مربوط به زمینه های دوربین که نیاز به مجوز دارند ، مراجعه کنید.
محدودیت در فعال کردن و غیرفعال کردن Wi-Fi
برنامه هایی که Android 10 یا بالاتر را هدف قرار می دهند ، نمی توانند Wi-Fi را فعال یا غیرفعال کنند. روش WifiManager.setWifiEnabled()
همیشه false
برمی گردد.
اگر نیاز دارید کاربران را برای فعال کردن و غیرفعال کردن Wi-Fi سوق دهید ، از پانل تنظیمات استفاده کنید.
محدودیت در دسترسی مستقیم به شبکه های Wi-Fi پیکربندی شده
برای محافظت از حریم خصوصی کاربر ، پیکربندی دستی لیست شبکه های Wi-Fi به برنامه های سیستم و کنترل کننده های خط مشی دستگاه (DPC) محدود می شود. DPC داده شده می تواند صاحب دستگاه یا صاحب پروفایل باشد.
اگر برنامه شما Android 10 یا بالاتر را هدف قرار دهد ، و این یک برنامه سیستم یا DPC نیست ، پس روشهای زیر داده های مفیدی را برمی گردانند:
روش
getConfiguredNetworks()
همیشه یک لیست خالی را برمی گرداند.هر روش عملکرد شبکه که یک مقدار عدد صحیح را برمی گرداند
addNetwork()
وupdateNetwork()
-همیشه بازگشت -1.هر عملیات شبکه ای که یک مقدار بولی را برمی گرداند
removeNetwork()
،reassociate()
،enableNetwork()
،disableNetwork()
،reconnect()
وdisconnect()
راfalse
.
اگر برنامه شما نیاز به اتصال به شبکه های Wi-Fi دارد ، از روشهای جایگزین زیر استفاده کنید:
- برای ایجاد اتصال محلی فوری به یک شبکه Wi-Fi ، از
WifiNetworkSpecifier
در یک شیء استانداردNetworkRequest
استفاده کنید. - برای افزودن شبکه های Wi-Fi برای در نظر گرفتن دسترسی به اینترنت به کاربر ، با اشیاء
WifiNetworkSuggestion
کار کنید. می توانید با تماس باaddNetworkSuggestions()
وremoveNetworkSuggestions()
به ترتیب ، شبکه هایی را که در گفتگوی انتخاب شبکه Auto-Connect ظاهر می شوند ، اضافه و حذف کنید. این روشها به مجوزهای مکان احتیاج ندارند.
برخی از تلفن های تلفنی ، بلوتوث ، Wi-Fi به مجوز مکان خوب نیاز دارند
اگر برنامه شما Android 10 یا بالاتر را هدف قرار داده است ، برای استفاده از چندین روش در API های Wi-Fi ، Wi-Fi یا بلوتوث ، باید مجوز ACCESS_FINE_LOCATION
داشته باشد. در بخش های زیر کلاس ها و روش های آسیب دیده ذکر شده است.
تلفن
-
TelephonyManager
-
getCellLocation()
-
getAllCellInfo()
-
requestNetworkScan()
-
requestCellInfoUpdate()
-
getAvailableNetworks()
-
getServiceState()
-
-
TelephonyScanManager
-
requestNetworkScan()
-
-
TelephonyScanManager.NetworkScanCallback
-
onResults()
-
-
PhoneStateListener
-
onCellLocationChanged()
-
onCellInfoChanged()
-
onServiceStateChanged()
-
وای فای
-
WifiManager
-
startScan()
-
getScanResults()
-
getConnectionInfo()
-
getConfiguredNetworks()
-
-
WifiAwareManager
-
WifiP2pManager
-
WifiRttManager
بلوتوث
-
BluetoothAdapter
-
startDiscovery()
-
startLeScan()
-
-
BluetoothAdapter.LeScanCallback
-
BluetoothLeScanner
-
startScan()
-
مجوزها
در این بخش به روزرسانی های مدل مجوزهای اندرویدی توضیح داده شده است.
دسترسی محدود به محتوای صفحه
برای محافظت از محتوای صفحه نمایش کاربران ، Android 10 با تغییر دامنه READ_FRAME_BUFFER
، CAPTURE_VIDEO_OUTPUT
و CAPTURE_SECURE_VIDEO_OUTPUT
از دسترسی خاموش به محتوای صفحه دستگاه جلوگیری می کند. از نظر Android 10 ، این مجوزها فقط دسترسی به امضای هستند.
برنامه هایی که نیاز به دسترسی به محتوای صفحه نمایش دستگاه دارند ، باید از API MediaProjection
استفاده کنند ، که سریعاً از کاربر درخواست رضایت می کند.
بررسی مجوز کاربر در برنامه های میراث
اگر برنامه شما Android 5.1 (API سطح 22) یا پایین تر را هدف قرار داده است ، کاربران هنگام استفاده از برنامه شما بر روی دستگاهی که برای اولین بار Android 10 یا بالاتر را اجرا می کند ، صفحه مجوزها را مشاهده می کنند ، همانطور که در شکل 1. نشان داده شده است. این صفحه به کاربران این فرصت را می دهد تا دسترسی به مجوزهایی را که قبلاً در زمان نصب به برنامه شما اعطا کرده بود ، لغو کنند.
شناخت فعالیت بدنی
Android 10 مجوز اجرای برنامه android.permission.ACTIVITY_RECOGNITION
را برای برنامه هایی که نیاز به تشخیص تعداد مرحله کاربر یا طبقه بندی فعالیت بدنی کاربر مانند پیاده روی ، دوچرخه سواری یا جابجایی در وسیله نقلیه را معرفی می کنند. این به گونه ای طراحی شده است که از نحوه استفاده از داده های سنسور دستگاه در تنظیمات استفاده می کند.
برخی از کتابخانه ها در Google Play Services ، مانند API تشخیص فعالیت و API Google FIT ، نتیجه ای ارائه نمی دهند ، مگر اینکه کاربر این مجوز را به برنامه شما اعطا کرده باشد.
تنها سنسورهای داخلی در دستگاهی که شما را به اعلام این مجوز نیاز دارند ، سنسورهای پیشخوان و مرحله ردیاب هستند.
اگر برنامه شما Android 9 (API سطح 28) یا پایین تر را هدف قرار داده است ، سیستم به صورت خودکار android.permission.ACTIVITY_RECOGNITION
به برنامه شما ، در صورت لزوم ، اگر برنامه شما هر یک از شرایط زیر را برآورده کند:
- پرونده مانیفست شامل مجوز
com.google.android.gms.permission.ACTIVITY_RECOGNITION
است. - پرونده مانیفست شامل مجوز
android.permission.ACTIVITY_RECOGNITION
نیست .
اگر سیستم-AUTO به android.permission.ACTIVITY_RECOGNITION
اجازه دهد ، برنامه شما پس از بروزرسانی برنامه خود برای هدف قرار دادن Android 10 ، مجوز را حفظ می کند. با این حال ، کاربر می تواند در هر زمان در تنظیمات سیستم این مجوز را لغو کند.
گروه های مجوز از UI حذف شدند
از نظر Android 10 ، برنامه ها نمی توانند نحوه گروه بندی مجوزها در UI را جستجو کنند.
،Android 10 (API سطح 29) تعدادی از ویژگی ها و تغییرات رفتار را برای محافظت بهتر از حریم خصوصی کاربران معرفی می کند. این تغییرات شفافیت و کنترل کاربران نسبت به داده های خود و قابلیت های ارائه شده به برنامه ها را افزایش می دهد. این ویژگی ها ممکن است به معنای این باشد که رفتارهای خاص یا داده هایی که برنامه شما به برنامه شما بستگی دارد ممکن است در مقایسه با نسخه های قدیمی تر این سیستم عامل متفاوت رفتار کند. اگر برنامه شما بهترین شیوه های فعلی برای دستیابی به داده های کاربر را دنبال کند ، تأثیرات روی برنامه شما باید حداقل باشد.
در این صفحه خلاصه ای از هر تغییر ذکر شده است.
تغییرات برتر
این بخش شامل تغییرات کلیدی در اندروید 10 مربوط به حریم خصوصی است.
دسترسی به ذخیره سازی خارجی به پرونده ها و رسانه ها وارد شده است
به طور پیش فرض ، به برنامه هایی که Android 10 و بالاتر را هدف قرار می دهند ، دسترسی Scoped به ذخیره سازی خارجی یا ذخیره سازی Scoped داده می شوند. چنین برنامه هایی می توانند انواع زیر را در یک دستگاه ذخیره سازی خارجی مشاهده کنند بدون اینکه نیاز به درخواست مجوزهای مربوط به ذخیره سازی داشته باشند:
- پرونده های موجود در دایرکتوری خاص برنامه ، با استفاده از
getExternalFilesDir()
قابل دسترسی است. - عکس ها ، فیلم ها و کلیپ های صوتی که برنامه از فروشگاه رسانه ایجاد کرده است.
برای کسب اطلاعات بیشتر در مورد ذخیره سازی Scoped و همچنین نحوه اشتراک ، دسترسی و اصلاح پرونده هایی که در دستگاه های ذخیره سازی خارجی ذخیره می شوند ، به راهنماهای نحوه مدیریت پرونده ها در ذخیره سازی خارجی و دسترسی و تغییر پرونده های رسانه ای مراجعه کنید.
دسترسی به مکان دستگاه در پس زمینه نیاز به اجازه دارد
برای پشتیبانی از کنترل اضافی که کاربران از دسترسی یک برنامه به اطلاعات موقعیت مکانی برخوردار هستند ، Android 10 مجوز ACCESS_BACKGROUND_LOCATION
را معرفی می کند.
بر خلاف مجوزهای ACCESS_FINE_LOCATION
و ACCESS_COARSE_LOCATION
، مجوز ACCESS_BACKGROUND_LOCATION
فقط در هنگام اجرای در پس زمینه ، دسترسی یک برنامه به مکان را تحت تأثیر قرار می دهد. در نظر گرفته می شود که یک برنامه در پس زمینه به مکان دسترسی پیدا کند مگر اینکه یکی از شرایط زیر راضی باشد:
- فعالیتی متعلق به برنامه قابل مشاهده است.
این برنامه یک سرویس پیش زمینه را اجرا می کند که نوع خدمات پیش زمینه
location
اعلام کرده است.برای اعلام نوع سرویس پیش زمینه برای یک سرویس در برنامه خود ،
targetSdkVersion
برنامه خود را بر روی29
یا بالاترcompileSdkVersion
کنید. در مورد چگونگی ادامه خدمات پیش زمینه می توانند اقدامات مبتنی بر کاربر را که نیاز به دسترسی به مکان دارند ، ادامه دهید .
اگر برنامه شما Geofences را ایجاد و نظارت می کند و Android 10 (API سطح 29) یا بالاتر را هدف قرار می دهد ، باید اجازه ACCESS_BACKGROUND_LOCATION
اعلام کنید.
دسترسی به صورت خودکار هنگام هدف قرار دادن Android 9 یا پایین
اگر برنامه شما روی Android 10 یا بالاتر اجرا شود اما Android 9 (API سطح 28) یا پایین تر را هدف قرار می دهد ، این سیستم عامل رفتار زیر را اعمال می کند:
- اگر برنامه شما یک عنصر
<uses-permission>
را برایACCESS_FINE_LOCATION
یاACCESS_COARSE_LOCATION
اعلام کند ، سیستم به طور خودکار یک عنصر<uses-permission>
را برایACCESS_BACKGROUND_LOCATION
در هنگام نصب اضافه می کند. - اگر برنامه شما درخواست
ACCESS_FINE_LOCATION
یاACCESS_COARSE_LOCATION
را دارد ، سیستم به طور خودکارACCESS_BACKGROUND_LOCATION
به درخواست اضافه می کند.
دسترسی به دستگاه به Android 10 دسترسی پیدا کنید
اگر کاربر به دسترسی برنامه شما به مکان دستگاه-یا ACCESS_COARSE_LOCATION
یا ACCESS_FINE_LOCATION
اعطا می کند-سپس دستگاه خود را از Android 9 به Android 10 ارتقا می دهد ، سیستم به طور خودکار مجموعه ای از مجوزهای مبتنی بر مکان را که به برنامه شما اعطا می شود ، به روز می کند. مجموعه مجوزهایی که برنامه شما پس از بروزرسانی دریافت می کند بستگی به نسخه SDK هدف آن و مجوزهای تعریف شده آن دارد ، همانطور که در جدول زیر نشان داده شده است:
جدول 1. تغییر در حالت مجوز مکان پس از به روزرسانی دستگاه به Android 10
نسخه پلت فرم هدف | درشت یا ریز مجوز اعطا شده است؟ | مجوز پس زمینه تعریف شده در مانیفست؟ | حالت اجازه پیش فرض به روز شده |
---|---|---|---|
اندروید 10 | بله | بله | پیش زمینه و دسترسی به پس زمینه |
اندروید 10 | بله | خیر | فقط دسترسی پیش زمینه |
اندروید 10 | خیر | (نادیده گرفته شده توسط سیستم) | بدون دسترسی |
Android 9 یا پایین | بله | به طور خودکار توسط سیستم در زمان ارتقاء دستگاه اضافه می شود | پیش زمینه و دسترسی به پس زمینه |
Android 9 یا پایین | خیر | (نادیده گرفته شده توسط سیستم) | بدون دسترسی |
توجه داشته باشید که کاربر می تواند این سطح از دسترسی را حتی پس از اینکه سیستم به طور خودکار دسترسی برنامه شما به مکان دستگاه را به روز می کند ، تغییر دهد. به عنوان مثال ، کاربر ممکن است دسترسی برنامه شما را فقط به پیش زمینه کاهش دهد یا دسترسی را به طور کامل ابطال کند. قبل از تلاش برای دسترسی به مکان دستگاه ، به ویژه در یک سرویس پیش زمینه ، برنامه شما باید بررسی کند که آیا کاربر هنوز به برنامه شما اجازه می دهد تا این اطلاعات را دریافت کند.
هنگام به روزرسانی سطح API هدف در دستگاه های Android 10 ، دسترسی به آن ابطال شد
موردی را در نظر بگیرید که برنامه شما از قبل روی دستگاهی که Android 10 را اجرا می کند نصب شده باشد. اگر برنامه خود را برای هدف قرار دادن Android 10 در این شرایط به روز کنید ، دستگاه اجازه ACCESS_BACKGROUND_LOCATION
باطل می کند.
برای کسب اطلاعات بیشتر در مورد نحوه بازیابی مکان دستگاه در حالی که برنامه شما در پس زمینه است ، به راهنمای دریافت به روزرسانی های دوره ای موقعیت مکانی مراجعه کنید.
محدودیت در شروع فعالیت ها از پس زمینه
با شروع در اندروید 10 ، سیستم محدودیت هایی را برای شروع فعالیت ها از پس زمینه قرار می دهد. این تغییر رفتار به به حداقل رساندن وقفه برای کاربر کمک می کند و کاربر را بیشتر کنترل می کند که در صفحه نمایش آنها نشان داده شده است. تا زمانی که برنامه شما فعالیت ها را به عنوان نتیجه مستقیم تعامل کاربر شروع کند ، برنامه شما به احتمال زیاد تحت تأثیر این محدودیت ها قرار نمی گیرد.
برای کسب اطلاعات بیشتر در مورد جایگزین توصیه شده برای شروع فعالیت ها از پس زمینه ، به راهنمای نحوه هشدار دادن به کاربران از رویدادهای حساس به زمان در برنامه خود مراجعه کنید.
شناسه ها و داده ها
در این بخش تغییرات خاص برای کار با شناسه های دستگاه و داده ها ذکر شده است.
حذف وابستگی مخاطبین
با شروع در Android 10 ، این پلتفرم اطلاعات مربوط به وابستگی مخاطبین را پیگیری نمی کند. در نتیجه ، اگر برنامه شما در مخاطبین کاربر جستجو کند ، نتایج با فرکانس تعامل سفارش نمی شوند.
راهنمای مربوط به ContactsProvider
حاوی یک اخطار است که زمینه ها و روش های خاص را که در همه دستگاه ها که از Android 10 شروع می شوند ، منسوخ می کنند ، توصیف می کند.
تصادفی آدرس MAC
در دستگاه هایی که Android 10 یا بالاتر را اجرا می کنند ، سیستم به طور پیش فرض آدرس های MAC تصادفی را منتقل می کند.
اگر برنامه شما یک مورد استفاده از سازمانی را کنترل می کند ، این پلتفرم API را برای چندین عملیات مربوط به آدرس های MAC فراهم می کند:
- به دست آوردن آدرس MAC تصادفی: برنامه های مالک دستگاه و برنامه های مالک پروفایل می توانند آدرس MAC تصادفی شده را که به یک شبکه خاص اختصاص داده شده است با تماس با
getRandomizedMacAddress()
بازیابی کنید. - آدرس MAC واقعی ، کارخانه را بدست آورید: برنامه های مالک دستگاه می توانند با فراخوانی
getWifiMacAddress()
آدرس MAC سخت افزاری واقعی دستگاه را بازیابی کنند. این روش برای ردیابی ناوگان دستگاه ها مفید است.
محدودیت در دسترسی به /proc /سیستم فایل خالص
در دستگاه هایی که Android 10 یا بالاتر را اجرا می کنند ، برنامه ها نمی توانند به /proc/net
دسترسی پیدا کنند ، که شامل اطلاعات مربوط به حالت شبکه دستگاه است. برنامه هایی که نیاز به دسترسی به این اطلاعات دارند ، مانند VPN ، باید از کلاس NetworkStatsManager
یا ConnectivityManager
استفاده کنند.
محدودیت در شناسه های دستگاه غیر قابل تهیه
با شروع در Android 10 ، برنامه ها باید برای دسترسی به شناسه های غیر قابل تعیین دستگاه ، که شامل IMEI و شماره سریال است ، مجوز ممتاز READ_PRIVILEGED_PHONE_STATE
داشته باشند.
روشهای آسیب دیده شامل موارد زیر است:
-
Build
-
TelephonyManager
اگر برنامه شما مجوز ندارد و به هر حال سعی می کنید اطلاعاتی در مورد شناسه های غیر قابل مقاوم درآورد ، پاسخ این پلتفرم بر اساس نسخه SDK Target متفاوت است:
- اگر برنامه شما Android 10 یا بالاتر را هدف قرار دهد ،
SecurityException
رخ می دهد. - اگر برنامه شما Android 9 (سطح API 28) یا پایین تر را هدف قرار دهد ، اگر برنامه مجوز
READ_PHONE_STATE
را داشته باشد ، این روش داده هایnull
یا مکان نگهدارنده را برمی گرداند. در غیر این صورت ،SecurityException
رخ می دهد.
بسیاری از موارد استفاده نیازی به شناسه دستگاه های غیر قابل تهیه ندارند. به عنوان مثال ، اگر برنامه شما از شناسه دستگاه های غیر قابل رزرو برای اهداف ردیابی یا تجزیه و تحلیل کاربر استفاده می کند ، به جای آن از شناسه تبلیغاتی Android برای آن موارد استفاده خاص استفاده کنید . برای کسب اطلاعات بیشتر ، به بهترین روشها برای شناسه های منحصر به فرد مراجعه کنید.
دسترسی محدود به داده های کلیپ بورد
مگر اینکه برنامه شما ویرایشگر روش ورودی پیش فرض (IME) باشد یا برنامه ای که در حال حاضر تمرکز دارد ، برنامه شما نمی تواند به داده های کلیپ بورد در Android 10 یا بالاتر دسترسی پیدا کند.
محافظت از شماره سریال دستگاه USB
اگر برنامه شما Android 10 یا بالاتر را هدف قرار داده است ، برنامه شما نمی تواند شماره سریال را بخواند تا زمانی که کاربر اجازه دسترسی به برنامه USB یا لوازم جانبی را صادر کند.
برای کسب اطلاعات بیشتر در مورد کار با دستگاه های USB ، به راهنمای نحوه پیکربندی میزبان USB مراجعه کنید.
دوربین و اتصال
در این بخش تغییرات خاص برای ابرداده دوربین و API های اتصال ذکر شده است.
محدودیت در دسترسی به جزئیات دوربین و ابرداده
Android 10 وسعت اطلاعاتی را که روش getCameraCharacteristics()
به طور پیش فرض باز می گرداند تغییر می دهد. به طور خاص ، برنامه شما برای دسترسی به ابرداده بالقوه خاص دستگاه که در مقدار بازگشت این روش درج شده است ، باید مجوز CAMERA
را داشته باشد.
برای کسب اطلاعات بیشتر در مورد این تغییرات ، به بخش مربوط به زمینه های دوربین که نیاز به مجوز دارند ، مراجعه کنید.
محدودیت در فعال کردن و غیرفعال کردن Wi-Fi
برنامه هایی که Android 10 یا بالاتر را هدف قرار می دهند ، نمی توانند Wi-Fi را فعال یا غیرفعال کنند. روش WifiManager.setWifiEnabled()
همیشه false
برمی گردد.
اگر نیاز دارید کاربران را برای فعال کردن و غیرفعال کردن Wi-Fi سوق دهید ، از پانل تنظیمات استفاده کنید.
محدودیت در دسترسی مستقیم به شبکه های Wi-Fi پیکربندی شده
برای محافظت از حریم خصوصی کاربر ، پیکربندی دستی لیست شبکه های Wi-Fi به برنامه های سیستم و کنترل کننده های خط مشی دستگاه (DPC) محدود می شود. DPC داده شده می تواند صاحب دستگاه یا صاحب پروفایل باشد.
اگر برنامه شما Android 10 یا بالاتر را هدف قرار دهد ، و این یک برنامه سیستم یا DPC نیست ، پس روشهای زیر داده های مفیدی را برمی گردانند:
روش
getConfiguredNetworks()
همیشه یک لیست خالی را برمی گرداند.هر روش عملکرد شبکه که یک مقدار عدد صحیح را برمی گرداند
addNetwork()
وupdateNetwork()
-همیشه بازگشت -1.هر عملیات شبکه ای که یک مقدار بولی را برمی گرداند
removeNetwork()
،reassociate()
،enableNetwork()
،disableNetwork()
،reconnect()
وdisconnect()
راfalse
.
اگر برنامه شما نیاز به اتصال به شبکه های Wi-Fi دارد ، از روشهای جایگزین زیر استفاده کنید:
- برای ایجاد اتصال محلی فوری به یک شبکه Wi-Fi ، از
WifiNetworkSpecifier
در یک شیء استانداردNetworkRequest
استفاده کنید. - برای افزودن شبکه های Wi-Fi برای در نظر گرفتن دسترسی به اینترنت به کاربر ، با اشیاء
WifiNetworkSuggestion
کار کنید. می توانید با تماس باaddNetworkSuggestions()
وremoveNetworkSuggestions()
به ترتیب ، شبکه هایی را که در گفتگوی انتخاب شبکه Auto-Connect ظاهر می شوند ، اضافه و حذف کنید. این روشها به مجوزهای مکان احتیاج ندارند.
برخی از تلفن های تلفنی ، بلوتوث ، Wi-Fi به مجوز مکان خوب نیاز دارند
اگر برنامه شما Android 10 یا بالاتر را هدف قرار داده است ، برای استفاده از چندین روش در API های Wi-Fi ، Wi-Fi یا بلوتوث ، باید مجوز ACCESS_FINE_LOCATION
داشته باشد. در بخش های زیر کلاس ها و روش های آسیب دیده ذکر شده است.
تلفن
-
TelephonyManager
-
getCellLocation()
-
getAllCellInfo()
-
requestNetworkScan()
-
requestCellInfoUpdate()
-
getAvailableNetworks()
-
getServiceState()
-
-
TelephonyScanManager
-
requestNetworkScan()
-
-
TelephonyScanManager.NetworkScanCallback
-
onResults()
-
-
PhoneStateListener
-
onCellLocationChanged()
-
onCellInfoChanged()
-
onServiceStateChanged()
-
وای فای
-
WifiManager
-
startScan()
-
getScanResults()
-
getConnectionInfo()
-
getConfiguredNetworks()
-
-
WifiAwareManager
-
WifiP2pManager
-
WifiRttManager
بلوتوث
-
BluetoothAdapter
-
startDiscovery()
-
startLeScan()
-
-
BluetoothAdapter.LeScanCallback
-
BluetoothLeScanner
-
startScan()
-
مجوزها
در این بخش به روزرسانی های مدل مجوزهای اندرویدی توضیح داده شده است.
دسترسی محدود به محتوای صفحه
برای محافظت از محتوای صفحه نمایش کاربران ، Android 10 با تغییر دامنه READ_FRAME_BUFFER
، CAPTURE_VIDEO_OUTPUT
و CAPTURE_SECURE_VIDEO_OUTPUT
از دسترسی خاموش به محتوای صفحه دستگاه جلوگیری می کند. از نظر Android 10 ، این مجوزها فقط دسترسی به امضای هستند.
برنامه هایی که نیاز به دسترسی به محتوای صفحه نمایش دستگاه دارند ، باید از API MediaProjection
استفاده کنند ، که سریعاً از کاربر درخواست رضایت می کند.
بررسی مجوز کاربر در برنامه های میراث
اگر برنامه شما Android 5.1 (API سطح 22) یا پایین تر را هدف قرار داده است ، کاربران هنگام استفاده از برنامه شما بر روی دستگاهی که برای اولین بار Android 10 یا بالاتر را اجرا می کند ، صفحه مجوزها را مشاهده می کنند ، همانطور که در شکل 1. نشان داده شده است. این صفحه به کاربران این فرصت را می دهد تا دسترسی به مجوزهایی را که قبلاً در زمان نصب به برنامه شما اعطا کرده بود ، لغو کنند.
شناخت فعالیت بدنی
Android 10 مجوز اجرای برنامه android.permission.ACTIVITY_RECOGNITION
را برای برنامه هایی که نیاز به تشخیص تعداد مرحله کاربر یا طبقه بندی فعالیت بدنی کاربر مانند پیاده روی ، دوچرخه سواری یا جابجایی در وسیله نقلیه را معرفی می کنند. این به گونه ای طراحی شده است که از نحوه استفاده از داده های سنسور دستگاه در تنظیمات استفاده می کند.
برخی از کتابخانه ها در Google Play Services ، مانند API تشخیص فعالیت و API Google FIT ، نتیجه ای ارائه نمی دهند ، مگر اینکه کاربر این مجوز را به برنامه شما اعطا کرده باشد.
تنها سنسورهای داخلی در دستگاهی که شما را به اعلام این مجوز نیاز دارند ، سنسورهای پیشخوان و مرحله ردیاب هستند.
اگر برنامه شما Android 9 (API سطح 28) یا پایین تر را هدف قرار داده است ، سیستم به صورت خودکار android.permission.ACTIVITY_RECOGNITION
به برنامه شما ، در صورت لزوم ، اگر برنامه شما هر یک از شرایط زیر را برآورده کند:
- پرونده مانیفست شامل مجوز
com.google.android.gms.permission.ACTIVITY_RECOGNITION
است. - پرونده مانیفست شامل مجوز
android.permission.ACTIVITY_RECOGNITION
نیست .
اگر سیستم-AUTO به android.permission.ACTIVITY_RECOGNITION
اجازه دهد ، برنامه شما پس از بروزرسانی برنامه خود برای هدف قرار دادن Android 10 ، مجوز را حفظ می کند. با این حال ، کاربر می تواند در هر زمان در تنظیمات سیستم این مجوز را لغو کند.
گروه های مجوز از UI حذف شدند
از نظر Android 10 ، برنامه ها نمی توانند نحوه گروه بندی مجوزها در UI را جستجو کنند.