2014-10-09 2 views
2

OpenGL보기 (libGDX/RoboVM 사용)에서 UIActivityViewController를 표시하려고하지만 결과가 서로 다릅니다.UIActivityViewController가 iPhone + iOS 8에 표시되지 않습니다.

iOS 7과 iOS 8 iPad에서는 잘 작동하지만 iOS 8 iPhone에서는 아무 일도 일어나지 않고 응용 프로그램을 일시 중지합니다. 완료 블록이 절대 실행되지 않는다는 것을 제외하고는 디버그 로그에 아무 것도 기록하지 않습니다.

UIActivityViewController controller = new UIActivityViewController(activityItems, null); 
    List<String> excludedTypes = new ArrayList<String>(); 
    excludedTypes.add("UIActivityTypePrint"); 
    excludedTypes.add("UIActivityTypeAssignToContact"); 
    excludedTypes.add("UIActivityTypeAddToReadingList"); 
    excludedTypes.add("UIActivityTypeAirDrop"); 
    excludedTypes.add("UIActivityTypeCopyToPasteboard"); 
    controller.setExcludedActivityTypes(excludedTypes); 
    IOSApplication iosApplication = (IOSApplication)Gdx.app; 
    // for iPad (https://groups.google.com/forum/#!topic/robovm/fiGDVf6AAsc) 
    int majorOsVersion = Integer.parseInt(System.getProperty("os.version").substring(0, System.getProperty("os.version").indexOf('.'))); 
    if (majorOsVersion >= 8) 
    { 
     UIView sourceView = iosApplication.getUIViewController().getView(); 
     if (width > 0 && height > 0) 
     { 
      UIView subView = new UIView(new CGRect(left, top, width, height)); 
      sourceView.addSubview(subView); 
      sourceView = subView; 
     } 
     UIActivityViewControllerExtensions.getPopoverPresentationController(controller).setSourceView(sourceView); 
    } 
    iosApplication.getUIViewController().presentViewController(controller, true, null); 

나는 방법이 여기

답변

0

NullPointerException이 (A CocoaTouch 응용 프로그램에서와 같은 주 스레드의 희망 libGDX에) "메인"스레드에서 호출되는 것을 확인했다 :이 코드입니다

UIActivityViewControllerExtensions.getPopoverPresentationController(controller).setSourceView(sourceView); 

getPopoverPresentationController()은 Objective-C 영역에서 문제가되지 않는 iPhones의 경우 null을 반환합니다.