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

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

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

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

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

যখন আপনি Android 13 বা তার পরবর্তী ভার্সনগুলিকে টার্গেট করেন, তখন বিবেচনা করুন যে আপনার অ্যাপটি কখনও 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 অনুমতির প্রয়োজন হয়, এমনকি যখন আপনার অ্যাপটি Android 13 বা তার উচ্চতর সংস্করণকে লক্ষ্য করে। উদাহরণগুলির মধ্যে 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 গুলি পরীক্ষা করুন

যদি আপনার অ্যাপটি Android 13 বা তার উচ্চতর ভার্সনের জন্য তৈরি হয়, তাহলে আপনাকে নিম্নলিখিত যেকোনো Wi-Fi API-তে কল করার জন্য NEARBY_WIFI_DEVICES অনুমতি ঘোষণা করতে হবে:

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

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

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

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

চিত্র ২. ১২L (এপিআই লেভেল ৩২) বা তার কম টার্গেট করে এমন একটি অ্যাপ ওয়াই-ফাই তথ্য অ্যাক্সেস করতে পারে কিনা তা নির্ধারণের জন্য ফ্লো চার্ট।