【发布时间】:2019-05-24 06:32:42
【问题描述】:
我正在尝试使用 MS-Word 在我的 Xamarin.Android 应用程序的外部存储中打开和编辑一个 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);
问题是,文件总是只读。当我通过 any file explorer(例如 File Manager Pro)打开文档时,它是 not Read-Only,我可以编辑该文件。
我是否缺少任何需要在我的应用程序或 FileProvider 中设置的权限?
编辑:
- 我在 Android Word 应用中使用我的 Office 帐户登录
- 使用 WPS Office 工作正常,所以它必须是 MS-Word 的一个特殊问题
- 使用
intent.SetAction(Intent.ActionEdit);并没有什么不同 - 使用
intent.SetDataAndType(uri, "application/msword");并没有什么不同 - 使用 Google 文档 的类似行为:使用 FileExplorer 我能够打开和编辑文件。如果我通过我的应用使用 Google Docs 打开文件,我可以编辑文件,但如果我点击保存,应用会要求我“将文件更新为新的 DOCX 格式”。然后我可以将文件保存到新目录。
- 文件资源管理器中使用的
ActionView和SetDataAndType的组合也不起作用
喜欢这个
intent.SetAction(Intent.ActionView);
intent.SetDataAndType(uri, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
意图比较:
我使用 Intent Intercept App 将我的应用程序的意图与文件浏览器的意图进行比较:
- 使用文件资源管理器中的 MIME 类型
intent.SetDataAndType(uri, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");没有区别
【问题讨论】:
-
尝试使用
Intent.ActionEdit而不是Intent.ActionView -
我已经试过了,没有帮助
-
intent.SetDataAndType(uri, "application/msword");设置类型试一试
-
我也试过了
-
刚刚写了一个技术文档,我还是发现了:github.com/cryptomator/cryptomator-android/issues/…微软必须尽快解决这个问题!
标签: android android-intent ms-word xamarin.android android-internal-storage