2011-07-20 23 views
13

मैं सोच रहा था कि कुछ "onXXXXX" कॉल-बैक विधि के माध्यम से पता लगाने का कोई तरीका है या कोई अन्य प्रक्रिया मेरे ऐप के डिस्प्ले के स्क्रीन-शॉट लेने के बारे में है या नहीं। उदाहरण के लिए यदि एसडीके टूल्स या कुछ अन्य स्क्रीन कैप्चरिंग ऐप "स्क्रीन कैप्चर" करता है, तो मुझे अधिसूचित करना होगा और फिर तय करना होगा कि मुझे स्क्रीन कैप्चर की अनुमति या अनुमति देना चाहिए या नहीं।एंड्रॉइड ऐप्स में स्क्रीन कैप्चर को रोकें

यदि यह संभव नहीं है तो प्रदर्शन को लॉक करने का कोई तरीका है ताकि कोई अन्य प्रक्रिया मेरे प्रदर्शन को कैप्चर नहीं कर सके?

उत्तर

5

एंड्रॉइड पर किसी अन्य ऐप का स्क्रीनशॉट लेने के लिए no supported method है। एकमात्र तरीकों में या तो एसडीके को रूट करने या उपयोग करने में शामिल है, जो दोनों आप को अवरुद्ध करने या अधिसूचना प्राप्त करने का कोई मौका नहीं देते हैं। यदि कोई अन्य ऐप आपके स्क्रीनशॉट लेता है, तो यह डिफ़ॉल्ट रूप से गैर-समर्थित विधियों का उपयोग करके होता है और संभवतया इसे पसंद करता है।

मैं यह स्पष्ट करना चाहता हूं कि मैं यह नहीं कह रहा हूं कि आपको अपने ऐप को सुरक्षित करने के लिए उपलब्ध किसी भी तरीके का उपयोग नहीं करना चाहिए। मैं आपको बस इतना बता रहा हूं कि गैर-समर्थित विधियों का उपयोग किए बिना ऐसा करना असंभव है, और यदि आप उनका उपयोग करते हैं तो भी आप स्क्रीनशॉट के खिलाफ 100% सुरक्षित नहीं हो सकते हैं।

+0

दरअसल, आधिकारिक स्रोतों में ऐसी क्षमता की शुरुआत होती है, और यह गैर-रूट ऐप्स द्वारा कई विक्रेता उपकरणों पर उपयोग करने योग्य है। –

+0

फिर भी, ये तब तक आधिकारिक नहीं हैं जब तक कि वे एपीआई दस्तावेज में न हों। मैं बस इतना कह रहा हूं कि स्क्रीनशॉट लेने की कोई भी विधि वर्तमान में असमर्थित या सीधे एसडीके से है, इसलिए इसके साथ बातचीत करने की कोई आधिकारिक विधि नहीं है। –

+0

'View.getDrawingCache (बूलियन ऑटोस्केल) 'के बारे में क्या? डॉक्टर पढ़ता है: _ बिटमैप को रीटर्न्स करता है जिसमें यह व्यूइंग ड्रॉइंग कैश किया जाता है ._ – iDroid

18

यह एक सैमसंग टैब 2 7 "

पर मेरे लिए काम किया the following approach का उपयोग करना, बस विंडो झंडे

public class FlagSecureTestActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

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

    setContentView(R.layout.main); 
    } 
} 
चेतावनी है कि आप को बदलने की जरूरत हो सकती है के साथ

को FLAG_SECURE जोड़ने के लिए

LayoutParams 

से

WindowManager.LayoutParams 
+0

यह काम करता है और अधिकांश डेवलपर्स के लिए जवाब होना चाहिए। –

+0

लैंडस्केप मोड के साथ 7.0 में काम नहीं कर रहा है .. –

संबंधित मुद्दे