Nana1992
(Nana1992)
1
目的:根据系统路径得到手机中安装的app应用列表
NSString *basePath = @"/private/var/mobile/Containers/Bundle/Application/"; //ios8的文件系统路径变了,我已经改了
NSArray *apps = [NSFileManager defaultManager] contentsOfDirectoryAtPath:basePath error:NULL];
打印出apps为null
测试ios6和7都可以得到apps的值 但是ios8.1.2就是得不到,请问为什么啊?
注:手机越狱以后用iFile可以打开/private/var/mobile/Containers/Bundle/Application/这个目录
解决方法:
是由于sandbox机制,不能访问其他app
我把app放到了/Applications/目录下面,然后执行文件的文件属性group的权限改成了wheel
access permission 都加上了execute 就能得到我想要的输出信息了
Nana1992
(Nana1992)
3
写在了ViewController.m的-(void)viewDidLoad方法里面了
只有这几行代码。
得到的apps是null。用这几行代码测试ios8以下的都没问题
@interface ViewController ()
@end
@implementation ViewController
-
(void)viewDidLoad {
[self filelist];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-
(void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)filelist{
NSString *basePath = @"/private/var/mobile/Containers/Bundle/Application/";
NSArray *apps = [NSFileManager defaultManager] contentsOfDirectoryAtPath:basePath error:NULL];
NSLog(@“apps = %@”,apps);
if ([apps count] == 0) {
NSLog(@“APP COUNT = 0”);
return ;
}
}
@end
Nana1992
(Nana1992)
5
不好意思,想成线程了。。
下面用ps命令得到的
PID TTY TIME CMD
1862 ?? 0:00.36 /var/mobile/Containers/Bundle/Application/6F687B69-85C
这个目录下的App都是被沙盒严格限制的,当然读不到其他App的信息了
Nana1992
(Nana1992)
7
唔~ 了解了 看来我还是没有对沙盒概念了解太透彻,以为越狱以后就没有沙盒概念了。。
我把app放到了/Applications/目录下面,然后执行文件的文件属性group的权限改成了wheel
access permission 都加上了execute 就能得到我想要的输出信息了
谢谢您了~!