आप जावा कोड में इस आदेश को चलाने के लिए सक्षम होना चाहिए:
Runtime.getRuntime().exec("screencap -p /sdcard/screen.png");
कुछ खोल आदेशों आप रूट बिना निष्पादित कर सकते हैं कर रहे हैं। तो आपको "सु" चलाने की आवश्यकता नहीं है। मुझे यकीन नहीं है कि क्या आप स्क्रीनकैप निष्पादित कर सकते हैं। निश्चित रूप से आपको अपने ऐप में SD_CARD को लिखने की अनुमति की आवश्यकता है।
android.permission.WRITE_EXTERNAL_STORAGE
लेकिन आप अपने स्क्रीनशॉट बनाने के लिए एंड्रॉइड एपीआई का उपयोग क्यों नहीं करते? अधिक जानकारी के लिए इस पोस्ट को स्टैक ओवरफ्लो पर पढ़ें: How to programmatically take a screenshot in Android?
लिनक्स की तरह उपयोगकर्ता आईडी पर एंड्रॉइड सुरक्षा मॉडल आधार। प्रत्येक ऐप को अपना यूज़र आईडी मिल जाता है। तो आपके ऐप में 1001 की तरह उपयोगकर्ता आईडी है। यदि आपके उपयोगकर्ता को कमांड चलाने की अनुमति है, तो अन्यथा आपको एक त्रुटि प्राप्त होगी।
संपादित करें:
आप रूट की जरूरत स्क्रीनशॉट लेने या एक प्रणाली आवेदन किया जाना है। READ_FRAME_BUFFER की अनुमति है लेकिन जब आप सिस्टम एप्लिकेशन होते हैं तो आप केवल इसे प्राप्त कर सकते हैं। यह एक सुरक्षा समस्या है जब कोई ऐप आपके डिवाइस के स्क्रीनशॉट ले सकता है।
मुझे यह API http://code.google.com/p/android-screenshot-library/ मिला है जो रूट के बिना स्क्रीनशॉट लेने का वादा करता है। मैंने इसका परीक्षण नहीं किया। पुस्तकालय एक मूल सेवा शुरू करता है जो तब आपके लिए स्क्रीनशॉट लेता है। लेकिन जब भी आपका फोन बूट होता है तो आपको सेवा को चलाने की ज़रूरत होती है। तो यह सिस्टम विशेषाधिकार प्राप्त करता है। यही कारण है कि निष्कर्ष वास्तव में आरामदायक नहीं है ...
: कोड से जड़ के बिना स्क्रीनशॉट लेने के लिए कोई अच्छा तरीका नहीं है ...
AFAIK, स्क्रीनशॉट कैप्चर करने के लिए कोई एपीआई नहीं। तो, मैं खोल कमांड के माध्यम से स्क्रीन कैप निष्पादित करने का प्रयास करता हूं। लेकिन मैं रूट अनुमति के बिना इसे निष्पादित नहीं कर सकता। –
ऐसा लगता है। कोई एपीआई नहीं है और आपको स्क्रीन कैप चलाने के लिए रूट की आवश्यकता है। मुझे यह लाइब्रेरी मिली है http://code.google.com/p/android-screenshot-library/ इसके साथ आप रूट के बिना स्क्रीनशॉट लेने में सक्षम होना चाहिए। यह एक मूल सेवा स्थापित करता है, जिसे एडब शैल के माध्यम से बूट पर शुरू किया जाता है। तो यह स्क्रीनशॉट लेने में सक्षम है। – mcia
मैंने पहले इसे आजमाया है। यह एंड्रॉइड 3.x और एंड्रॉइड 4.x पर काम नहीं करता है क्योंकि फ्रेमबफर वहां टूटा हुआ था। स्वीकार्य तरीका यह है कि शेल कमांड के माध्यम से कॉल स्क्रीनकैप (रूट परमिसन के तहत) –