手机已经ROOT exec("su")还是报错

雕·不懒惰 2018-07-26 11:50:24
手机已经ROOT,在CMD窗口、Terminal都可以执行
try {
Process process = Runtime.getRuntime().exec("su");---------就这是句报错
DataOutputStream out = new DataOutputStream(process.getOutputStream());
out.writeBytes(“reboot \n”);
out.writeBytes("exit\n");
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
还是报下面的错
java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null
at java.lang.ProcessManager.exec(ProcessManager.java:211)
at java.lang.Runtime.exec(Runtime.java:174)
at java.lang.Runtime.exec(Runtime.java:247)
at java.lang.Runtime.exec(Runtime.java:190)
at cn.mdisplay.admin3d.DeviceUtil.restart_device(DeviceUtil.java:80)
at cn.mdisplay.admin3d.MainActivity.onViewClicked(MainActivity.java:52)
at cn.mdisplay.admin3d.MainActivity_ViewBinding$4.doClick(MainActivity_ViewBinding.java:72)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
at android.view.View.performClick(View.java:5265)
at android.view.View$PerformClick.run(View.java:21527)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
Caused by: java.io.IOException: Permission denied
at java.lang.ProcessManager.exec(Native Method)
at java.lang.ProcessManager.exec(ProcessManager.java:209)
... 18 more

如果是应用没有ROOT权限的话,在运行报错的那句的时候也应该弹申请ROOT权限的弹窗的,然而并没有,怎么破啊啊啊......
...全文
1774 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bro_xuan 2019-12-05
  • 打赏
  • 举报
回复
引用 9 楼 ff很爱很爱你 的回复:
哥们,你这个问题现在解决了吗,我的问题也是:执行 Runtime.getRuntime().exec("su"); 这句就直接报错 java.io.IOException: Cannot run program "/system/xbin/su": error=13, Permission denied,我的设备是Pad (确认Pad已经 Root ),系统是7.0 ,分享一下吧,非常感谢


我也是这个问题。怎么解决,老哥。
志尊宝 2019-03-26
  • 打赏
  • 举报
回复
我也出现这个问题,不过我是用的两块主板一个是4.4,另一个是7.1,权限什么的都配置好了,也出现这个问题,后来发现是串口号的问题,你可以修改试试
小米粒123 2019-03-21
  • 打赏
  • 举报
回复
这个是别人的解决方法,不知道高版本的还适不适用,原来和思路是对的。android 5之后就不能用了
https://blog.csdn.net/kangear/article/details/51872653
破草 2018-12-05
  • 打赏
  • 举报
回复
大哥,你目前解决了吗?我目前只能进入shell来手动打开操作,但正式使用不现实,望告知
雕·不懒惰 2018-09-19
  • 打赏
  • 举报
回复
引用 9 楼 u012072188 的回复:
哥们,你这个问题现在解决了吗,我的问题也是:执行 Runtime.getRuntime().exec("su"); 这句就直接报错 java.io.IOException: Cannot run program "/system/xbin/su": error=13, Permission denied,我的设备是Pad (确认Pad已经 Root ),系统是7.0 ,分享一下吧,非常感谢


没法搞 手机系统是定制的,需要系统开放APP获取ROOT权限,说是已经root过了,用各种ROOT工具就是提示手机没有ROOT,也ROOT不了
ff很爱很爱你 2018-09-18
  • 打赏
  • 举报
回复
哥们,你这个问题现在解决了吗,我的问题也是:执行 Runtime.getRuntime().exec("su"); 这句就直接报错 java.io.IOException: Cannot run program "/system/xbin/su": error=13, Permission denied,我的设备是Pad (确认Pad已经 Root ),系统是7.0 ,分享一下吧,非常感谢
雕·不懒惰 2018-07-27
  • 打赏
  • 举报
回复
引用 6 楼 qq_33451426 的回复:
[quote=引用 2 楼 congzi529163036 的回复:]
在manifest下加入这个 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>看看,然后你是怎么调用这个的?把这个封装在一个类里面,然后调用// 申请root权限
String apkRoot="chmod 777 "+getPackageCodePath();
SystemManager.RootCommand(apkRoot); 打开应用应该就能正常弹出申请权限的对话框的,除非你手机上有其它软件禁用其弹出消息了


<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>加了这个权限还是没有弹窗
process = Runtime.getRuntime().exec("su"); 这句就直接报错
java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null
手机已经ROOT了,是厂商的新手机 ,6.0的[/quote]

凌乱了 ,我改用虚拟机
5.1的 process = Runtime.getRuntime().exec("su")报错 process = Runtime.getRuntime().exec("sh")正常
6.0的 process = Runtime.getRuntime().exec("su")报错 process = Runtime.getRuntime().exec("sh")无任何响应
雕·不懒惰 2018-07-27
  • 打赏
  • 举报
回复
引用 2 楼 congzi529163036 的回复:
在manifest下加入这个 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>看看,然后你是怎么调用这个的?把这个封装在一个类里面,然后调用// 申请root权限
String apkRoot="chmod 777 "+getPackageCodePath();
SystemManager.RootCommand(apkRoot); 打开应用应该就能正常弹出申请权限的对话框的,除非你手机上有其它软件禁用其弹出消息了


<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>加了这个权限还是没有弹窗
process = Runtime.getRuntime().exec("su"); 这句就直接报错
java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null
手机已经ROOT了,是厂商的新手机 ,6.0的
雕·不懒惰 2018-07-27
  • 打赏
  • 举报
回复
MD,打系统签名包....各种方法都试了就是不行
  • 打赏
  • 举报
回复
可能还是全县上面出现了一点问题吧
踏雪飞狐 2018-07-26
  • 打赏
  • 举报
回复
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myPermission();
// 申请root权限
String apkRoot="chmod 777 "+getPackageCodePath();
SystemManager.RootCommand(apkRoot);
}
}仅供参考,希望对你有用
踏雪飞狐 2018-07-26
  • 打赏
  • 举报
回复
public class SystemManager extends Activity {
public static boolean RootCommand(String command)
{
Process process = null;
DataOutputStream os = null;
try
{
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (Exception e)
{
Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage());
return false;
} finally
{
try
{
if (os != null)
{
os.close();
}
process.destroy();
} catch (Exception e)
{
}
}
Log.d("*** DEBUG ***", "Root SUC ");
return true;
}
}
踏雪飞狐 2018-07-26
  • 打赏
  • 举报
回复
在manifest下加入这个 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>看看,然后你是怎么调用这个的?把这个封装在一个类里面,然后调用// 申请root权限
String apkRoot="chmod 777 "+getPackageCodePath();
SystemManager.RootCommand(apkRoot); 打开应用应该就能正常弹出申请权限的对话框的,除非你手机上有其它软件禁用其弹出消息了
雕·不懒惰 2018-07-26
  • 打赏
  • 举报
回复
有没有大神给点意见啊

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