Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中发送Sqlite数据库作为电子邮件附件_Android_Sqlite_Email Attachments - Fatal编程技术网

在Android中发送Sqlite数据库作为电子邮件附件

在Android中发送Sqlite数据库作为电子邮件附件,android,sqlite,email-attachments,Android,Sqlite,Email Attachments,我有一个简单的应用程序,我用它发送附件 我已经成功地从SD卡发送了一个文本文件(尽管我无法使用openFileOutput(fileName,0))在应用程序专用区域中创建的文件来处理该文件),但我现在想发送一个数据库 通过调试,我可以验证数据库是否存在,并且在其唯一的表中有一个条目。我要发送的代码如下所示: gmailButton = (Button) findViewById(R.id.button); gmailButton.setOnClickListener(new OnClickLi

我有一个简单的应用程序,我用它发送附件

我已经成功地从SD卡发送了一个文本文件(尽管我无法使用
openFileOutput(fileName,0)
)在应用程序专用区域中创建的文件来处理该文件),但我现在想发送一个数据库

通过调试,我可以验证数据库是否存在,并且在其唯一的表中有一个条目。我要发送的代码如下所示:

gmailButton = (Button) findViewById(R.id.button);
gmailButton.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        Intent sendIntent = new Intent(Intent.ACTION_SEND); 
        sendIntent.putExtra(Intent.EXTRA_SUBJECT, "subject line"); 
        sendIntent.putExtra(Intent.EXTRA_TEXT,"Body of email"); 
        Uri uri = Uri.fromFile(getDatabasePath("TEST_DB"));
        //uri = file:///data/data/com.gmailspike/databases/TEST_DB
        sendIntent.putExtra(Intent.EXTRA_STREAM, uri); 
        sendIntent.setType("application/octet-stream");

        startActivity(Intent.createChooser(sendIntent,"Email:"));
    }
})
)

但是,当电子邮件客户端打开附件时,附件大小为0字节,如果我触摸打开附件,客户端会说找不到文件


有什么想法吗?我不确定mime类型是否正确,或者它是否重要

至于MIME类型,它当然很重要,因为应用程序必须支持它(显式或通过通配符)才能响应意图,并通过
createChooser
找到它

例如,我认为Gmail接受带有
*/*
操作的MIME类型,但我不知道其他邮件客户端


编辑:至于权限,请查看Intent类中的
标志\u GRANT\u READ\u URI\u permission
标志:

我记得在尝试发送带有图像附件的电子邮件,链接到存储在apps私有数据文件夹中的文件时,也遇到过类似的问题。附件不见了

使用邮件意图打开一个新应用程序来处理邮件创建。因此,您需要编写一个允许其他应用程序访问您的私有数据的应用程序

或者先将内容复制到公共区域,然后将其添加到邮件意图中(这仅适用于大多数手机都有SD卡的情况)。在那种情况下,可能会用到这个词


希望这有助于找到解决方案。

感谢您提供有关mime类型的有趣信息。我尝试了许可标志,但它不起作用。我想我会先把文件复制到外部存储器。啊。。。我还没有深入研究内容提供商,因此将首先复制到外部存储。请看下面的so答案,了解有关复制DB文件、发送电子邮件和删除复制的DB文件的非常好的示例: