UIActivityViewController
을 사용하여 iOS 앱의 파일을 공유하고 싶습니다. 가장 중요한 질문은 다른 파일 형식을 처리하는 방법입니다. I'v 지금까지 가지고 무엇 UIActivityViewController를 사용하여 모든 유형의 파일을 공유하십시오.
이미지
public void OpenInExternalApp(string filepath)
{
if (!File.Exists(filepath))
return;
UIImage uiImage = UIImage.FromFile(filepath);
// Define the content to share
var activityItems = new NSObject[] { uiImage };
UIActivity[] applicationActivities = null;
var activityController = new UIActivityViewController(activityItems, applicationActivities);
if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone)
{
// Phone
UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(activityController, true, null);
}
else
{
// Tablet
var popup = new UIPopoverController(activityController);
UIView view = UIApplication.SharedApplication.KeyWindow.RootViewController.View;
CGRect rect = new CGRect(view.Frame.Width/2, view.Frame.Height, 50, 50);
popup.PresentFromRect(rect, view, UIPopoverArrowDirection.Any, true);
}
}
알고하지 마십시오. 이미지가 너무 커서 RAM에 완전히 보관할 수 없으면 어떻게됩니까? 예를 들어 here을 참조하십시오.
문자열
var activityItems = new NSObject[] { UIActivity.FromObject(new NSString(text)) };
텍스트 만.
NSURL 여기에 같은 응용 프로그램이 나타납니다 대부분의 경우
NSUrl url = NSUrl.CreateFileUrl(filepath, false, null);
. 그러나 예를 들어 PDF 리더에 대한 PDF 리더는 나타나지 않습니다. 다른 쪽의 메일 미리보기에는 Adobe Acrobat이 표시됩니다.
모든
var activityItems = new NSObject[] { NSData.FromFile(filepath) };
마지막 방법은 예를 들어 PDF 파일을 열 수있는 모든 응용 프로그램이 표시되지 단점을 가지고 있습니다. 또한 this이 적용됩니다.
모든 유형의 파일을 사용하고 싶습니다. 나는 UIActivity
의 하위 클래스가 여기 도움이 될 것이라고 생각하지 않습니다. 아마 UIActivityItemProvider
의 sublcass?
사이드 노트 : Objective C/Swift에 솔루션을 게시 할 수도 있습니다.