আরও সংবেদনশীল তথ্যে অ্যাক্সেস ব্যাখ্যা করুন

লোকেশন, মাইক্রোফোন ও ক্যামেরা সম্পর্কিত অনুমতি আপনার অ্যাপকে ব্যবহারকারীর বিশেষভাবে সংবেদনশীল তথ্য অ্যাক্সেস করার অনুমতি দেয়। এই প্ল্যাটফর্মে বিভিন্ন মেকানিজম অন্তর্ভুক্ত আছে, যেগুলি এই পৃষ্ঠায় বর্ণনা করা হয়েছে, যাতে ব্যবহারকারীরা জানতে পারেন এবং কোন অ্যাপ লোকেশন, মাইক্রোফোন এবং ক্যামেরা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে পারেন।

গোপনীয়তা সুরক্ষিত রাখার এই সিস্টেম ফিচার, লোকেশন, মাইক্রোফোন ও ক্যামেরা সম্পর্কিত অনুমতি আপনার অ্যাপ কীভাবে ম্যানেজ করে, তার উপর কোনও প্রভাব ফেলে না, যতক্ষণ আপনি গোপনীয়তা সংক্রান্ত পেশাদার পদ্ধতি অনুসরণ করেন।

বিশেষ করে, আপনার অ্যাপে নিম্নলিখিত কাজগুলি করেছেন কিনা তা ভালভাবে দেখে নিন:

  • ব্যবহারকারী আপনার অ্যাপকে CAMERA অনুমতি না দেওয়া পর্যন্ত ডিভাইসের ক্যামেরা অ্যাক্সেস করার জন্য অপেক্ষা করুন।
  • ব্যবহারকারী আপনার অ্যাপকে RECORD_AUDIO অনুমতি না দেওয়া পর্যন্ত ডিভাইসের মাইক্রোফোন অ্যাক্সেস করার জন্য অপেক্ষা করুন।
  • ACCESS_COARSE_LOCATION অনুমতি বা ACCESS_FINE_LOCATION অনুমতির অনুরোধ করার আগে, ব্যবহারকারী আপনার অ্যাপের এমন কোনও ফিচারের সাথে ইন্টার‍্যাক্ট করা পর্যন্ত অপেক্ষা করুন যার জন্য লোকেশন প্রয়োজন, যেমন লোকেশন অনুমতির অনুরোধ কীভাবে করতে হয় সেই সংক্রান্ত গাইডে বর্ণনা করা হয়েছে।
  • ব্যবহারকারী আপনার অ্যাপকে ACCESS_COARSE_LOCATION অনুমতি বা ACCESS_FINE_LOCATION অনুমতি না দেওয়া পর্যন্ত অপেক্ষা করুন, তারপরে ACCESS_BACKGROUND_LOCATION অনুমতির জন্য অনুরোধ করুন।

প্রাইভেসি ড্যাশবোর্ড

একটি উল্লম্ব টাইমলাইন বিভিন্ন অ্যাপ দেখায় যা
         লোকেশন তথ্য অ্যাক্সেস করেছে এবং কোন সময়ে অ্যাক্সেস ঘটেছে
ছবি ১. লোকেশন ব্যবহারের স্ক্রিন, প্রাইভেসি ড্যাশবোর্ডের অংশ।

Android ১২ বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসে, সিস্টেম সেটিংসে প্রাইভেসি ড্যাশবোর্ড স্ক্রিন দেখা যায়। এই স্ক্রিনে, ব্যবহারকারীরা আলাদা আলাদা স্ক্রিন অ্যাক্সেস করতে পারবেন, যেখানে অ্যাপ কখন লোকেশন, ক্যামেরা এবং মাইক্রোফোন তথ্য অ্যাক্সেস করে তা দেখানো হয়। প্রতিটি স্ক্রিনে একটি টাইমলাইন দেখানো হয়, যেখানে বিভিন্ন অ্যাপ কখন নির্দিষ্ট ধরনের ডেটা অ্যাক্সেস করেছে তা দেখা যায়। ছবি ১-এ লোকেশন তথ্যের জন্য ডেটা অ্যাক্সেস টাইমলাইন দেখানো হয়েছে।

ডেটা অ্যাক্সেসের কারণ দেখান

