android - অ্যান্ড্রয়েডে স্ক্রিন ক্যাপচার কীভাবে রোধ করা যায়




security screenshot (8)

অ্যান্ড্রয়েড অ্যাপ্লিকেশনে স্ক্রিন রেকর্ডিং রোধ করা কি সম্ভব?

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


অ্যাপটি ব্যাকগ্রাউন্ডে চলে যাওয়ার পরে স্ক্রিন ক্যাপচারটিকে নিষিদ্ধ করার সময় আমি অ্যাপ্লিকেশনটিতে ম্যানুয়াল স্ন্যাপশটের অনুমতি দেওয়ার জন্য এই সমাধানটি ব্যবহার করেছি, আশা করি এটি সহায়তা করবে।

@Override
protected void onResume() {
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
    super.onResume();
}

@Override
protected void onPause() {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
    super.onPause();
}

আপনি আপনার অ্যাপ্লিকেশনটিকে ডিভাইস / প্রোফাইলের মালিক হিসাবে তৈরি করতে এবং সেট setScreenCaptureDisabled() কল করতে পারেন। docs থেকে, এই এপিআই নিম্নলিখিতগুলি করে:

সর্বজনীন শূন্য সেট স্ক্রিনক্যাপচারডিজিয়েবল (কমপোনেন্ট নেম অ্যাডমিন, বুলিয়ান অক্ষম) এপিআই স্তরের 21-এ যুক্ত হয়েছে

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

কলিং ডিভাইস প্রশাসক অবশ্যই একটি ডিভাইস বা প্রোফাইলের মালিক হতে হবে। যদি এটি না হয় তবে একটি সুরক্ষা ব্যতিক্রম নিক্ষেপ করা হবে। প্যারামিটার প্রশাসক এই ডিভাইসের সাথে কোন ডিভাইস অ্যাডমিন রিসিভার জড়িত। পর্দার ক্যাপচার অক্ষম আছে কিনা তা অক্ষম।

বিকল্পভাবে আপনি এমডিএম (মোবাইল ডিভাইস ম্যানেজমেন্ট) অংশীদার অ্যাপ্লিকেশন হতে পারেন O ডিভাইস নিয়ন্ত্রণ করতে তাদের এমডিএম অংশীদার অ্যাপ্লিকেশনগুলিতে ওআইএমগুলি অতিরিক্ত API সরবরাহ করে example উদাহরণস্বরূপ সামসং তাদের MDM অংশীদারদের জন্য ডিভাইসে স্ক্রিন রেকর্ডিং নিয়ন্ত্রণ করতে এপিআই সরবরাহ করে।

বর্তমানে আপনি কেবলমাত্র পর্দার ক্যাপচার বিধিনিষেধ প্রয়োগ করতে পারেন।


আমি সমস্ত উত্তরগুলি দেখেছি যা কেবলমাত্র একক ক্রিয়াকলাপের জন্য উপযুক্ত তবে আমার সমাধান রয়েছে যা ক্রিয়াকলাপে কোনও কোড যুক্ত না করেই ক্রিয়াকলাপের সমস্তটির জন্য স্ক্রিনশট ব্লক করবে। প্রথমে একটি কাস্টম অ্যাপ্লিকেশন শ্রেণি তৈরি করুন এবং একটি registerActivityLifecycleCallbacks লাইফসাইকেলক্যালব্যাকস যুক্ত করুন .তখন এটি আপনার ম্যানিফেস্টে নিবন্ধভুক্ত করুন।

MyApplicationContext.class

public class MyApplicationContext extends Application {
    private  Context context;
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
        setupActivityListener();
    }

    private void setupActivityListener() {
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);            }
            @Override
            public void onActivityStarted(Activity activity) {
            }
            @Override
            public void onActivityResumed(Activity activity) {

            }
            @Override
            public void onActivityPaused(Activity activity) {

            }
            @Override
            public void onActivityStopped(Activity activity) {
            }
            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            }
            @Override
            public void onActivityDestroyed(Activity activity) {
            }
        });
    }



}

স্পষ্ট

 <application
        android:name=".MyApplicationContext"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

এই অফিসিয়াল গাইড অনুসারে আপনি উইন্ডো WindowManager.LayoutParams.FLAG_SECURE আপনার উইন্ডো বিন্যাসে যুক্ত করতে পারেন এবং এটি স্ক্রিনশটগুলি অস্বীকার করবে।


কেবল এই লাইনটি যুক্ত করুন:

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

আপনার setContentView() পদ্ধতির আগে।


জাভা ব্যবহারকারীদের জন্য

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);

কোটলিন ব্যবহারকারীদের জন্য

window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)

ফটো স্ক্রিনশট সম্পর্কে, FLAG_SECURE মূলযুক্ত ডিভাইস কাজ করছে না।

তবে আপনি যদি স্ক্রিনশট ফাইলটি নিরীক্ষণ করেন তবে আপনি আসল ফাইলটি রোধ করতে পারবেন।

এই চেষ্টা করুন।

1. অ্যান্ড্রয়েড রিমোট পরিষেবা সহ স্ক্রিনশট (ফাইল মনিটর) নিরীক্ষণ
২. আসল স্ক্রিনশট চিত্র মুছুন।
৩. বিটম্যাপ ইনস্টল করুন যাতে আপনি সংশোধন করতে পারেন।


স্ক্রিন ক্যাপচারটি অক্ষম করতে:

onCreate() পদ্ধতিতে নিম্নলিখিত লাইন কোডটি যুক্ত করুন:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
                           WindowManager.LayoutParams.FLAG_SECURE);

স্ক্রিন ক্যাপচার সক্ষম করতে:

LayoutParams.FLAG_SECURE খুঁজুন LayoutParams.FLAG_SECURE এবং কোডের লাইনটি সরিয়ে দিন।






screen-capture