在Android中通过Java修改文件权限
2016-04-12 18:26
555 查看
在LINUX下每个文件都有一个权限的属性 ,那么在Android中怎么用java改变某个文件的权限呢?
Android中有两种方法可以改变文件的权限
1. 用openFileOutput方法:
[java] view
plaincopy
FileOutputStream fos;
fos = openFileOutput("filename", MODE_WORLD_READABLE);
FileOutputStream android.content.ContextWrapper .openFileOutput(String name,
int mode) throwsFileNotFoundException
Open a private file associated with this Context's application package for writing. Creates the file if it doesn't already exist.
可用的mode 参数如下:
/**
* File creation mode: the default mode, where the created file can only
* be accessed by the calling application (or all applications sharing the
* same user ID).
* @see #MODE_WORLD_READABLE
* @see #MODE_WORLD_WRITEABLE
*/
public static final int MODE_PRIVATE = 0x0000;
/**
* File creation mode: allow all other applications to have read access
* to the created file.
* @see #MODE_PRIVATE
* @see #MODE_WORLD_WRITEABLE
*/
public static final int MODE_WORLD_READABLE = 0x0001;
/**
* File creation mode: allow all other applications to have write access
* to the created file.
* @see #MODE_PRIVATE
* @see #MODE_WORLD_READABLE
*/
public static final int MODE_WORLD_WRITEABLE = 0x0002;
/**
* File creation mode: for use with {@link #openFileOutput}, if the file
* already exists then write data to the end of the existing file
* instead of erasing it.
* @see #openFileOutput
*/
public static final int MODE_APPEND = 0x8000;
其实该方法最终还是调用了系统的chmod来实现的改变文件权限的功能。
但是该方法有局限性,他创建的文件只能位于该程序的私有目录下,即/data/data/app-package/files/
2. 用Runtime.getRuntime().exec()
[c-sharp] view
plaincopy
Runtime.getRuntime().exec("chmod 644 " + filename);
该方法调用系统命令chmod来改变文件的权限,为了能判断命令的返回值,最好写成:
[java] view
plaincopy
Process p = Runtime.getRuntime().exec("chmod 644 " + filename);
int status = p.waitFor();
if (status == 0) {
//chmod succeed
} else {
//chmod failed
}
Android在apk内部,即通过java代码来进行修改系统文件或者修改系统设置等等,这样需要获取系统权限。
通过直接配置apk运行在System进程内
1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
3. 使用mm命令来编译,生成的apk就有系统权限权限了。
Android中有两种方法可以改变文件的权限
1. 用openFileOutput方法:
[java] view
plaincopy
FileOutputStream fos;
fos = openFileOutput("filename", MODE_WORLD_READABLE);
FileOutputStream android.content.ContextWrapper .openFileOutput(String name,
int mode) throwsFileNotFoundException
Open a private file associated with this Context's application package for writing. Creates the file if it doesn't already exist.
可用的mode 参数如下:
/**
* File creation mode: the default mode, where the created file can only
* be accessed by the calling application (or all applications sharing the
* same user ID).
* @see #MODE_WORLD_READABLE
* @see #MODE_WORLD_WRITEABLE
*/
public static final int MODE_PRIVATE = 0x0000;
/**
* File creation mode: allow all other applications to have read access
* to the created file.
* @see #MODE_PRIVATE
* @see #MODE_WORLD_WRITEABLE
*/
public static final int MODE_WORLD_READABLE = 0x0001;
/**
* File creation mode: allow all other applications to have write access
* to the created file.
* @see #MODE_PRIVATE
* @see #MODE_WORLD_READABLE
*/
public static final int MODE_WORLD_WRITEABLE = 0x0002;
/**
* File creation mode: for use with {@link #openFileOutput}, if the file
* already exists then write data to the end of the existing file
* instead of erasing it.
* @see #openFileOutput
*/
public static final int MODE_APPEND = 0x8000;
其实该方法最终还是调用了系统的chmod来实现的改变文件权限的功能。
但是该方法有局限性,他创建的文件只能位于该程序的私有目录下,即/data/data/app-package/files/
2. 用Runtime.getRuntime().exec()
[c-sharp] view
plaincopy
Runtime.getRuntime().exec("chmod 644 " + filename);
该方法调用系统命令chmod来改变文件的权限,为了能判断命令的返回值,最好写成:
[java] view
plaincopy
Process p = Runtime.getRuntime().exec("chmod 644 " + filename);
int status = p.waitFor();
if (status == 0) {
//chmod succeed
} else {
//chmod failed
}
Android在apk内部,即通过java代码来进行修改系统文件或者修改系统设置等等,这样需要获取系统权限。
通过直接配置apk运行在System进程内
1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
3. 使用mm命令来编译,生成的apk就有系统权限权限了。
相关文章推荐
- android基础再学习---如何保证Service不被杀掉
- Android ListView工作原理完全解析,带你从源码的角度彻底理解
- Android Studio快捷键
- android重新启动应用程序和重新启动系统 .
- Android Studio真机测试安装时报解析错误
- SVN branch Merge的操作
- Android GestureOverlayView详解
- Android 带清除功能的输入框控件ClearEditTex
- Android 之历史搜索Demo
- Android开发中,那些让你相见恨晚的方法、类或接口
- android 实时PCM数据编码成AAC
- [Android]Adapter相关onItemClick监听器四个arg参数
- Android:Timer和TimerTask详解
- Android性能测试
- Android 开发常见问题总结
- Android中Service类onStartCommand的返回值问题
- Android自定义View之音频条形图
- Android启动流程分析- action的执行和service的启动
- Android开发之Gradle笔记整理2
- Android Studio 2.0+Gradle 2.12编译Oculus Mobile SDK