如何在Android上使用Intent打开Word文档作为可编辑文件?

时间:2019-03-13 16:42:19

标签: android android-intent

我正在尝试使用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文档进行读写操作?

1 个答案:

答案 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