我的 Android 应用需要存储 15 GB 的数据,所以它需要使用可移动存储。所以我需要在我的应用程序加载时检查 fsck 是否正在运行(如果是这种情况则退出)。当然我可以做一个
Runtime.getRuntime().exec("ps");
但我读过这个解决方案不可靠......所以我尝试了
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningAppProcessInfo tasks : manager.getRunningAppProcesses()) {
System.out.println(" ########## " + tasks.processName + " #######");
}
但我没有看到任何fsck
. 实际上,使用ps
我认为它被执行为
/system/bin/fsck.exfat -R -f /dev/...
是唯一的使用方法Runtime.getRuntime().exec("ps")
吗?
谢谢!
L.
编辑
该命令Environment.getExternalStorageState()
对我不起作用。卸载/安装 SD 卡后,使用下面的代码,我得到了 AT THE SAME TIME,MOUNTED
并且/system/bin/fsck.exfat -R -f /dev/...
String line;
BufferedReader br;
try {
br = new BufferedReader(new InputStreamReader( Runtime.getRuntime().exec("ps").getInputStream()));
while ((line = br.readLine()) != null) {
if (line.contains("/fsck"))
System.out.println("### PS:" + Environment.getExternalStorageState() + " ### " +line);
} catch (IOException e1) {
e1.printStackTrace();
}
这是我得到的输出:
PS:mounted ### root [...] D /system/bin/fsck.exfat /dev/...