2013-07-04 74 views
0

我正在使用以下Intent使用Intent Chooser打开.xlsx文件。我可以使用金山软件办公室和Polaris办公室打开这些文件。如何使用Android中的Intents打开.xlsx文件?

var calcIntent = new Intent();    
calcIntent.SetAction (Intent.ActionView); 
Android.Net.Uri fileUri = Android.Net.Uri.FromFile (new File (OSUtils.GetCalcFilePath (id))); 
calcIntent.SetData (fileUri); 
var mimeType = OSUtils.GetMimeType (fileUri.ToString()); 
calcIntent.SetType (mimeType);     
try { 
    StartActivity (Intent.CreateChooser (calcIntent, "Open Via")); 
} catch (ActivityNotFoundException) { 
    Toast.MakeText (this, "You do not have Kingsoft Office Installed!", ToastLength.Long).Show(); 
} 

凡OSUtils.GetCalcFilePath被定义为

public static string GetCalcFilePath (int currentId) { 
    var calcDirPath = OSUtils.GetCalcDirForEstimate (currentId); 
    var calcSheetName = String.Format ("builder_calc_{0}.xlsx", currentId); 
    var calcSheet = new Java.IO.File (calcDirPath, calcSheetName); 
    if (!calcSheet.Exists()) { 
     calcSheet.CreateNewFile(); 
    } 
    return calcSheet.Path; 
} 

和OSUtils.GetMimeType被定义为

public static string GetMimeType (string fileUri) { 
    String mimeType = null; 
    var extension = MimeTypeMap.GetFileExtensionFromUrl (fileUri); 
    if (extension != null) { 
     mimeType = MimeTypeMap.Singleton.GetMimeTypeFromExtension (extension); 
    } 
    if (mimeType != null) 
    return mimeType; 
    else 
     return "*/*"; 
} 

现在,当我运行它,我得到一个对话框(选配)给我两个选项,“金山办公室”和“北极星办公室”。选择北极星办公室给我敬酒说:“不是支持的文件类型”,另一方面选择金山办公室只是打开金山软件,什么都不做。该文档未在金山办公室打开。 鉴于,如果我去我的文件管理器并点击.xlsx文件,它会在两个办公应用程序中完美打开。我检查了我的代码,所有的mimetypes和路径都是正确的,并指向所需的文件。有任何想法吗?

由于提前

编辑

似乎使用的SetData和单独的setType不会在这里工作。它们是相互排斥的,即调用一个清除另一个。 “SetDataAndType”是去这里的方法。 :)

+0

问题文件路径,你没有正确通过 –

+0

我正确地通过它。我发现我的问题。 –

回答

0

它似乎使用SetData和SetType单独不会在这里工作。它们是相互排斥的,即调用一个清除另一个。 “SetDataAndType”是去这里的路。 :)

相关问题