-1

我只想以编程方式知道 iPhone 是否处于飞行模式。我知道我们必须在信息列表中添加 SBUsesNetwork 布尔标志,但这不符合我的目的。实际上,我正在使用可达性类来识别互联网可用性,因此当我的应用程序以飞行模式启动时,会从我的代码中给出两个警报,另一个来自 SBUsesNetwork 标志。我只是想显示这两个警报中的任何一个。所以我想以编程方式知道手机是否处于飞行模式?

4

2 回答 2

0

如果不使用私有库,我们无法获得这些信息。这是一些代码,但当载波信号不可用时它将不起作用。

UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];

NSString *dataNetworkItemView = nil;

for (id subview in subviews) {
    if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]]) {
            dataNetworkItemView = subview;
            break;
     }
}

double signalStrength = [[dataNetworkItemView valueForKey:@"signalStrengthRaw"] intValue];
 if (signalStrength > 0) {
        NSLog(@"Airplane mode or NO signal");
  }
  else{
        NSLog(@"signal available");
  }
于 2016-11-29T11:24:32.313 回答
-1
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
[infoDict objectForKey:@"SBUsesNetwork"];

希望这可以帮助。

于 2013-03-29T04:11:10.363 回答