আপনার অ্যাপ ব্যবহারকারীদের জন্য একটি যুক্তি প্রদান করতে পারে যাতে তারা বুঝতে পারে কেন আপনার অ্যাপ লোকেশন, ক্যামেরা বা মাইক্রোফোন তথ্য অ্যাক্সেস করে। এই যুক্তি নতুন প্রাইভেসি ড্যাশবোর্ড স্ক্রিন, আপনার অ্যাপের অনুমতি স্ক্রিন অথবা দুটিতেই দেখা যেতে পারে।

আপনার অ্যাপ কেন লোকেশন, ক্যামেরা ও মাইক্রোফোন সংক্রান্ত তথ্য অ্যাক্সেস করে তা ব্যাখ্যা করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

  1. এমন একটি অ্যাক্টিভিটি যোগ করুন যা শুরু হলে, আপনার অ্যাপ কেন নির্দিষ্ট ধরনের ডেটা অ্যাক্সেস অ্যাকশন সম্পাদন করে তার কিছু যুক্তি প্রদান করে। এই অ্যাক্টিভিটির মধ্যে, android:permission অ্যাট্রিবিউটকে START_VIEW_PERMISSION_USAGE হিসেবে সেট করুন।

    আপনার অ্যাপ Android 12 বা এর পরের যেকোনও ভার্সনকে টার্গেট করলে, আপনাকে অবশ্যই android:exported অ্যাট্রিবিউটের জন্য একটি ভ্যালু নির্ধারণ করতে হবে।

  2. নতুন যোগ করা অ্যাক্টিভিটিতে নিম্নলিখিত ইনটেন্ট ফিল্টার যোগ করুন:

    <!-- android:exported required if you target Android 12. -->
    <activity android:name=".DataAccessRationaleActivity"
              android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
              android:exported="true">
           <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on
                your app permission's page in system settings.
                VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information
                icon on the Privacy Dashboard screen. -->
        <intent-filter>
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" />
           <category android:name="android.intent.category.DEFAULT" />
           ...
        </intent-filter>
    </activity>
  3. আপনার ডেটা অ্যাক্সেস সংক্রান্ত যৌক্তিক অ্যাক্টিভিটি কী দেখাবে তা ঠিক করুন। যেমন, আপনি আপনার অ্যাপের ওয়েবসাইট বা সহায়তা কেন্দ্রের নিবন্ধ দেখাতে পারেন। আপনার অ্যাপ কোন ধরনের ডেটা অ্যাক্সেস করে এবং কখন অ্যাক্সেস করে সেই সম্পর্কে আরও বিস্তারিত ব্যাখ্যা দিতে, সিস্টেম যখন অনুমতির ব্যবহার সংক্রান্ত ইনটেন্টকে ইনভোক করে তখন সিস্টেমের অন্তর্ভুক্ত অতিরিক্ত ডেটা ম্যানেজ করুন:

    • সিস্টেম ACTION_VIEW_PERMISSION_USAGE-কে কল করলে, আপনার অ্যাপ EXTRA_PERMISSION_GROUP_NAME-এর জন্য ভ্যালু ফিরিয়ে আনতে পারবে।
    • সিস্টেম ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD চালু করলে, আপনার অ্যাপ EXTRA_PERMISSION_GROUP_NAME, EXTRA_ATTRIBUTION_TAGS, EXTRA_START_TIME এবং EXTRA_END_TIME-এর জন্য ভ্যালু ফিরিয়ে আনতে পারে।

আপনি কোন ইনটেন্ট ফিল্টার যোগ করছেন তার উপর নির্ভর করে, ব্যবহারকারীরা নির্দিষ্ট কিছু স্ক্রিনে আপনার অ্যাপের নামের পাশে তথ্যের আইকন দেখতে পাবেন:

  • আপনি যদি VIEW_PERMISSION_USAGE অ্যাকশন সহ ইনটেন্ট ফিল্টার যোগ করেন, তাহলে ব্যবহারকারীরা সিস্টেম সেটিংসের মধ্যে আপনার অ্যাপের অনুমতি পৃষ্ঠায় আইকন দেখতে পাবেন। আপনি সব রানটাইম অনুমতির ক্ষেত্রে এই অ্যাকশন প্রয়োগ করতে পারবেন।
  • আপনি যদি ইনটেন্ট ফিল্টার যোগ করেন যাতে VIEW_PERMISSION_USAGE_FOR_PERIOD অ্যাকশন থাকে, তাহলে ব্যবহারকারীরা আপনার অ্যাপের নামের পাশে আইকন দেখতে পাবেন, যখনই আপনার অ্যাপ প্রাইভেসি ড্যাশবোর্ড স্ক্রিনে দেখা যাবে।

