使用Intent打开时,Word文档始终为只读

K. *_*ter 9 android ms-word android-intent xamarin.android android-internal-storage

我试图打开并编辑一个Word文档位于我的外部存储在我的Xamarin.Android应用程序与MS-Word中使用此代码:

File wordFile = new File(wordFilePath);
wordFile.SetWritable(true);

FileInfo fileInfo = new FileInfo(wordFilePath);
fileInfo.IsReadOnly = false;

Android.Net.Uri uri = FileProvider.GetUriForFile(Context, Context.PackageName + ".provider", wordFile);

Intent intent = new Intent();
intent.AddFlags(ActivityFlags.NewTask);
intent.AddFlags(ActivityFlags.GrantReadUriPermission);
intent.AddFlags(ActivityFlags.GrantWriteUriPermission);
intent.AddFlags(ActivityFlags.GrantPersistableUriPermission);
intent.SetAction(Intent.ActionView);

intent.SetData(uri);

Context.StartActivity(intent);
Run Code Online (Sandbox Code Playgroud)

问题是,该文件始终为只读。当我通过任何文件浏览器(例如File Manager Pro)打开文档时,它不是只读的,我可以编辑文件。

我是否缺少需要在应用程序或FileProvider中设置的任何权限?

编辑:

  • 我已使用Android Word应用程序中的Office帐户登录
  • 使用WPS Office可以很好地工作,因此MS-Word必须是一个特殊的问题
  • 使用intent.SetAction(Intent.ActionEdit);没有区别
  • 使用intent.SetDataAndType(uri, "application/msword");没有区别
  • 使用Google Docs的类似行为:使用FileExplorer,我可以打开和编辑文件。如果我通过我的应用程序使用Google Docs打开文件,则可以编辑文件,但是如果单击“保存”,应用程序会要求我“将文件更新为新的DOCX格式”。然后,我可以将文件保存到新目录。
  • 在文件资源管理器中使用的ActionView&组合SetDataAndType也不起作用

像这样

intent.SetAction(Intent.ActionView);
intent.SetDataAndType(uri, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
Run Code Online (Sandbox Code Playgroud)

目的比较:

我使用了Intent Intercept App将应用程序的意图与文件浏览的意图进行比较:


我的应用程序(Word文件为只读): 在此处输入图片说明


File-Explorer(可编辑Word文件): 在此处输入图片说明

  • 从文件资源管理intent.SetDataAndType(uri, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");器中使用MIME类型没有任何区别

小智 1

如果你使用, 而不是,ActionEdit它似乎可以工作ActionView

intent.AddFlags(ActivityFlags.GrantPersistableUriPermission);
Run Code Online (Sandbox Code Playgroud)

这样,我可以打开可编辑的 .doc 文件,但是,我无法将文件保存到原始位置(在我的应用程序的沙箱中)。Word 始终建议保存副本。经过几天的摸索之后,我怀疑这是微软设计的,我们的代码没有任何问题,尽管我不能确定......


归档时间:

查看次数:

237 次

最近记录:

6 年,5 月 前