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
分享到:
相关推荐
- **root权限的替代方案**:对于一些不需要root权限就能实现的功能,开发者可以考虑使用Android系统内置的安全机制或其他替代方法来避免使用root权限。 通过以上分析,我们可以看出请求root权限是一个复杂且敏感的...
其次,获取 root 权限可以让用户安装一些需要root权限的应用程序,例如一些游戏和工具等等。 那么,谁需要获取 root 权限呢?第一类人群是黑客或喜欢对系统进行hacking的人,因为他们需要更多的控制权和自由度。第...
标题"android应用获得执行root权限动作__socket_service"表明我们要讨论如何在Android应用中通过Socket服务来实现root权限的获取。这种方式通常涉及到创建一个在系统层面运行的服务,该服务具有root权限,并通过...
在Android系统中,root权限类似于Linux系统的超级用户权限,拥有这个权限的用户可以对系统进行深度操作,包括修改系统文件、安装需要root权限的应用、优化性能、删除预装应用等。然而,这也带来了一定的风险,比如...
这个函数可以访问底层 Linux 下的程序或脚本,使 APK 具有 Root 权限,能够访问系统中需要 Root 权限才能执行的程序或脚本。 下面是一个简单的示例代码: ```java package com.visit.dialoglog; import java.io....
在Android系统中,root权限是最高级别的访问权限,允许用户对设备有全面的控制,包括修改系统文件、安装自定义固件、删除预装应用等。对于开发者来说,获取root权限能够更深入地调试和优化应用程序,而对于普通用户...
获取 root 权限后,用户可以实现许多有趣的功能,例如删除不需要的系统应用程序、自定义界面、安装第三方 ROM 等。同时,获取 root 权限也可以让用户更好地管理设备,例如控制应用程序的权限、设置系统参数等。 在...
总的来说,Android OTG USB串口通信不需要root权限,只需要正确地注册BroadcastReceiver,利用UsbManager和开源库,就可以安全、高效地实现设备间的串口数据传输。通过这样的方式,开发者可以为用户带来无需复杂设置...
由于Android系统的安全机制,大多数应用程序没有root权限,因此不能直接使用tcpdump工具进行抓包。然而,通过一些特殊的技术手段,我们可以在非root的Android设备上实现抓包功能。 首先,理解tcpdump的运行需求。...
修改源码让APP获取root权限可以执行su命令的git diff记录
本资源“安卓截图截屏相关-关于android全屏截图无需root无状态栏.rar”提供了一种方法,允许用户在不获取设备root权限的情况下实现全屏截图,并且能够隐藏状态栏,从而得到更加纯净的屏幕快照。 首先,让我们了解...
该方案的实现可以在不需要 Root 权限的情况下,实现截图的功能,对于 Android 应用程序的开发具有重要的意义。 Android 无需root截图方案的实现主要是通过反射机制和 app_process 程序来实现的。该方案可以在不需要...
然而,早期的Android版本并不直接支持这一功能,开发者需要借助第三方库或者root权限来实现。随着Android系统的发展,现在可以实现无需root权限的屏幕录制。本文将深入探讨如何在Android应用中实现这一功能,主要...
### Android权限详解与ROOT权限解析 #### 一、Android权限机制概述 Android系统基于Linux内核,因此在安全性和权限管理方面继承了Linux的一些特性,同时也加入了自己的独特机制。为了确保用户数据的安全以及应用...
在Android系统中,"root权限"是指获得手机操作系统最底层的访问权限,允许用户执行对系统文件和设置的更改,通常这些更改在普通用户模式下是不允许的。这个"android root 权限测试app"可能是为了帮助开发者或者高级...
- `su`是“Super User”的缩写,是实现ROOT权限的核心程序。它是一个二进制文件,当其他应用请求超级用户权限时,`su`会处理这些请求并控制权限的授予。 5. **风险与注意事项**: - **安全性**:开放ROOT权限可能...