| .. | .. |
|---|
| 1 | 1 | package com.jwipc.nodka_reboot_under.utils; |
|---|
| 2 | 2 | |
|---|
| 3 | 3 | import java.io.BufferedReader; |
|---|
| 4 | +import java.io.DataInputStream; |
|---|
| 4 | 5 | import java.io.DataOutputStream; |
|---|
| 5 | 6 | import java.io.File; |
|---|
| 6 | 7 | import java.io.FileNotFoundException; |
|---|
| .. | .. |
|---|
| 688 | 689 | |
|---|
| 689 | 690 | return re; |
|---|
| 690 | 691 | } |
|---|
| 692 | + |
|---|
| 693 | + public String getRootCmdSilent(String cmd) { |
|---|
| 694 | + DataOutputStream dos = null; |
|---|
| 695 | + DataInputStream dis = null; |
|---|
| 696 | + Process process = null; |
|---|
| 697 | + try { |
|---|
| 698 | + process = Runtime.getRuntime().exec("su"); |
|---|
| 699 | + dos = new DataOutputStream(process.getOutputStream()); |
|---|
| 700 | + dis = new DataInputStream(process.getInputStream()); |
|---|
| 701 | + dos.write(cmd.getBytes()); |
|---|
| 702 | + dos.flush(); |
|---|
| 703 | + dos.close(); |
|---|
| 704 | + process.waitFor(); |
|---|
| 705 | + return getStrFromDataInPutStream(dis); |
|---|
| 706 | + } catch (Exception e) { |
|---|
| 707 | + e.printStackTrace(); |
|---|
| 708 | + return null; |
|---|
| 709 | + } finally { |
|---|
| 710 | + if (dos != null) { |
|---|
| 711 | + try { |
|---|
| 712 | + dos.close(); |
|---|
| 713 | + } catch (IOException e) { |
|---|
| 714 | + e.printStackTrace(); |
|---|
| 715 | + } |
|---|
| 716 | + } |
|---|
| 717 | + if (dis != null) { |
|---|
| 718 | + try { |
|---|
| 719 | + dis.close(); |
|---|
| 720 | + } catch (IOException e) { |
|---|
| 721 | + e.printStackTrace(); |
|---|
| 722 | + } |
|---|
| 723 | + } |
|---|
| 724 | + if (process != null) { |
|---|
| 725 | + process.destroy(); |
|---|
| 726 | + } |
|---|
| 727 | + } |
|---|
| 728 | + } |
|---|
| 729 | + |
|---|
| 730 | + private String getStrFromDataInPutStream(DataInputStream dos) { |
|---|
| 731 | + if (null == dos) { |
|---|
| 732 | + return ""; |
|---|
| 733 | + } |
|---|
| 734 | + int BUFFER_SIZE = 512; |
|---|
| 735 | + byte[] buffer = new byte[BUFFER_SIZE]; |
|---|
| 736 | + StringBuilder result = new StringBuilder(); |
|---|
| 737 | + try { |
|---|
| 738 | + while (true) { |
|---|
| 739 | + int read = dos.read(buffer); |
|---|
| 740 | + if (read > 0) { |
|---|
| 741 | + result.append(new String(buffer, 0, read)); |
|---|
| 742 | + } |
|---|
| 743 | + if (read < BUFFER_SIZE) { |
|---|
| 744 | + break; |
|---|
| 745 | + } |
|---|
| 746 | + } |
|---|
| 747 | + } catch (Exception e) { |
|---|
| 748 | + e.printStackTrace(); |
|---|
| 749 | + } |
|---|
| 750 | + return result.toString(); |
|---|
| 751 | + } |
|---|
| 691 | 752 | |
|---|
| 692 | 753 | public boolean isSpiritVersion() { |
|---|
| 693 | 754 | return Build.VERSION.SDK_INT <= 25; |
|---|