उद्देश्य
कुछ स्थितियों में, हमें अपने एप्लिकेशन के स्क्रीनशॉट लेने की अनुमति नहीं देनी चाहिए। यह उदाहरण दर्शाता है कि ऐप के बैकग्राउंड में जाने पर Android को स्क्रीनशॉट लेने से कैसे रोकें।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2: लेआउट XML जोड़ें
निम्न कोड को res/layout/activity_main.xml में जोड़ें:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:id="@+id/parent"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/openYoutube"
android:text="Open youtube application"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
ऊपर के कोड में, हमने कुछ सैंपल व्यू के लिए TextView लिया है।
चरण 3: MainActivity जावा कोड जोड़ें
निम्न कोड को src/MainActivity.java में जोड़ें:
package com.example.andy.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.WindowManager;
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
setContentView(R.layout.activity_main);
}
}
स्क्रीनशॉट रोकने का कोड समझाया गया
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
ऊपर के कोड में हमने पैरेंट विंडो के लिए फ्लैग्स एड किए हैं ताकि वर्तमान एक्टिविटी पर स्क्रीनशॉट रोका जा सके।
ऐप चलाएं
अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में प्रोजेक्ट की एक्टिविटी फाइल खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और डिफ़ॉल्ट स्क्रीन देखें:

परिणाम में, हम स्क्रीनशॉट लेने की कोशिश कर रहे हैं, यह ब्लैंक परिणाम देता है।
महत्वपूर्ण नोट्स
FLAG_SECUREविंडो को सिक्योर बनाता है - स्क्रीनशॉट, स्क्रीन रिकॉर्डिंग, और रीसेंट ऐप्स प्रीव्यू ब्लॉक हो जाते हैं।- यह सेटिंग प्रति-एक्टिविटी है - प्रत्येक एक्टिविटी में अलग से सेट करना पड़ता है।
- बैंकिंग, पासवर्ड मैनेजर, और संवेदनशील डेटा वाले ऐप्स के लिए उपयोगी।
- Android 8.0+ में
setContentProtection()भी उपलब्ध है।