在 Android 11 中使用 Gmail 将文件附加到电子邮件时出错 - Android Studio

问题描述

我的程序发送一个带有 Intent 的 .txt 文档,它适用于任何 Android 版本,但在 Android 11 中,该文件不会附加在 Gmail 中,但在 Outlook 等其他应用程序中会附加,一旦 Gmail 打开,它会向我发送祝酒词消息“无法附加文件”,有解决方案吗? (注:我向用户请求权限,但我认为没有必要附加此代码

Manifest 中的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

这些是我发送电子邮件生成 .txt 的类:

String CARPETA_PRINCIPAL = "Folder/";
String CARPETA_DOCTXT = "Files";
String DIRECTORIO_TXT = CARPETA_PRINCIPAL + CARPETA_DOCTXT;


public void sendEmail() {
    String nombre_completo = exportTxt();
    if (!nombre_completo.equals("")){
        Intent email = new Intent(Intent.ACTION_SENDTO);
        email.setData(Uri.parse("mailto:"));
        email.putExtra(Intent.EXTRA_SUBJECT,"Exportation File");
        email.putExtra(Intent.EXTRA_TEXT,"Hello2");
        File file = new File(nombre_completo);
        email.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));
        startActivity(Intent.createChooser(email,"Send Email"));
    } else {
        Toast.makeText(this,"Something happen",Toast.LENGTH_LONG).show();
    }
}

public String exportTxt(){
    String fileName= "file.txt";
    File folder = new File(Environment.getExternalStorageDirectory(),DIRECTORIO_TXT);
    if (!folder.exists()) {
        folder.mkdir();
    }

    nombre_completo = Environment.getExternalStorageDirectory() + File.separator + DIRECTORIO_TXT + File.separator + fileName;

    File outputFile = new File(nombre_completo);
    if (outputFile.exists()) {
        outputFile.delete();
    }

    try {
        FileWriter fileWriter = new FileWriter(outputFile);
        BufferedWriter bw = new BufferedWriter(fileWriter);
        bw.write("Hello");
        bw.flush();
        bw.close();
    } catch (Exception e) {
        Log.i("Error: ",String.valueOf(e));
    }
    return nombre_completo;
}

uri 是这样的,我认为是正确的:

/storage/emulated/0/Folder/Files/file.txt

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)