Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 “内容提供商”;“无法发送附件”;_Java_Android_Android Contentprovider - Fatal编程技术网

Java “内容提供商”;“无法发送附件”;

Java “内容提供商”;“无法发送附件”;,java,android,android-contentprovider,Java,Android,Android Contentprovider,因此,当我点击这个按钮时,我想将文本发送到电子邮件,但当我发送时,附件不会随附“无法发送附件” 所以我可以发送电子邮件到其他电子邮件,但他们不会得到附件和电子邮件 我该怎么做才能让附件正常工作 import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.content.Intent; import android.net.Uri; import android.support.

因此,当我点击这个按钮时,我想将文本发送到电子邮件,但当我发送时,附件不会随附“无法发送附件”

所以我可以发送电子邮件到其他电子邮件,但他们不会得到附件和电子邮件

我该怎么做才能让附件正常工作

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.content.Intent;
import android.net.Uri;
import android.support.v4.app.ShareCompat;
import android.support.v4.content.FileProvider;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;

public class MainActivity extends ActionBarActivity
        implements View.OnClickListener {
    private EditText editText;
    private Button buttonSaveAndShare;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_main);
        this.editText = (EditText) this.findViewById(R.id.editText);
        this.buttonSaveAndShare = (Button) this.findViewById(R.id.button_save_and_share);
        this.buttonSaveAndShare.setOnClickListener(this);
    }

    @Override
    public void onClick(View inView) {
        {
            final String text = this.editText.getText().toString();
            if (!TextUtils.isEmpty(text))//Returns true if the string is null or 0-length
            {

                File file = new File(getCacheDir(), "documents.txt");
                writeStringToFile(text, file);
                shareDocument(file);

            }
        }
    }

    public void shareDocument(File inFile) {

        final Uri uri = FileProvider.getUriForFile(this, "com.visuals.mobile.filep", inFile);
        ShareCompat.IntentBuilder intentBuilder = ShareCompat.IntentBuilder.from(this);
        intentBuilder.setType("text/plain");
        intentBuilder.setSubject(this.getString(R.string.share_subject));
        intentBuilder.setStream(uri);
        intentBuilder.setChooserTitle(R.string.share_title);
        intentBuilder.createChooserIntent();
        Intent intent = intentBuilder.getIntent();
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

        this.startActivity(intent);
    }


    public boolean writeStringToFile(final String inData, final File toFile) {
        if(toFile != null){
            final File parentDir = toFile.getParentFile();

            if((parentDir != null) && !parentDir.exists()){
                parentDir.mkdirs();
            }
        }



        if (toFile == null) return false;

        BufferedWriter output = null;
        BufferedReader input = null;
        try {
            input = new BufferedReader(new StringReader(inData));
            output = new BufferedWriter(new FileWriter(toFile));
            int n = 0;
            while (n != -1) {
                n = input.read();
                output.write(n);
            }

            return true;
        } catch (Exception e) {
        } finally {
            try {

                input.close();
                output.close();

            } catch (IOException e) {
            }

        }
        return false;
    }

}

哇,通过改变来解决它

File file = new File(getCacheDir(), "documents.txt");


您可以尝试混合使用my
LegacyCompatCursorWrapper
,这有助于
FileProvider
处理不兼容的客户端。该类是的一部分,并说明了它的用法。只需子类
FileProvider
,重写
query()
以使用
LegacyCompatCursorWrapper
,然后在
元素中注册类。如果这没有帮助,请考虑发布与问题相关的Java堆栈跟踪。
File file = new File(getCacheDir(), "documents/share.txt");