Я пытаюсь открыть и отредактировать документ 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);
Проблема в том, что файл всегда Только для чтения .Когда я открываю документ с помощью любого проводника файлов (например, File Manager Pro), он не доступен только для чтения , и я могу редактировать файл.
Мне не хватает каких-либо разрешений, которые мне нужно установить в моем приложении или FileProvider?
РЕДАКТИРОВАТЬ:
- Я вошел в систему с моей учетной записью Office в приложении Android Word
- Использование 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");
Сравнение намерений:
Я использовал приложение Intent Intercept , чтобы сравнить намерение из моего приложения с намерением изПроводник:
Мое приложение (файл Word доступен только для чтения):
Проводник (файл Word можно редактировать):
- с использованием MIME-типа из проводника файлов
intent.SetDataAndType(uri, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
не имеет значения