আশেপাশের ওয়াই-ফাই ডিভাইস অ্যাক্সেস করার অনুমতি চাওয়া

Android 13 (API লেভেল ৩৩) বা তার পরবর্তী ভার্সনকে টার্গেট করে এবং ওয়াই-ফাই কানেকশন ম্যানেজ করে এমন অ্যাপকে NEARBY_WIFI_DEVICES রানটাইম অনুমতির জন্য অনুরোধ করতে হবে। এই অনুমতি কোনও অ্যাপের আশেপাশের ওয়াই-ফাই ডিভাইস অ্যাক্সেস করার বিষয়টিকে আরও সহজে যুক্তিযুক্ত করে তোলে; Android-এর আগের ভার্সনে, এইসব অ্যাপকে এর পরিবর্তে ACCESS_FINE_LOCATION অনুমতি ঘোষণা করতে হত।

অনুমতি হল আশেপাশের ডিভাইস গ্রুপের অংশ

NEARBY_WIFI_DEVICES অনুমতি হল আশেপাশের ডিভাইস অনুমতি গ্রুপের অংশ। Android ১২ (API লেভেল ৩১)-এ যোগ করা এই গ্রুপে ব্লুটুথ ও আল্ট্রা-ওয়াইডব্যান্ড সম্পর্কিত অনুমতিও অন্তর্ভুক্ত আছে। আপনি এই অনুমতি গ্রুপ থেকে যেকোনও অনুমতির কম্বিনেশনের জন্য অনুরোধ করলে, সিস্টেম একটি রানটাইম ডায়ালগ দেখায় এবং ব্যবহারকারীকে আপনার অ্যাপের জন্য আশেপাশের ডিভাইসের অ্যাক্সেস অনুমোদন করতে বলে। সিস্টেম সেটিংসে, ব্যবহারকারীকে অবশ্যই গ্রুপ হিসেবে আশেপাশের ডিভাইস অনুমতি চালু এবং বন্ধ করতে হবে; উদাহরণস্বরূপ, ব্যবহারকারীরা কোনও নির্দিষ্ট অ্যাপের জন্য ওয়াই-ফাই অ্যাক্সেস বন্ধ করতে পারবেন না, তবে ব্লুটুথ অ্যাক্সেস চালু রাখতে পারবেন।

আপনার অ্যাপ যে ফিজিক্যাল লোকেশন সংগ্রহ করে না তা দৃঢ়ভাবে দাবি করুন

আপনি Android ১৩ বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করলে, আপনার অ্যাপ কখনও ওয়াই-ফাই API থেকে লোকেশন তথ্য নেয় কিনা তা বিবেচনা করুন; যদি না নেয়, তাহলে আপনাকে অবশ্যই তা জোর দিয়ে বলতে হবে। এই অ্যাসারশন করতে, আপনার অ্যাপের ম্যানিফেস্ট ফাইলে usesPermissionFlags অ্যাট্রিবিউটকে neverForLocation হিসেবে সেট করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে। এই প্রসেসটি আপনি যখন নিশ্চিত করেন যে ব্লুটুথ ডিভাইসের তথ্য লোকেশনের জন্য কখনও ব্যবহার করা হয় না, তখন আপনি যা করেন তার মতোই:

<manifest ...>
    <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
                     android:usesPermissionFlags="neverForLocation" />
    <application ...>
        ...
    </application>
</manifest>

আগের ভার্সন এবং কিছু API-এর জন্য লোকেশন সংক্রান্ত অনুমতি প্রয়োজন

আপনার অ্যাপ Android 13 বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করলেও, বেশ কয়েকটি ওয়াই-ফাই API-এর জন্য ACCESS_FINE_LOCATION অনুমতি প্রয়োজন। উদাহরণ হিসেবে WifiManager ক্লাস থেকে নিম্নলিখিত পদ্ধতিগুলি অন্তর্ভুক্ত করা হয়েছে:

এছাড়াও, যেহেতু NEARBY_WIFI_DEVICES অনুমতি শুধুমাত্র Android ১৩ এবং তার পরবর্তী ভার্সনে উপলভ্য, তাই আপনার অ্যাপে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি প্রদান করার জন্য ACCESS_FINE_LOCATION-এর জন্য যেকোনও ঘোষণা রাখতে হবে। তবে, আপনার অ্যাপ অন্যথায় সুনির্দিষ্ট লোকেশন সংক্রান্ত তথ্যের উপর নির্ভর না করলে, আপনি এই অনুমতির সর্বাধিক SDK ভার্সন 32-এ সেট করতে পারেন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

<manifest ...>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
                     android:maxSdkVersion="32" />
    <application ...>
        ...
    </application>
</manifest>

যেসব API-এর জন্য অনুমতি প্রয়োজন সেগুলি চেক করুন

আপনার অ্যাপ Android 13 বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করলে, নিম্নলিখিত যেকোনও ওয়াই-ফাই API কল করার জন্য আপনাকে অবশ্যই NEARBY_WIFI_DEVICES অনুমতি ঘোষণা করতে হবে:

ওয়াই-ফাই অ্যাক্সেস ওয়ার্কফ্লো

Android ১৩ বা তার পরবর্তী ভার্সনে রান করে এমন ডিভাইসে, Android ১৩ বা তার পরবর্তী ভার্সনকে টার্গেট করে এমন অ্যাপের জন্য ওয়াই-ফাই অ্যাক্সেস ওয়ার্কফ্লো ছবি ১-এ দেখানো হয়েছে। মনে রাখবেন, যতক্ষণ আপনি দাবি করছেন যে আপনার অ্যাপ ওয়াই-ফাই ডিভাইসের তথ্য থেকে ফিজিক্যাল লোকেশন নেয় না, ততক্ষণ আপনাকে ACCESS_FINE_LOCATION অনুমতি আর ঘোষণা করতে হবে না:

ছবি ১. Android 13 (API লেভেল ৩৩) বা তার পরবর্তী ভার্সনকে টার্গেট করা কোনও অ্যাপ ওয়াই-ফাই সংক্রান্ত তথ্য অ্যাক্সেস করতে পারবে কিনা তা নির্ধারণ করার জন্য ফ্লো চার্ট।

ছবি ২-এ 12L বা তার আগের ভার্সনে চলা ডিভাইসে ওয়াই-ফাই অ্যাক্সেস ওয়ার্কফ্লো দেখানো হয়েছে। ACCESS_FINE_LOCATION অনুমতির উপর নির্ভরতা লক্ষ্য করুন।

ছবি ২. 12L (API লেভেল ৩২) বা তার আগের ভার্সনকে টার্গেট করা কোনও অ্যাপ Wi-Fi সংক্রান্ত তথ্য অ্যাক্সেস করতে পারবে কিনা তা নির্ধারণ করার জন্য ফ্লো চার্ট।