Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Java 我无法通过操作发送txt文件。\u发送意图_Java_Android_Android Studio - Fatal编程技术网

Java 我无法通过操作发送txt文件。\u发送意图

Java 我无法通过操作发送txt文件。\u发送意图,java,android,android-studio,Java,Android,Android Studio,这是我遇到麻烦的代码。出于某种原因,每当我单击按钮运行此功能块并选择要在其上使用它的应用程序时,它都表示不支持该文件类型。我有外部文件访问权限,并且我已经测试了文件在我写之后是否存在,那个里并没有任何问题 我在活动的onCreate函数上也有此块: @Override public void onClick(View v) { File dir = new File(Environment.getExternalStorageDirectory().getPath(), "D

这是我遇到麻烦的代码。出于某种原因,每当我单击按钮运行此功能块并选择要在其上使用它的应用程序时,它都表示不支持该文件类型。我有外部文件访问权限,并且我已经测试了文件在我写之后是否存在,那个里并没有任何问题

我在活动的onCreate函数上也有此块:

@Override
public void onClick(View v) {

    File dir = new File(Environment.getExternalStorageDirectory().getPath(), "Documents");
    if(!dir.exists()){
        dir.mkdir();
    }

    File file = new File(dir, "file.txt");

    try {
        FileWriter writer = new FileWriter(file);
        writer.append("Test");
        writer.flush();
        writer.close();
    } catch (Exception e){
        e.printStackTrace();
    }

    Intent intent = new Intent(Intent.ACTION_SEND);
    Uri uri = Uri.fromFile(file);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@hotmail.com");
    intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "Body of the mail");
    intent.putExtra(Intent.EXTRA_STREAM, uri);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivityForResult(Intent.createChooser(intent, "Send email..."),12);
}
如果没有这个块,每当我试图发送附件时,程序就会崩溃,我想知道原因是什么

我使用的是API 22

编辑

已实现FileProvider,但仍无法将文件发送到其他应用程序。 我是这样发送的:

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
这是AndroidManifest提供程序

 Intent intent = new Intent(Intent.ACTION_SEND);
    Uri uri = FileProvider.getUriForFile(getApplicationContext(), "com.company.documentproject_1.fileprovider", file);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@hotmail.com");
    intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "Body of the mail");
    intent.putExtra(Intent.EXTRA_STREAM, uri);
    intent.addFlags(
            Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    startActivityForResult(Intent.createChooser(intent, "Send email..."),12);
Uri=Uri.fromFile(文件)

将生成FileUriExposedException

那是行不通的

您必须使用文件提供程序并通过以下方式获取uri:

E/ActivityThread: Failed to find provider info for cn.teddymobile.free.anteater.den.provider

发布崩溃将有助于了解发生的情况。
如果(!dir.mkdir()){Toast(…抱歉无法创建dir..);return;}
捕获(异常e){e.printStackTrace();}
如果您有此捕获,您仍然可以启动该意图。相反,您应该显示一个祝酒词来通知用户并返回/停止。删除严格模式的内容。很遗憾。您没有展示如何实例化所使用的
文件
变量。还是还是老样子?如果您试图获取uri,则会出现异常。请执行并告诉
file.getAbsolutePath()
的值。你发布了新代码,我应该看看。但是为什么呢?有什么问题吗?那个提供者的错误和代码有什么关系?你好,我对原来的帖子做了一些修改,你能帮我吗?
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="external_files"
        path="." />
</paths>
E/ActivityThread: Failed to find provider info for cn.teddymobile.free.anteater.den.provider
Uri uri = FileProvider.getUriForFile(......, file);