我目前正在开发一个应用程序,它在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;
我希望你能帮助我们,感谢你的帮助!
答案 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]: