android操作/system路径(移动文件)

原因:

需要隐藏手机下拉框菜单。实际就是删除/system/app/SystemUI.apk文件,即能达到隐藏效果。(不足:会使手机操作系统强制重启)

解决思路:

1.首先获取到/system挂载点所对应的设备文件

2.以root权限将其重新挂载为可读写

3.以root权限删除/system/app/SystemUI.apk文件

重点:

1.挂载/system路径为可读写 mount -o remount /dev/xxx /system

2.程序获取到root权限 su

三个主要函数:

1

输入: path 此处/system

输出: path对应的设备文件

获取设备文件

public static String getDev(String path)

2

输入:

输出:

以Root权限执行 command (先验证command能正常执行)

public static boolean runRootCommand(String command)

3

输入:

输出:

重命名文件

public static int move(String sourceFile, String destFile)

一种实现:

public static String getDev(String path) {

if(null == path)

return null;

BufferedReader in = null;

try {

Process p = Runtime.getRuntime().exec("mount");

p.waitFor();

in = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line = null;

while((line = in.readLine()) != null){

if(line.contains(path)) {

return line;

}

}

return null;

} catch (IOException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

return null;

}

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(null != os){

os.close();

}

if(null != process){

process.destroy();

}

}catch(Exception e){

e.printStackTrace();

}

}

return true;

}

//@return  0成功  -1 源文件不存  -2转移失败 -3参数错误

public static int move(String sourceFile, String destFile) {

int result = 0;

if(null == sourceFile || null == destFile)

return -3;

File sFile = new File(sourceFile);

if(!sFile.exists())//源文件不存在

return -1;

String dev = getDev("/system");

if(null != dev){

for(int i=0; i<dev.length(); i++)

System.out.println("-----------"+(int)dev.charAt(i));

String[] contents = dev.split(" ");

String command = "mount -o remount "+contents[0]+" /system";

runRootCommand(command);

System.out.println("----------"+command);

}

try{

String command = "mv "+sourceFile+" "+destFile;

runRootCommand(command);

//Process move = Runtime.getRuntime().exec("mv "+sourceFile+" "+destFile+"");

}catch(Exception e){

System.out.println("------------"+e.getMessage());

return -2;

}

File dFile = new File(destFile);

if(dFile.exists() && !sFile.exists()){

result = 0;

}else{

result = -2;

}

return result;

}

注意:手机需root

时间: 2024-11-08 20:18:15

android操作/system路径(移动文件)的相关文章

[Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)

温馨提示 建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续本节内容. 1 现象描述 基于Android L版本源码环境进行开发时,根据项目需求,APP层需要操作sys/xxx 或 proc/xxx下面的文件结点,但是会报出以下权限异常,无法直接操作这些结点 LedLightFileUtil( 4671): java.io.FileNotFoundException: /sys/c

Android入门之文件系统操作(二)文件操作相关指令

(一)获取总根 [java] view plain copy File[] fileList=File.listRoots(); //返回fileList.length为1 //fileList.getAbsolutePath()为"/" //这就是系统的总根 (二)打开总根目录 [java] view plain copy File file=new File("/"); File[] fileList=file.listFiles(); //获取的目录中除了&q

Python os模块--路径、文件、系统命令等操作

os模块包含普遍的操作系统功能. 注意:函数参数path是文件或目录的路径,filename是文件的路径,dirname是目录的路径,路径可以是相对路径,也可绝对路径 常见或重要的函数为加粗字体 os模块: os.name   返回当前操作系统名称('posix', 'nt', 'os2', 'mac', 'ce', 'riscos'),windows为'nt',linux为'posix' os.sep == os.path.sep 返回路径各部分之间的分隔符,linux是'/',windows

【php】目录、路径和文件 操作

目录操作 解析路径: basename() - 返回路径的文件名部分 获取目录部分: dirname() - 返回路径的目录部分 路径信息: pathinfo() - 返回数组(目录名,基本名,扩展名) 获取绝对路径 realpath() - 返回绝对路径或(硬链接) ** 绝对路径 很重要: - 文本打开 - 数据库连接 磁盘/目录/文件大小 文件大小: filesize() - 文件的 字节大小 磁盘可用空间: disk_free_space() - 指定目录所在磁盘分区的可用空间 磁盘总空

android 操作SD卡上的文件

(1)说明:操作SD卡上的文件需要加入以下权限 在SD卡上创建和删除文件权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 在SD卡上写入数据的权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 在sd卡上的文件操作和我上一篇文

[转]在eclipse打开的android虚拟手机,打开File Explorer,下面是空的没有data、mnt、system三个文件

在eclipse打开的android虚拟手机,打开File Explorer,下面是空的没有data.mnt.system三个文件 这是因为模拟器没有选择打开的缘故,必须首先打开一个模拟器(AVD),然后在左侧选择模拟器,右边才会出现相应的mnt等文件夹! 当我们启动起来模拟器后, 然后进入DDMS,在file Explorer中看到下面

文件操作,路径操作,StringIO和BytesIO,序列化反序列化,正则表达式与python中使用

文件操作 打开操作open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True,opener=None)打开一个文件,返回一个文件对象(流对象)和文件描述符.打开文件失败,则返回异常基本使用: 创建一个文件test,然后打开它,用完关闭文件操作中,最常用的操作就是读和写. 文件访问的模式有两种:文本模式和二进制模式.不同模式下,操作函数不尽相同,表现的结果也不一样.open的参数

文件的操作以及修改当前操作的路径

第一步:打开文件 f = open('text.txt', 'r',encoding='utf-8')第二部:操作文件 content = f.read()第三步:关闭文件 f.close 注意点:(带有b模式的方式都不要指定编码格式) r 模式打开不存在文件要报错 rb 二进制方式读取数据 w 写入文件要指定编码方式,只用w打开文件会先把源文件数据清空 wb 以二进制方式写入文件,不需要进行编码 a 以追加方式写入文件,文件不存在会创建 ab 以二进制方式追加写入文件,不需要编码 import

【转】Android ROM研究---Android build system增加模块

原文网址:http://hualang.iteye.com/blog/1141315 Android build system就是编译系统的意思 在我们需要向自己编译的源代码中增加模块的时候,需要一些规则,当然这个规则都是类似的. Android.mk文件解析 让我们来看一个 Android.mk 文件的样子 Java代码 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE :=Hello LOCAL_SRC_FILES