我配对的IOBluetoothDevice
在我的Mac /可可应用程序,并想“取消配对”它编程。 也就是说,我想从系统预置的蓝牙部分的左侧窗格中删除该设备。
我见过[IOBluetoothDevice removeFromFavorites]
但只是删除设备旁边的“收藏夹”属性心脏图标-该设备在左侧窗格中仍列。
这是可能通过可可?
在上面的图片,我想以编程方式从左侧窗格中删除“苹果的Mighty Mouse”。
我配对的IOBluetoothDevice
在我的Mac /可可应用程序,并想“取消配对”它编程。 也就是说,我想从系统预置的蓝牙部分的左侧窗格中删除该设备。
我见过[IOBluetoothDevice removeFromFavorites]
但只是删除设备旁边的“收藏夹”属性心脏图标-该设备在左侧窗格中仍列。
这是可能通过可可?
在上面的图片,我想以编程方式从左侧窗格中删除“苹果的Mighty Mouse”。
配对设备是系统预置的一部分。
你可以找到在蓝牙偏好的文件/Library/Preferences
,它的名字是com.apple.Bluetooth.plist
。
但是,你不能直接编辑文件。 您应该使用SCPreferences
类从System Configuration
框架。
注意访问API /修改系统首选项是相当低的水平。
编辑:如果在超级用户模式下运行下面的代码工作。 我不是一个Mac OS开发者自己,但它应该有可能与以初始化它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);