For*_*ord 8 cocoa bluetooth objective-c iobluetooth
我已经IOBluetoothDevice在我的Mac/Cocoa应用程序中配对,并希望以编程方式"取消配对".也就是说,我想从"系统偏好设置"的"蓝牙"部分的左侧窗格中删除该设备.
我已经看过了[IOBluetoothDevice removeFromFavorites],但是只删除了设备"收藏夹"属性旁边的心脏图标 - 设备仍然列在左侧窗格中.
这可能通过Cocoa吗?

在上图中,我想以编程方式从左侧窗格中删除"Apple Mighty Mouse".
Sul*_*han 10
配对设备是"系统偏好设置"的一部分.
您可以在其中找到具有蓝牙首选项的文件/Library/Preferences,其名称为com.apple.Bluetooth.plist.

但是,您无法直接编辑该文件.你应该使用框架中的SCPreferences类System Configuration.
请注意,用于访问/修改系统首选项的API非常低级别.
编辑:如果在超级用户模式下运行,以下代码可以正常工作.我自己不是Mac OS开发人员,但应该可以使用a来启动它AuthorizationRef并使用用户模式运行它(用户将确认访问系统配置).
SCPreferencesRef prefs = SCPreferencesCreate(kCFAllocatorDefault,
CFSTR("Test"),
CFSTR("/Library/Preferences/com.apple.Bluetooth.plist"));
const CFStringRef PAIRED_DEVICES_KEY = CFSTR("PairedDevices");
NSArray *pairedDevices = (__bridge NSArray *) SCPreferencesGetValue(prefs, PAIRED_DEVICES_KEY);
NSLog(@"Paired devices: %@", pairedDevices);
NSString *deviceToRemove = @"e4-32-cb-da-ca-2f";
NSMutableArray *newPairedDevices = [pairedDevices mutableCopy];
[newPairedDevices removeObject:deviceToRemove];
Boolean valueSet = SCPreferencesSetValue(prefs, PAIRED_DEVICES_KEY, (__bridge CFPropertyListRef) [NSArray arrayWithArray:newPairedDevices]);
NSLog(@"Value set: %@", (valueSet) ? @"YES" : @"NO");
if (!valueSet) {
NSLog(@"Error: %@", SCCopyLastError());
}
Boolean saved = SCPreferencesCommitChanges(prefs);
if (!saved) {
NSLog(@"Error: %@", SCCopyLastError());
}
NSLog(@"Saved: %@", (saved) ? @"YES" : @"NO");
CFRelease(prefs);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |