最近改个BUG,要在话机还剩200M时,限制用户通过任何方式安装应用;
研读代码后,发现不论任何方式安装应用,最后都会调用到pm里的Installer.java类;
只要在install()中,加入一个空间判断函数即可:
如下:
public int install(String name, int uid, int gid) {
if (hasReachedLimit("/data")) {
return -1;
}
...
...
}
public boolean hasSpaceLimited(String mPath) {
try {
final StructStatFs sb = Libcore.os.statfs(mPath);
if (sb.f_blocks > 0) {
if (sb.f_bavail * sb.f_bsize < INSTALL_LIMIT_SPACE) return true;
return false;
}
} catch (ErrnoException errnoException) {
}
return true;
}
INSTALL_LIMIT_SPACE即为你要限制的空间大小;
转载请注明出处 [url]http://jacklce.iteye.com/blog/1597919[/url]
研读代码后,发现不论任何方式安装应用,最后都会调用到pm里的Installer.java类;
只要在install()中,加入一个空间判断函数即可:
如下:
public int install(String name, int uid, int gid) {
if (hasReachedLimit("/data")) {
return -1;
}
...
...
}
public boolean hasSpaceLimited(String mPath) {
try {
final StructStatFs sb = Libcore.os.statfs(mPath);
if (sb.f_blocks > 0) {
if (sb.f_bavail * sb.f_bsize < INSTALL_LIMIT_SPACE) return true;
return false;
}
} catch (ErrnoException errnoException) {
}
return true;
}
INSTALL_LIMIT_SPACE即为你要限制的空间大小;
转载请注明出处 [url]http://jacklce.iteye.com/blog/1597919[/url]
本文介绍了如何在话机剩余200M空间时,利用PM中的Installer.java类,通过在install()方法中加入空间判断函数,实现禁止用户通过任何方式安装应用的功能。
1177

被折叠的 条评论
为什么被折叠?



