我正在尝试使用Intent在Android上的Word中打开docx文件,但它始终会打开“只读”(Word会提示说它是只读的)。
该文件在其他可以编辑docx的应用程序中为读写状态(例如WPS Office)。问题只有Microsoft Word。
String fileUrl = "/storage/emulated/0/Download/test.docx";
File file = new File(fileUrl);
String mime = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
Uri theUri = FileProvider.getUriForFile(this,
"com.example.testint.fileprovider",
file);
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
intent.setDataAndType(theUri, mime);
startActivity(intent);
我已经与其他几个应用程序进行了意图拦截。 ASUS文件管理器和ASTRO文件管理器以及文件管理器1.36都能够使用content://以读/写方式打开Word文档,并且没有只读问题。这些意图看起来与我的意图相同,因此,在无法达到目的时,我看不到它们如何工作。
这是来自ASUS文件管理器:
intent://com.asus.filemanager.OpenFileProvider/file/sdcard/Documents/Test.docx#Intent;scheme=content;type=application/vnd.openxmlformats-officedocument.wordprocessingml.document;launchFlags=0x3000000;end
------------
ACTION: android.intent.action.VIEW
DATA: content://com.asus.filemanager.OpenFileProvider/file/sdcard/Documents/Test.docx
MIME: application/vnd.openxmlformats-officedocument.wordprocessingml.document
URI: intent://com.asus.filemanager.OpenFileProvider/file/sdcard/Documents/Test.docx#Intent;scheme=content;type=application/vnd.openxmlformats-officedocument.wordprocessingml.document;launchFlags=0x3000000;end
FLAGS:
FLAG_ACTIVITY_FORWARD_RESULT
FLAG_ACTIVITY_PREVIOUS_IS_TOP
这里的其他人是否可以打开Word文档进行读写操作?
答案 0 :(得分:0)
您可以使用旧文件格式,例如file:///storage/emulated/0/Android/data/.../hello.docx
或内容提供商,例如content://org.cryptomator.fileprovider/external_files/Android/data/org.cryptomator/cache/decrypted/hallo.docx
但不允许该文件位于应用程序的内部存储中。然后文件可写!
文件例如.doc
扩展名不可写,或者内部存储中的文件也不可写。您可以在这里找到简短的概述:https://github.com/cryptomator/cryptomator-android/issues/150#issuecomment-514401775