मुझे एक ऐप मिला है जिसे एसडीकार्ड से/system/media/में फ़ाइल की प्रतिलिपि बनाने के लिए कुछ खोल कमांड का उपयोग करना है। इसे रूट की आवश्यकता होगी, और मैं रूट डिवाइस पर परीक्षण कर रहा हूं। मैं शेल कमांड निष्पादित करने के लिए रनटाइम का उपयोग कर रहा हूं, लेकिन यह काम नहीं कर रहा है। यहाँ क्या मैं अपने runtimesएंड्रॉइड पर जावा कोड हालांकि शैल कमांड चल रहा है?
public void RunAsRoot{String[] commands = {"sysrw", "rm /data/local/bootanimation.zip", "sysro"};{
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : commands) {
os.writeBytes(tmpCmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
}
के लिए एप्लिकेशन को अभी भी मिल गया है लेकिन मेरे logcat केवल पता चलता उनमें से दो को अस्वीकार कर दिया हो रही है नहीं
07-30 03:14:11.112: WARN/su(3593): request rejected (10047->0 /system/bin/sh)
07-30 03:14:11.132: DEBUG/su(3592): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell /system/bin/sh : sh
07-30 03:14:11.152: WARN/su(3594): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.182: WARN/su(3595): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.202: WARN/su(3596): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.242: DEBUG/su(3597): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell /system/bin/sh : sh
उन दो नज़र sysrw और sysro आदेशों होने के लिए, फिर भी है जब मैं इस कोड को ट्रिगर करता हूं तो रूट अनुमति मांगता है। मैं रूट सामान के साथ काम करने के लिए नया हूं और मुझे लगता है कि यह काम करने के लिए कैसे प्राप्त किया जा सकता है।
public void RunAsRoot(String[] cmds){
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : cmds) {
os.writeBytes(tmpCmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
}
जहां तार की एक सरणी में पारित, प्रत्येक स्ट्रिंग एक आदेश की जरूरत है कि जा रहा है निष्पादित किया जाना है:
क्या मुझे इस नमूने की एक कार्यप्रणाली मिल सकती है? –
यह मेरे लिए काम नहीं कर रहा है और मुझे जावा में कोई फ़ाइल नॉटफाउंड अपवाद या कुछ भी नहीं मिल रहा है। इसके अलावा, सुपरएसयू रूट अनुरोध को रोकता है और मैं इसे प्रदान करने में सक्षम हूं इसलिए मुझे पता है कि 'getRuntime() 'काम कर रहा है। किसी कारण से यह मुझे '/ system/media' फ़ोल्डर में फ़ाइलों में हेरफेर करने नहीं देगा। – anon58192932
आह ऐसा लगता है जैसे sysrw और sysro अज्ञात कमेंट हैं। – anon58192932