दिलचस्प पोस्ट
वास्तव में एमईएफ एक डि आईओसी कंटेनर क्यों नहीं है? वास्तव में गूगल क्रोम एक्सटेंशन में स्टाइलशीट को अलग कैसे करें? यह निर्धारित करने के लिए कि किस निर्भरता Google Play OpenSSL चेतावनी का कारण बनती है? वेक्टर, स्ट्रैक्ट्स और एसटीडी :: ढूंढें ट्विटर बूटस्ट्रैप पर आधारित, उत्तरदायी डिजाइन में द्रव या निश्चित ग्रिड प्रणाली सी ++ वर्चुअल / शुद्ध वर्चुअल समझाया क्या कोणीय मार्गों के वैकल्पिक पैरामीटर मान हैं? पर्ल झंडे -पी, -पीआई, -पी, -वा, -डी, -i, -टी? कैसे async फ़ंक्शन कॉल को एक सिंक समारोह में Node.js या Javascript में लपेटें? क्या मुझे ऑब्जेक्ट literals या constructor functions का उपयोग करना चाहिए? अधिकतम राशि के साथ submatrix हो रही है? LINQ में एकाधिक "ऑर्डर" ओपनसीवी बिंदु (एक्स, वाई) (स्तंभ, पंक्ति) या (पंक्ति, स्तंभ) का प्रतिनिधित्व करते हैं document.write () दस्तावेज़ को अधिलेखित कर रहा है? आप IDisposable और आईओसी के साथ कैसे सुलझ सकते हैं?

रनटाइम.एक्सएसी (): एंड्रॉइड में रिबूट करें?

मैं एक ऐसे समाधान की तलाश कर रहा हूं जिसका उपयोग रूटेड डिवाइस को रिबूट करने के लिए किया जा सकता है। मुझे पता है कि युक्ति को रिबूट करना उपयोगकर्ता के लिए बहुत खराब डिज़ाइन है, जैसा कि यहां बताया गया है , और वास्तव में किसी एप्लिकेशन के लिए नहीं है मुख्य उद्देश्य अपने परीक्षणों के दौरान फोन रिबूट करना है (मैं एक वीडियो चैट एप्लिकेशन पर काम करता हूं, और कभी-कभी मुझे रीबूट करने की आवश्यकता होती है जब सब कुछ दक्षिण में जाता है)

मैंने देखा कि फ़ोन को रिबूट करना ACTION_REBOOT के साथ रिबूट की सामान्यता से गुजरने की तुलना में टर्मिनल ( adb shell या कनेक्टबॉट उदाहरण के लिए) में रिबूट का बहुत दूर है , कि मैं वैसे भी उपयोग नहीं कर सकता।

फिलहाल, मैं सुपरयुजर विशेषाधिकार प्राप्त करने में सक्षम हूं, साथ में

 Process root = Runtime.getRuntime().exec("su"); 

लेकिन मैं वास्तविक रिबूट नहीं कर सकता मैं जी 1 (एचटीसी) और गैलेक्सी एस (सैमसंग) पर बिना किसी सफलता के प्रयास करता हूं। मैं /system/bin/reboot में रिबूट निष्पादन योग्य स्थित है

मेरे कुछ प्रयास यहां दिए गए हैं:

 Process reboot = Runtime.getRuntime().exec("/system/bin/reboot"); Process reboot = Runtime.getRuntime().exec("reboot"); Process reboot = Runtime.getRuntime().exec("su reboot"); 

मैं रनटाइम। एक्सएसी () के नुकसान के बारे में इस लेख को पढ़ता हूं, लेकिन मुझे लगता है कि मैं इस मामले में नहीं हूं।

कनेक्टबॉट का उपयोग करने से मुझे ऐसी कार्रवाई करने में सक्षम हो जाता है, मुझे पूरा यकीन है कि यह संभव है। कृपया मुझे बताने के लिए और कनेक्टबॉट कोड को न देखें , यह एक बड़ी और जटिल परियोजना है 🙂

क्या आप इस मुद्दे के साथ मेरी मदद कर सकते हैं?

धन्यवाद।

वेब के समाधान से एकत्रित समाधान "रनटाइम.एक्सएसी (): एंड्रॉइड में रिबूट करें?"

रिबूट Android में ठीक काम करता है आप संभवतः runtime.exec () ठीक से नहीं कर रहे हैं आप को संभालने की जरूरत है

  public static void rebootSU() { Runtime runtime = Runtime.getRuntime(); Process proc = null; OutputStreamWriter osw = null; StringBuilder sbstdOut = new StringBuilder(); StringBuilder sbstdErr = new StringBuilder(); String command="/system/bin/reboot"; try { // Run Script proc = runtime.exec("su"); osw = new OutputStreamWriter(proc.getOutputStream()); osw.write(command); osw.flush(); osw.close(); } catch (IOException ex) { ex.printStackTrace(); } finally { if (osw != null) { try { osw.close(); } catch (IOException e) { e.printStackTrace(); } } } try { if (proc != null) proc.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } sbstdOut.append(ReadBufferedReader(new InputStreamReader(proc .getInputStream()))); sbstdErr.append(ReadBufferedReader(new InputStreamReader(proc .getErrorStream()))); if (proc.exitValue() != 0) { } } 

अंत में खोज के कुछ हफ्तों के बाद:

 Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot now"}); 

मुझे लगता है मैं प्रोग्राम को रीबूट नहीं कर सकता

इसके अलावा, मैं टर्मिनल एमुलेटर ऐप का इस्तेमाल करते हुए अपने एंड्रॉइड फोन पर एक टर्मिनल विंडो खोल सकता हूं, टाइप करें, रूट एक्सेस के लिए # प्रॉम्प्ट प्राप्त करें और फिर "#reboot" टाइप करें और मुझे "अनुमति नहीं है" प्रतिक्रिया मिलती है!

कोई सुझाव?

ठीक है, कभी नहीं, मैंने इसे सोचा। एचटीसी फोन पर रिबूट कमांड एसयू रूट एक्सेस के साथ भी काम नहीं करेगा रिबूट कमांड को करने के लिए बुशबॉक्स को आह्वान करने की आवश्यकता है

यह कोड सैमसंग गैलेक्सी एस 2, एस 4, सोनी एक्सपीरिया एस (एलटीआई 26) पर काम करता है।

 public static void rebootDevice() { try { Process process = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("reboot \n"); } catch (Throwable t) {t.printStackTrace;} } 

लंबे समय तक संघर्ष के बाद मुझे काम का समाधान मिला।

यदि आपके सिस्टम को सीरियल पोर्ट का इस्तेमाल किया जाता है तो कमांड के नीचे चलाया जाता है,

 Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot now"}); 

यदि सामान्य पोर्ट का उपयोग करें तो नीचे दिए गए आदेश को कम करें

 Runtime.getRuntime().exec(new String[]{"/system/xbin/su","-c","reboot now"}); 

अंतर केवल /bin और /xbin

तो ऐसा कोड कर सकता है अगर पहले कमांड अपवाद छोड़ दें तो दूसरा निष्पादित करें।