ব্যবহারকারী সেই আইকন বেছে নিলে, আপনার অ্যাপের যৌক্তিক অ্যাক্টিভিটি শুরু হয়।

উপরের ডানদিকের কোণে একটি গোলাকার আয়তক্ষেত্র, যার মধ্যে
         একটি ক্যামেরা আইকন এবং একটি মাইক্রোফোন আইকন রয়েছে
ছবি ২. মাইক্রোফোন ও ক্যামেরা ইন্ডিকেটর, যা সাম্প্রতিক ডেটা অ্যাক্সেস দেখায়।

ইন্ডিকেটর

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

স্ক্রিনে ইন্ডিকেটরের লোকেশন শনাক্ত করুন

আপনার অ্যাপ ইমারসিভ মোড বা ফুল-স্ক্রিন UI সাপোর্ট করলে, ইন্ডিকেটরগুলি সাময়িকভাবে আপনার অ্যাপের UI-কে ওভারল্যাপ করতে পারে। এইসব ইন্ডিকেটরের সাথে আপনার UI মানিয়ে নিতে সাহায্য করার জন্য, সিস্টেম getPrivacyIndicatorBounds() পদ্ধতি নিয়ে আসে, যা নিম্নলিখিত কোড স্নিপেট দেখায়। এই API ব্যবহার করে, আপনি যেখানে ইন্ডিকেটর দেখা যেতে পারে সেই বাউন্ড শনাক্ত করতে পারবেন। আপনি হয়ত তখন আপনার স্ক্রিনের UI অন্যভাবে সাজানোর সিদ্ধান্ত নিতে পারেন।

Kotlin

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

টগল

কুইক সেটিংস টাইলে 'ক্যামেরা অ্যাক্সেস' এবং
         'মাইক অ্যাক্সেস' লেবেল করা থাকে
ছবি ৩. কুইক সেটিংসে মাইক্রোফোন ও ক্যামেরা টগল।

Android 12 বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন মানানসই ডিভাইসে, ব্যবহারকারীরা ডিভাইসের সব অ্যাপের জন্য ক্যামেরা ও মাইক্রোফোন অ্যাক্সেস একটি টগল বিকল্প প্রেস করে চালু ও বন্ধ করতে পারবেন। ব্যবহারকারীরা দ্রুত সেটিংস থেকে টগল করা যায় এমন বিকল্প অ্যাক্সেস করতে পারবেন, যেমনটি ছবি ৩-এ দেখানো হয়েছে অথবা সিস্টেম সেটিংসের গোপনীয়তা স্ক্রিন থেকে।

ক্যামেরা ও মাইক্রোফোন টগল ডিভাইসের সব অ্যাপকে প্রভাবিত করে:

  • ব্যবহারকারী ক্যামেরা অ্যাক্সেস বন্ধ করে দিলে, আপনার অ্যাপ ফাঁকা ক্যামেরা ফিড পায়।
  • ব্যবহারকারী মাইক্রোফোন অ্যাক্সেস বন্ধ করে দিলে, আপনার অ্যাপ সাইলেন্ট অডিও পায়। এছাড়াও, আপনি HIGH_SAMPLING_RATE_SENSORS অনুমতি ঘোষণা করুন বা না করুন, মোশন সেন্সরের রেট-সীমিত।

ব্যবহারকারী ক্যামেরা বা মাইক্রোফোনের অ্যাক্সেস বন্ধ করে দিলে, তারপর ক্যামেরা বা মাইক্রোফোনের তথ্য অ্যাক্সেস করতে হয় এমন কোনও অ্যাপ চালু করলে, সিস্টেম ব্যবহারকারীকে মনে করিয়ে দেয় যে ডিভাইস-ব্যাপী টগল বন্ধ করা আছে।

ডিভাইস সাপোর্ট চেক করুন

কোনও ডিভাইসে মাইক্রোফোন ও ক্যামেরা টগল কাজ করে কিনা তা চেক করতে, নিম্নলিখিত কোড স্নিপেটে যে লজিক দেখানো হয়েছে তা যোগ করুন:

Kotlin

val sensorPrivacyManager = applicationContext
        .getSystemService(SensorPrivacyManager::class.java)
        as SensorPrivacyManager
val supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE)
val supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA)

জাভা

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);