مجوزهای جدید بلوتوث در Android 12

Android 12 به تازگی مجوزهای BLUETOOTH_SCAN ، BLUETOOTH_ADVERTISE و BLUETOOTH_CONNECT را معرفی می کند که به برنامه شما اجازه می دهد بدون نیاز به اجازه مکان، دستگاه های اطراف را اسکن کند. برنامه شما برای بهرمندی از اعلام این مجوزها باید Android 12 باشد.
توجه: Companion Device Manager در مقایسه با مجوزهای توصیف شده در این صفحه روش ساده تری برای اتصال به دستگاه های همراه ارائه می دهد. سیستم CDM از طرف برنامه شما یک رابط کاربری جفت سازی فراهم می کند و نیازی به مجوزهای موقعیت مکانی ندارد.
مجوزهای جدید را اعلام کنید.
اگر برنامه شما با دستگاه های بلوتوث تعامل دارد، اکیداً توصیه می شود موارد زیر را انجام دهید:
  1. اگر برنامه شما به دنبال دستگاه های بلوتوث مانند وسایل جانبی کم مصرف بلوتوث (BLE) است، اجازه BLUETOOTH_SCAN را به manifest برنامه خود اضافه کنید.
  2. اگر برنامه شما دستگاه فعلی را برای سایر دستگاههای بلوتوث قابل شناسایی می کند، اجازه BLUETOOTH_ADVERTISE را به manifest برنامه خود اضافه کنید.
  3. اگر برنامه شما با دستگاه های بلوتوث از قبل جفت شده ارتباط برقرار می کند، اجازه BLUETOOTH_CONNECT را به manifest برنامه خود اضافه کنید.
  4. برای اعلامیه های مربوط به اجازه مربوط به بلوتوث قدیمی، android: maxSdkVersion را روی 30 تنظیم کنید. این مرحله سازگاری برنامه به سیستم کمک می کند تا برنامه هنگام نصب در دستگاههایی که از Android 12 استفاده می کنند، فقط به مجوزهای بلوتوث مورد نیاز برای برنامه شما اعطا کند.
قطعه کد زیر نحوه اعلام این مجوزهای جدید در برنامه شما را نشان می دهد:
<manifest>
    <!-- Request legacy Bluetooth permissions on older devices. -->
    <uses-permission android:name="android.permission.BLUETOOTH"
                     android:maxSdkVersion="30" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
                     android:maxSdkVersion="30" />

    <!-- Needed only if your app looks for Bluetooth devices.
         You must add an attribute to this permission, or declare the
         ACCESS_FINE_LOCATION permission, depending on the results when you
         check location usage in your app. -->
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

    <!-- Needed only if your app makes the device discoverable to Bluetooth
         devices. -->
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />

    <!-- Needed only if your app communicates with already-paired Bluetooth
         devices. -->
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    ...
</manifest>
User-facing dialog
مجوزهای BLUETOOTH_SCAN ، BLUETOOTH_ADVERTISE و BLUETOOTH_CONNECT مجوزهای زمان اجرا هستند. بنابراین، قبل از اینکه بخواهید به دنبال دستگاه های بلوتوث باشید، دستگاهی را برای سایر دستگاه ها قابل شناسایی کنید یا با دستگاه های بلوتوث جفت شده دیگر ارتباط برقرار کنید، باید صریحاً در برنامه خود تأیید کاربر را درخواست کنید.
وقتی برنامه شما حداقل یکی از مجوزهای بلوتوث جدید را درخواست می کند، سیستم از کاربر می خواهد که به برنامه شما اجازه دهد به دستگاه های نزدیک دسترسی پیدا کند، همانطور که در شکل 1 نشان داده شده است.

شکل 1. System permissions dialog، از کاربر می خواهد به یک برنامه اجازه کشف، تبلیغ و اتصال به دستگاه های اطراف را بدهد.
نحوه استفاده از نتایج اسکن را در نظر بگیرید
با دقت بررسی کنید که آیا برنامه شما از نتایج اسکن بلوتوث برای بدست آوردن مکان دستگاه استفاده می کند. بسته به پاسخ خود، مراحل را در یکی از بخشهای زیر انجام دهید.
  • App doesn’t derive physical location
اگر برنامه شما مکان فیزیکی ندارد، می توانید ادعای محکمی کنید که برنامه شما هرگز از مجوزهای بلوتوث برای بدست آوردن مکان فیزیکی استفاده نمی کند. برای انجام این کار، مراحل زیر را انجام دهید:
  1. ویژگی android: usePermissionFlags را به اعلامیه اجازه BLUETOOTH_SCAN خود اضافه کنید و مقدار این ویژگی را روی neverForLocation تنظیم کنید.
توجه: اگر neverForLocation را در android خود استفاده می کنید: استفاده از PermissionFlags ، برخی از چراغ های BLE از نتایج اسکن فیلتر می شوند.
  1. اگر مکان دیگری برای برنامه شما لازم نیست، اجازه ACCESS_FINE_LOCATION را از manifest برنامه خود حذف کنید.
قطعه کد زیر نحوه به روزرسانی پرونده manifest برنامه شما را نشان می دهد:
<manifest>
    <!-- Request legacy Bluetooth permissions on older devices. -->
    <uses-permission android:name="android.permission.BLUETOOTH"
                     android:maxSdkVersion="30" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
                     android:maxSdkVersion="30" />

    <!-- Include "neverForLocation" only if you can strongly assert that
         your app never derives physical location from Bluetooth scan results. -->
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN"
                     android:usesPermissionFlags="neverForLocation" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

    <!-- Not needed if you can strongly assert that your app never derives
         physical location from Bluetooth scan results and doesn't need location
         access for any other purpose. -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    ...
</manifest>
  • App derives physical location

اگر برنامه شما مکان فیزیکی دارد، باید همچنان ACCESS_FINE_LOCATION مجوز برنامه خود را اعلام کنید، همانطور که در قطعه کد زیر نشان داده شده است:

<manifest>
    <!-- Request legacy Bluetooth permissions on older devices. -->
    <uses-permission android:name="android.permission.BLUETOOTH"
                     android:maxSdkVersion="30" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
                     android:maxSdkVersion="30" />

    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

    <!-- Required if your app derives physical location from Bluetooth
         scan results. -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    ...
</manifest>

 

 

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

golaleh hoseini
مدرس دوره

golaleh hoseini

مدرس دوره های سِون کلونر

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دوره های پیشنهادی

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

مقالات پیشنهادی

اندروید

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


۷۶۶
۰
۲۹ آبان ۱۳۹۹

درباره فایل Robots.txt

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


۵۴۰
۰
۲ دی ۱۳۹۹

هک و امنیت

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


۶۹۹
۰
۱۳ آذر ۱۳۹۹

هوش مصنوعی

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


۵۷۱
۰
۱۱ آذر ۱۳۹۹