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


118

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

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


8
- আপনার মনে রাখা উচিত যে বিষয়বস্তু চুরি করতে কেউ সর্বদা স্ক্রিনে একটি ক্যামেরা নির্দেশ করতে পারে - সেখানে ডিআরএম ক্ষেত্রে কিছু কৌশল ব্যবহৃত হয়েছে তবে সেগুলি বেশ জটিল এবং আমি সত্যই জানি না যে হুডের নীচে কী চলছে
শাই লেভী

9
ধারণা যে @ShaiLevy ব্যাখ্যা, সাধারণত এনালগ হোল বলা হয় en.wikipedia.org/wiki/Analog_hole কোনো মিডিয়া সংক্রমণ innevitable নিরাপত্তা গর্ত ব্যাখ্যা করে।
gusridd

উত্তর:


126

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

1) সুরক্ষিত পতাকাটি সাধারণ স্ক্রিনশট এবং ভিডিও ক্যাপচার উভয়কেই অবরুদ্ধ করে।

এছাড়াও এই লিঙ্কে ডকুমেন্টেশন বলে যে

উইন্ডো পতাকা: উইন্ডোটির সামগ্রীটি সুরক্ষিত হিসাবে বিবেচনা করুন, এটি স্ক্রিনশটগুলিতে উপস্থিত হওয়া বা সুরক্ষিত নয় এমন ডিসপ্লেতে দেখা থেকে বাধা দেয়।

উপরের সমাধান অবশ্যই অ্যাপ্লিকেশনগুলিকে আপনার অ্যাপের ভিডিও ক্যাপচার করা থেকে বিরত করবে will

উত্তর এখানে দেখুন

2) স্ক্রিন সামগ্রী ক্যাপচার বিকল্প উপায় আছে।

কোনও শিকড় ডিভাইসে বা এসডিকে ব্যবহার করে অন্য অ্যাপের পর্দা ক্যাপচার করা সম্ভব হতে পারে,

যা উভয়ই আপনাকে এটি ব্লক করা বা এর বিজ্ঞপ্তি পাওয়ার খুব কম সুযোগ দেয়।

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

উত্তর এখানে দেখুন

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

11
বা হ্যান্ডহেল্ড ক্যামেরা সহ যে কেউ সহজেই ছবিতে ক্লিক করতে পারে।
রবীন্দ্র পায়েল

68

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

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

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


11
প্রশ্ন: [উদ্ধৃতি] আমি সিকিউর ফ্ল্যাজ ব্যবহার করেছি [উদ্ধৃতি] আপনার "উত্তর": [উদ্ধৃতি] আপনি FLAG_SECure ব্যবহার করতে পারেন [প্রশ্নোত্তর] আপনি কি এখানে কোনও সমস্যা চিহ্নিত করতে পারেন?
2

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

24

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

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

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

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

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


12

জাভা ব্যবহারকারীদের জন্য আপনার উপরে এই লাইনটি লিখুন setContentView(R.layout.activity_main);

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

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

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

কোটলিনের জন্য, প্রসঙ্গের উপর নির্ভর করে ডায়ালগগুলির window?.set...কারণে এটি হওয়া উচিত , আপনি জানবেন না যে আপনার কোনও উইন্ডো আছে কিনা।
মার্টিন মার্কনকিনি

1
মূল প্রশ্নটি ইতিমধ্যে জানিয়েছে যে তারা সুরক্ষিত পতাকা ব্যবহার করেছে এবং আপনার উত্তরটি সুরক্ষিত পতাকা ব্যবহার করা। এটি পোস্ট করা প্রশ্নের উত্তর দেয় না।
সুবারু তাশিরো

10

দেখে মনে হচ্ছে আপনি কীভাবে আপনার অ্যাপ্লিকেশন থেকে স্ক্রিনশটগুলি অক্ষম করতে পারবেন এবং এতে আপনাকে আরও সহায়তা করে এমন অন্যান্য উত্তর রয়েছে। তবে আমি আপনাকে কিছু গুরুত্বপূর্ণ তথ্য দেওয়ার চেষ্টা করব যা আপনাকে কেউ দিচ্ছে না।

1) আপনার কাছে এমন অ্যাপ্লিকেশন থাকতে পারে না যা স্ক্রিনশট নেওয়া (ফটো / ভিডিও) নেওয়া থেকে 100% সুরক্ষিত । নেই কোনো আনুষ্ঠানিক ভাবে অ্যান্ড্রয়েড স্ক্রিনশটগুলির নিতে। যদি কোনও অ্যাপ্লিকেশন স্ক্রিন রেকর্ড করছে, তবে এটি অবশ্যই কিছু অসমর্থিত পদ্ধতি ব্যবহার করবে (হয় রুট করুন বা এসডিকে ব্যবহার করুন)।

