Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何改变”;呼叫等待”;在iOS(越狱设备)中编程?_Ios_Iphone_Jailbreak_Cydia Substrate - Fatal编程技术网

“如何改变”;呼叫等待”;在iOS(越狱设备)中编程?

“如何改变”;呼叫等待”;在iOS(越狱设备)中编程?,ios,iphone,jailbreak,cydia-substrate,Ios,Iphone,Jailbreak,Cydia Substrate,我不想以编程方式打开/关闭iPhone的呼叫等待功能(可在Settings>Phone>callwaiting中找到) 我发现电话设置调用-setCallWaitingEnabled:specifier:电话设置ScalWaitingController类中的方法。我在/System/Library/PreferenceBundles/MobilePhoneSettings.bundle/Call Waiting.plist中找到了它: <?xml version="1.0" encodi

我不想以编程方式打开/关闭iPhone的呼叫等待功能(可在
Settings>Phone>callwaiting
中找到)

我发现电话设置调用
-setCallWaitingEnabled:specifier:
电话设置ScalWaitingController
类中的
方法。我在
/System/Library/PreferenceBundles/MobilePhoneSettings.bundle/Call Waiting.plist中找到了它:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>id</key>
    <string>com.apple.preferences.phone.call-waiting</string>
    <key>items</key>
    <array>
        <dict>
            <key>cell</key>
            <string>PSGroupCell</string>
        </dict>
        <dict>
            <key>cell</key>
            <string>PSSwitchCell</string>
            <key>get</key>
            <string>callWaitingEnabled:</string>
            <key>label</key>
            <string>Call Waiting</string>
            <key>set</key>
            <string>setCallWaitingEnabled:specifier:</string>
        </dict>
    </array>
    <key>title</key>
    <string>Call Waiting</string>
</dict>
</plist>

我不知道我走的路是否正确。是否有其他方法打开/关闭呼叫等待设置?

corethony.framework
专用API的声明

CF_EXTERN_C_BEGIN

CF_EXPORT CFNotificationCenterRef CTTelephonyCenterGetDefault();
CF_EXPORT void CTTelephonyCenterAddObserver(CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior);

CF_EXPORT void CTSettingRequest(NSDictionary* dict);
CF_EXPORT void CTSettingSave(NSDictionary* dict);

CF_EXPORT NSString* kCTSettingCallClassVoice;
CF_EXPORT NSString* kCTSettingTypeCallWaiting;
CF_EXPORT NSString* kCTSettingType;
CF_EXPORT NSString* kCTSettingCallClass;
CF_EXPORT NSString* kCTSettingEnabled;

CF_EXTERN_C_END
设置请求和保存是异步完成的。结果将发送到电话中心回调:

void SettingCallback(CFNotificationCallback center, void* observer, NSString* name, const void* objec, NSDictionary* userInfo)
{
    if ([name isEqualToString:@"kCTSettingRequestSuccessNotification"])
    {
        //Setting request results are in 'userInfo' argument
    }
    else if ([name isEqualToString:@"kCTSettingRequestErrorNotification"])
    {
        //Setting request error
    }
    else if ([name isEqualToString:@"kCTSettingSaveSuccessNotification"])
    {
        //Setting saved
    }
    else if ([name isEqualToString:@"kCTSettingSaveErrorNotification"])
    {
        //Setting save error
    }
}

...

CTTelephonyCenterAddObserver(CTTelephonyCenterGetDefault(), NULL, SettingCallback, NULL, NULL, CFNotificationSuspensionBehaviorHold);
请求呼叫等待设置:

CTSettingRequest(@{@"STSettingTypeUniqueIdentifier" : kCTSettingTypeCallWaiting,
                   kCTSettingCallClass : kCTSettingCallClassVoice, 
                   kCTSettingType : kCTSettingTypeCallWaiting});
保存呼叫等待设置(在本例中,已启用):


这看起来像一个UI控制器,由从网络获取的数据驱动。要禁用呼叫等待,您需要使用SS代码。代码的完整列表位于:@Petesh谢谢你的回答。我找不到任何关于运行SS代码的信息。你知道怎么做吗?不知道,可能是通过调制解调器接口。@creker非常感谢。我觉得你的回答有点问题。我认为在您的答案中CoreTephony声明的前4行之前应该有
extern“C”
。我还有一个问题:如何找到其他字符串来更改其他设置?您是如何找到这些函数的?只有在使用obj-C++代码中的声明时,才需要
extern“C”
。否则就不需要了。我使用您在问题中提到的首选项包反汇编编写了该代码。@CrekerThank!我正在使用objc(我正在使用Xcode和ioopendev进行编译,所以我猜它是objc!),如果我没有将
extern“C”
放进去,它会给我一个错误。你知道在iOS中启动反汇编的好参考资料吗?
CTSettingRequest(@{@"STSettingTypeUniqueIdentifier" : kCTSettingTypeCallWaiting,
                   kCTSettingCallClass : kCTSettingCallClassVoice, 
                   kCTSettingType : kCTSettingTypeCallWaiting});
CTSettingSave(@{@"STSettingTypeUniqueIdentifier" : kCTSettingTypeCallWaiting,
                kCTSettingCallClass : kCTSettingCallClassVoice, 
                kCTSettingType : kCTSettingTypeCallWaiting, 
                kCTSettingEnabled : @YES});