Sunday 15 January 2012

Execute commands via C code in Android -


मैं स्क्रीनशॉट कमांड "adb shell / system / bin / screencap -p / sdcard / img निष्पादित करना चाहता हूं Png " में सी। मैं उसी के लिए खोज रहा था और मुझे मिल गया और मैंने

  execl (" / system / bin / screencap "," -p "के रूप में कमांड को संशोधित किया है) "भंडारण / sdcard0 / स्क्रीनशॉट.png", (चार *) नल);   

लेकिन जब मैं अपना आवेदन और कॉल कमांड की कॉल विधि चलाता हूं, तो आवेदन क्रैश हो जाता है।

मैं " / system / bin / screencap को कैसे संशोधित करूँ? -p /sdcard/img.png "सी कोड से चलाने के लिए कमांड


टॉम के उत्तर के बाद अपडेट

एप्लिकेशन को फिर से बंद हो रहा है और यहां लॉग है

  06-21 11: 52: 01.488: I / विंडोस्टेट (279): जीतना: विंडो {40fed2c0 u0 com.mytest.ndktestapplication / com.mytest.ndktestapplication.MainActivity} 06-21 11: 52: 01.498: आई / गतिविधिमैनेजर (279): प्रक्रिया com.mytest.ndktestapplication ( Pid 7745) मर गया है। 06-21 11: 52: 01.498: डब्ल्यू / एक्टिविटी मैनेजर (279): गतिविधि रीकॉर्ड को हटाने के लिए मजबूर करें {40ea9ab8 u0 com.mytest.ndktestapplication / .MainActivity}: एप मर गया, कोई सहेजी हुई स्थिति नहीं    

यह फ़ैमिली फ़ंक्शन के अपेक्षित परिणाम है।

वे क्या करते हैं बदलें निर्दिष्ट एक के साथ वर्तमान कार्यक्रम तो अलविदा ऐप।

इससे बचने के लिए आपको सबसे पहले फोर्क () कॉल करने की आवश्यकता होगी, और उसके बाद केवल child में exec () को कॉल करें, ऐसा कुछ:

  अगर (! फोर्क ()) {// फोर्क ()) शून्य लौटा, तो हम बच्चा execl में हैं ...}   

आपको कॉल करने से पहले कुछ सफाई भी करनी पड़ सकती है Exec फ़ंक्शन।

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

No comments:

Post a Comment