কোনও অ্যাপ্লিকেশন যদি রেকর্ড স্ক্রিনগুলিতে রুট অ্যাক্সেস ব্যবহার করে তবে এটি ব্লক করার খুব কম সুযোগ রয়েছে is

2) এখানে কেউ এই সমস্যাটি উল্লেখ করেনি, তবে ব্যবহারের সময় খুব সাবধান হন WindowManager.LayoutParams.FLAG_SECURE। এটি অনেকগুলি ডিভাইসে (যেমন স্যামসাং গ্যালাক্সি এসিই, যেমন জিটি-এস5830 এর মধ্যে) যাচাই করা হয়েছে, যা পুরো ভিউ স্ক্র্যাম্বল করে। এটার মত,

এখানে চিত্র বর্ণনা লিখুন

দয়া করে এটির মতো চেক রাখুন,

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
}

এটি আইসিএস ডিভাইসে পুরোপুরি কাজ করে, তাই কোনও সমস্যা নেই।

3) আমি এটিও জানতে পেরেছিলাম যে এমনকি অ্যান্ড্রয়েড ৪.৩ এর মতো নতুন ডিভাইসেও, স্ক্রিনটি ঘোরার সময় এটি অ্যানিমেশন সমস্যা তৈরি করে। দয়া করে চেক এই বাগ রিপোর্ট।


28
ভোট পাওয়ার জন্য আপনার কেবল অন্য ব্যক্তির উত্তরগুলি অনুলিপি করা এবং আটকাতে হবে না। এবং আপনি কোথায় থেকে আপনার উত্তর অনুলিপি করেছেন তার একটি উল্লেখ উল্লেখ করুন। stackoverflow.com/a/11121897/5437621
mrid

আপনার উত্তরটি অনুলিপি এবং পেস্ট করুন, দয়া করে কোনও উত্তর উত্তর এবং অনুলিপি করবেন না। আপনি নীচের লিঙ্ক উল্লেখ থেকে এই উত্তর অনুলিপি আছে। stackoverflow.com/a/11121897/5437621
আব্দুল বাসিত

9

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

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

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

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

বিকল্পভাবে আপনি এমডিএম (মোবাইল ডিভাইস ম্যানেজমেন্ট) অংশীদার অ্যাপ্লিকেশন হয়ে উঠতে পারেন control

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


9

এটা চেষ্টা কর:

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

3
প্রশ্ন: [উদ্ধৃতি] আমি সিকিউর ফ্ল্যাজ ব্যবহার করেছি [উদ্ধৃতি] আপনার "উত্তর": [উদ্ধৃতি] আপনি FLAG_SECure ব্যবহার করতে পারেন [প্রশ্নোত্তর] আপনি কি এখানে কোনও সমস্যা চিহ্নিত করতে পারেন?
2

উইন্ডো পতাকা: উইন্ডোটির সামগ্রীটি সুরক্ষিত হিসাবে বিবেচনা করুন, এটি স্ক্রিনশটগুলিতে উপস্থিত হওয়া বা সুরক্ষিত নয় এমন ডিসপ্লেতে দেখা থেকে বাধা দেয়। সুরক্ষিত পৃষ্ঠ এবং সুরক্ষিত প্রদর্শন সম্পর্কে আরও তথ্যের জন্য FLAG_SECURE দেখুন। অবিচ্ছিন্ন মান: 8192 (0x00002000) এখান থেকে আরও পড়ুন বিকাশকারী
অ্যান্ড্রয়েড.com

আমাদের উন্নতিগুলি ফিরিয়ে দিয়ে আপনার পোস্টটিকে
অচল করে দেবেন না

8

আমি সমস্ত উত্তরগুলি দেখেছি যা কেবলমাত্র একক ক্রিয়াকলাপের জন্য উপযুক্ত তবে আমার সমাধান রয়েছে যা ক্রিয়াকলাপে কোনও কোড যুক্ত না করেই ক্রিয়াকলাপের সমস্তটির জন্য স্ক্রিনশট ব্লক করে দেবে। প্রথমে একটি কাস্টম অ্যাপ্লিকেশন শ্রেণি তৈরি করুন এবং একটি। 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">

এটা সব ক্ষেত্রে কাজ করে?
gopalanrc

আমি আমার প্রকল্পটি চেষ্টা করেছিলাম তখন এটি সমস্ত ক্রিয়াকলাপের জন্য কাজ করে। @ গোপালানর্ক
জি কে মোহাম্মদ ইমন

2

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


2

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

@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();
}

0

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

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

এই চেষ্টা এক

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.