加载文件时,设备被锁定
在我今天的扩展与我的设备解锁,这行代码按预期运行,从图像路径返回数据:加载文件时,设备被锁定
let imageData = NSData(contentsOfFile: path)
然而,当我的设备已被锁定用密码,它返回零。设备锁定时,有没有办法访问文件系统中的图像?我可以很好地访问UserDefaults,但不能访问我的共享组的目录中的文件。这里是我正在创建的路径,呼吁imagePath
,这是正确填入我希望在这两种情况下的路径:
func rootFilePath() -> String? {
let manager = NSFileManager()
let containerURL = manager.containerURLForSecurityApplicationGroupIdentifier(GROUP_ID)
if let unwrappedURL = containerURL {
return unwrappedURL.path
}
else {
return nil
}
}
func imagePath() -> String? {
let rootPath = rootFilePath()
if let uPath = rootPath {
return "\(uPath)/\(imageId).png"
}
else {
return nil
}
}
我想通了!您需要设置相应的文件权限:
NSFileManager *fm = [[NSFileManager alloc] init];
NSDictionary *attribs = @{NSFileProtectionKey : NSFileProtectionNone};
NSError *unprotectError = nil;
BOOL unprotectSuccess = [fm setAttributes:attribs
ofItemAtPath:[containerURL path]
error:&unprotectError];
if (!unprotectSuccess) {
NSLog(@"Unable to remove protection from file! %@", unprotectError);
}
在你通常不会想这样做很多时候,但由于信息意在从锁定屏幕看到,我OK与删除文件保护。
你能分享完整的代码吗?如果'containerURL'为零,那么你如何在其上设置属性? – strangetimes 2015-08-28 02:55:19
@strangetimes如果它是零,那么你有一个更大的问题比试图解除不存在的文件。我建议问一个新问题。 – 2015-08-28 18:03:27
对不起,我以为你上面说过,它实际上返回零?当设备没有被锁定时,是否在你给它一个零的时候取消它的保护,或者你之前是否做了保护? – strangetimes 2015-08-28 18:40:38
对此有何动静?我遇到了同样的问题。 – 2014-10-02 02:29:47
不...还没有。而这个帖子上的人声称他根本没有问题,尽管我不相信它,我觉得文件系统只是用密码锁定 - 虽然我还没有搜索过文档。 http://*.com/a/25844434/431271 – ccwasden 2014-10-02 13:49:34