public class Screenshot extends Activity {
private static final String DATA_PATH = "/data/data/com.su.ScreenShot/";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
CopyAssets();
Button btClose = (Button) findViewById(R.id.button1);
btClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
runRootCommand("chmod 777 /data/data/com.su.ScreenShot/gsnap");
Log.v("2", "2---------------");
runRootCommand("/data/data/com.su.ScreenShot/gsnap test.jpg /dev/graphics/fb0");//使用有root权限的命令 运行gsnap的c程序
Log.v("3", "3---------------");
}
});
}
public static boolean runRootCommand(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) {
return false;
} finally {
try {
if (os != null) {
os.close();
}
process.destroy();
} catch (Exception e) {
// nothing
}
}
return true;
}
public static boolean runCommand(String command) {
Process process = null;
try {
process = Runtime.getRuntime().exec(command);
process.waitFor();
} catch (Exception e) {
return false;
} finally {
try {
process.destroy();
} catch (Exception e) {
// nothing
}
}
return true;
}
private void CopyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
}
for (int i = 0; i < files.length; i++) {
InputStream in = null;
OutputStream out = null;
try {
if (!(new File(DATA_PATH + files[i])).exists()) {
in = assetManager.open(files[i]);
out = new FileOutputStream(DATA_PATH + files[i]);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
}
} catch (Exception e) {
}
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
}
}
其实主要还是人家的c程序 我只是写了几句shell命令
赚点豆豆~
C程序的地址http://download.csdn.net/detail/sfshine/3781315
分享到:
相关推荐
android应用启动时弹窗请求root权限
修改源码让APP获取root权限可以执行su命令的git diff记录
设备系统定制,让应用获得执行root权限动作,利用socket在底层启动一个service(root权限的哦,你懂得)。现在4.4以后root越发困难了,直接集成源码的su命令是不行的。
android 获取ROOT权限工具, 手机可以删除ROM自带的无用程序,使用需要ROOT才能运行的软件
压缩包内有apk,demo源码,以及NDK 安装文档,主要是教你如何在已经root过得手机上只通过一次获取root权限,以后就再也不会弹出root授权框,主要思想是绕过superuser.apk的权限检查
不过应用程序运行命令获取ROOT权限,设备必须已破解(获得ROOT权限),代码中主要对流进行操作,有对文件读写不清楚的都可以看看。(源码采用GBK编码)。之前也介绍过一个静默卸载的项目...
Android应用源码获取root权限静默安装是一个获取root权限后,不弹出系统安装界面,直接进行安装的的源码。代码只有一个MainActivity,看起来相对比较容易,代码中重要部分都已加入详细的注释,方便大家阅读。不过...
许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简单及安全的,破解Root权限的原理就是在手机的/system/bin/或/system/xbin/...
一个应用程序的进程就是一个安全的沙盒。它不能干扰 其它应用程序,除非显式地声明了“permissions”,...应用程序需要的那 些“permissions”是静态的在程序中声明,所以他们会在程序安 装时被知晓,并不会再改变。
主要介绍了Android手机获取root权限并实现关机重启功能的方法,是Android程序设计中非常重要的技巧,需要的朋友可以参考下
不需要root权限。 单个应用程序最多支持16个安卓设备同时连接。同时支持GNU/Linux,Windows和MacOS三大主流桌面平台。 主要功能: 1、实时显示Android设备屏幕 2、实时键鼠控制Android设备 3、屏幕录制 4、截图为...
根据作者的介绍,v1.9.1能够获取任意Android版本的ROOT权限(Android 2.3.4除外)。 请一定要确认你的电脑中已经安装了USB驱动了! 还有需要拔出外置SD卡! 如果红字部分你都做到了还不能够成功ROOT的话,请尝试...
本单元实现了一个伪的Shell,可以用于在Android程序中执行Shell命令,如果需要Root权限,则在执行前,调用AskForRoot方法来获取用户的Root授权,如果不再需要在Root账号下执行命令,则调用ExitRoot方法来退出Root...
cmwrap.apk为测试用的程序,需要在root 权限下运行。 2.前提条件是已经建立了android 2.1模拟器并已经运行过。 3.用编辑器打开“first.bat”和一键“root.bat”,将temppath的值改为你的模拟器的路径, 4.在first....
权限的方法,将需要用到Root 权限的操作进行编 写,并编译成一可执行程序文件,将该文件包含在 应用程序中,应用程序通过一次su 程序授权,将 文件拷贝到/system/bin 的目录下,并修改其所 有者和所属分组为root,并...
Magisk:Android 获取 Root 权限的工具。它可以快速、无痛地获得 Android 的超级用户权限,支持 Android 5.0 以上的设备。 介绍 Magisk是一套用于定制Android的开源软件,支持高于Android 5.0的设备。 一些突出特点...
Android获取root权限,源代码,可以加到程序中使用.
总之,希望能够使自己编写的程序以root权限运行而不需要加上sudo或者切换到#提示符。 没有找到能在进程运行时提升自身权限的方法,另查到一种方法(来源见文后注释)可以实现,这两步缺一不可: (1)用root权限...