Android应用目录结构,来自内部存储的电子邮件文件

时间:2016-07-31 08:34:08

标签: android email-attachments android-fileprovider

我有问题。我目前正在内部存储中保存pdf文件 /data/user/0/com.thatapp.myApp/files/JP_31072016065930.pdf

通过应用程序阅读它不是问题,所以我很肯定它存在。我现在正试图通过电子邮件发送文件。从这里的其他问题和答案中,我认为您需要使用文件提供程序。

所以我在清单

中添加了以下内容
<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.thatapp.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/filepath" />
    </provider>

@ xml / filepath包含

<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="my_pdf" path=""/>

我的发送电子邮件功能如下

String[] TO = {""};
    String[] CC = {""};
    Intent emailIntent = new Intent(Intent.ACTION_SEND);

    emailIntent.setData(Uri.parse("mailto:"));
    emailIntent.setType("text/plain");
    emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
    emailIntent.putExtra(Intent.EXTRA_CC, CC);
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "OTP:" + fileNmStr);
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message goes here");
    File file = new File(fileNmStr);
    Log.i("PDF FILE", fileNmStr);
    Uri contentUri = getUriForFile(this, "com.thatapp.fileprovider", file);
    emailIntent.putExtra(Intent.EXTRA_STREAM, contentUri);

    try {
        startActivity(Intent.createChooser(emailIntent, "Send mail..."));
        finish();
        Toast.makeText(this, "Email Sent.", Toast.LENGTH_SHORT).show();
    }
    catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(this, "There is no email client installed.", Toast.LENGTH_SHORT).show();
    }

文件记录为/data/user/0/com.thatapp.contract/files/OTP_JP_31072016065930.pdf

当我运行代码时,我遇到了异常

java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com.thatapp.myApp/files/OTP_JP_31072016065930.pdf

因此,如果从我的理解/ data / user / 0 / == / data / data /,那么是什么原因造成的?我的文件路径错了吗?我也试过&#34;文件/&#34;作为文件路径中的路径但具有相同的问题。请帮助....已经24小时盯着问题了

0 个答案:

没有答案