将Excel文件上传到Dropbox或Google云端硬盘?

时间:2015-01-15 09:56:33

标签: android excel file android-intent android-fileprovider

我目前正在开发一个应用程序,它在android中的sqlite数据库中创建一个excel文件(带有apache poi)。一切都运作良好,但我无法将文件发送到另一个应用程序。 我实现了一个fileprovider,所以其他应用程序可以拥有我的文件的权限:

的AndroidManifest.xml:

<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.example.ria.masterdetailnoten"
        android:exported="false"
        android:grantUriPermissions="true">

        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths"></meta-data>
</provider>

file_paths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="backup" path="backup/"/>
</paths>

ExcelFile.java:

Uri uriFile = FileProvider.getUriForFile(ct, "com.example.ria.masterdetailnoten", backupFile);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setDataAndType(uriFile, "application/vnd.ms-excel");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.createChooser(intent, "Choose");
ct.startActivity(intent);

我确信我的文件正在创建,我可以使用Apache POI再次阅读它。因此,唯一不起作用的是将意图发送到另一个应用程序。


例如,如果我在意图选择器中选择Google云端硬盘,则会出现以下错误: &#34;上传失败:请求中没有数据。&#34;

如果我使用邮箱应用程序打开它,则会出现以下错误: &#34;邮箱无法读取所选文件&#34;

我希望你能帮助我们,感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用:putExtra(Intent.EXTRA_STREAM, uriFile)代替:setData(AndType)

答案 1 :(得分:0)

我已经设法通过In [1]: type(response) Out[1]: dict In [2]: response.get('data') Out[2]: In [3]: response.get('data').get('config') Out[3]: In [4]: response.get('data').get('config').get('replace') Out[4]:

解决了这个问题