using ReactNative.Bridge; using Windows.Storage; using Windows.System; using System; using Newtonsoft.Json.Linq; using Windows.UI.Core; namespace RNFileViewer { /// /// A module that allows JS to share data. /// class RNFileViewerModule : NativeModuleBase { /// /// The name of the native module. /// public override string Name { get { return "RNFileViewer"; } } [ReactMethod] public async void open(string filepath, JObject _, IPromise promise) { await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { try { var file = await StorageFile.GetFileFromPathAsync(filepath); if (file != null) { var success = await Launcher.LaunchFileAsync(file); if (success) { promise.Resolve(null); } else { promise.Reject(null, "File open failed."); } } else { promise.Reject(null, "File not found."); } } catch (Exception e) { promise.Reject(null, filepath, e); } } ); } } }