কাছাকাছি Wi-Fi ডিভাইসগুলি অ্যাক্সেস করার অনুমতির অনুরোধ করুন৷

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

অনুমতি নিকটবর্তী ডিভাইস গ্রুপের একটি অংশ।

NEARBY_WIFI_DEVICES পারমিশনটি Nearby devices পারমিশন গ্রুপের একটি অংশ। Android 12 (API লেভেল 31)-এ যুক্ত হওয়া এই গ্রুপটিতে Bluetooth এবং Ultra-wideband সম্পর্কিত পারমিশনও অন্তর্ভুক্ত রয়েছে। যখন আপনি এই পারমিশন গ্রুপ থেকে যেকোনো পারমিশনের সমন্বয়ের জন্য অনুরোধ করেন, তখন সিস্টেম একটিমাত্র রানটাইম ডায়ালগ দেখায় এবং ব্যবহারকারীকে কাছাকাছি থাকা ডিভাইসগুলোতে আপনার অ্যাপের অ্যাক্সেস অনুমোদন করতে বলে। সিস্টেম সেটিংসে, ব্যবহারকারীকে Nearby devices পারমিশনগুলো একটি গ্রুপ হিসেবে চালু এবং বন্ধ করতে হবে; উদাহরণস্বরূপ, ব্যবহারকারীরা কোনো নির্দিষ্ট অ্যাপের জন্য Wi-Fi অ্যাক্সেস বন্ধ রেখে Bluetooth অ্যাক্সেস চালু রাখতে পারবেন না।

দৃঢ়ভাবে দাবি করুন যে আপনার অ্যাপ ভৌতিক অবস্থান নির্ণয় করে না।

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

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

পূর্ববর্তী সংস্করণ এবং কিছু API-এর জন্য অবস্থানের অনুমতি প্রয়োজন।

আপনার অ্যাপটি অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে টার্গেট করলেও, বেশ কিছু Wi-Fi API-এর জন্য ACCESS_FINE_LOCATION পারমিশন প্রয়োজন হয়। উদাহরণস্বরূপ, WifiManager ক্লাসের নিম্নলিখিত মেথডগুলো উল্লেখ করা যায়:

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

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

যেসব API-এর জন্য অনুমতির প্রয়োজন, সেগুলো পরীক্ষা করুন।

আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে টার্গেট করে, তাহলে নিম্নলিখিত যেকোনো Wi-Fi API কল করার জন্য আপনাকে অবশ্যই NEARBY_WIFI_DEVICES পারমিশনটি ডিক্লেয়ার করতে হবে:

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

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

চিত্র ১. অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) বা তার উচ্চতর সংস্করণকে লক্ষ্য করে তৈরি কোনো অ্যাপ ওয়াই-ফাই তথ্য অ্যাক্সেস করতে পারবে কি না, তা নির্ধারণ করার ফ্লো চার্ট।

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

চিত্র ২. 12L (API লেভেল 32) বা তার চেয়ে নিম্ন স্তরের কোনো অ্যাপ Wi-Fi তথ্য অ্যাক্সেস করতে পারবে কি না, তা নির্ধারণ করার ফ্লো চার্ট।