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

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

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

বিশেষ করে, আপনার অ্যাপে নিম্নলিখিত বিষয়গুলো নিশ্চিত করুন:

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

গোপনীয়তা ড্যাশবোর্ড

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

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

ডেটা অ্যাক্সেসের যৌক্তিকতা দেখান

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

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

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

    আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১২ বা তার উচ্চতর সংস্করণকে টার্গেট করে, তাহলে আপনাকে অবশ্যই 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 অ্যাকশন সম্বলিত ইন্টেন্ট ফিল্টারটি যোগ করেন, তাহলে প্রাইভেসি ড্যাশবোর্ড স্ক্রিনে যখনই আপনার অ্যাপটি প্রদর্শিত হবে, ব্যবহারকারীরা আপনার অ্যাপের নামের পাশে আইকনটি দেখতে পাবেন।

যখন ব্যবহারকারীরা ওই আইকনটি নির্বাচন করেন, তখন আপনার অ্যাপের যৌক্তিকতা বিশ্লেষণ কার্যক্রমটি শুরু হয়।

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

সূচক

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

সূচকগুলির স্ক্রিন অবস্থান শনাক্ত করুন

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

কোটলিন

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

টগল

দ্রুত সেটিংস টাইলগুলিতে 'ক্যামেরা অ্যাক্সেস' এবং 'মাইক অ্যাক্সেস' লেবেল দেওয়া আছে।
চিত্র ৩। কুইক সেটিংস-এ থাকা মাইক্রোফোন ও ক্যামেরা টগল।

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

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

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

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

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

কোনো ডিভাইস মাইক্রোফোন এবং ক্যামেরা টগল সমর্থন করে কিনা তা পরীক্ষা করতে, নিম্নলিখিত কোড স্নিপেটে প্রদর্শিত লজিকটি যোগ করুন:

কোটলিন

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);