Android 无法共享文件(通过Gmail或Google Drive)

Android 无法共享文件(通过Gmail或Google Drive),android,Android,我有以下代码来共享一个文件 一切似乎都很好 Gmail打开时附带了附件 但是当我点击SendGmail时,它停止了并给出了一个错误,不幸的是Gmail已经停止了 与Google Drive一样,一切似乎都很好,但最终我得到: 谷歌硬盘上传失败 非常感谢任何帮助 share.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { fi

我有以下代码来共享一个文件

一切似乎都很好

Gmail打开时附带了附件

但是当我点击SendGmail时,它停止了并给出了一个错误
,不幸的是Gmail已经停止了

与Google Drive一样,一切似乎都很好,但最终我得到:
谷歌硬盘上传失败

非常感谢任何帮助

share.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            fileuri=Utility.downloadDb(MainActivity.this);
            if(fileuri!=null){
                Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
                sharingIntent.setType("text/plain");
                sharingIntent.putExtra(Intent.EXTRA_STREAM, fileuri);
                startActivity(sharingIntent);
            }
        }
    });
其中
Utility.downloadDb(MainActivity.this)
是:

publicstaticuridownloaddb(上下文){
DatabaseHandler db=新的DatabaseHandler(上下文);
ArrayList=新建ArrayList();
urifileuri=null;
list.clear();
list.addAll(db.getAllWords());
文件路径=环境
.getExternalStoragePublicDirectory(Environment.DIRECTORY_下载);
文件=新文件(路径“db.csv”);
试一试{
createNewFile();
}捕获(IOE1异常){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
试一试{
//确保图片目录存在。
path.mkdirs();
FileWriter outFile=新的FileWriter(文件);
PrintWriter out=新的PrintWriter(输出文件);
打印(“图片名称”);
输出。打印(“,”);
打印(“字号”);
输出。打印(“,”);
打印出来(“左”);
输出。打印(“,”);
打印出来(“顶部”);
输出。打印(“,”);
打印(右);
输出。打印(“,”);
out.println(“底部”);
对于(int i=0;i找到解决方案

我认为这可能对其他人也有用!!!

要获取URI,请使用:
fileuri=Uri.fromFile(文件);

不是
fileuri=Uri.parse(file.getAbsolutePath());

你能找到并打开该文件吗?(也许尝试“手动”共享它,看看会发生什么…?)@jpm谢谢jpm该文件已创建,可以通过Gmail“手动”发送。我不知道是否有区别,但可能尝试使用Uri.fromFile(file)而不是Uri.parse()…我就是这样做的,而且有效。。。?
public static Uri downloadDb(Context context) {
    DatabaseHandler db= new DatabaseHandler(context);
    ArrayList<Word> list=new ArrayList<Word>();
    Uri fileuri=null;
    list.clear();
    list.addAll(db.getAllWords());
    File path = Environment
            .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
    File file = new File(path, "db.csv");
    try {
        file.createNewFile();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    try {
        // Make sure the Pictures directory exists.
        path.mkdirs();

        FileWriter outFile = new FileWriter(file);
        PrintWriter out = new PrintWriter(outFile);
        out.print("PICTURE NAME");
        out.print(",");
        out.print("WORD NUMBER");
        out.print(",");
        out.print("LEFT");
        out.print(",");
        out.print("TOP");
        out.print(",");
        out.print("RIGHT");
        out.print(",");
        out.println("BOTTOM");

        for(int i=0;i<list.size();i++){
            out.print(list.get(i).pic);
            out.print(",");
            out.print(Integer.toString(list.get(i).wordno));
            out.print(",");
            out.print(Integer.toString(list.get(i).beginx));
            out.print(",");
            out.print(Integer.toString(list.get(i).beginy));
            out.print(",");
            out.print(Integer.toString(list.get(i).endx));
            out.print(",");
            out.println(Integer.toString(list.get(i).endy));


        }

        out.close();
        Toast.makeText(context, "SAVED TO: " +file.getAbsolutePath(), Toast.LENGTH_LONG).show();
        fileuri=Uri.parse(file.getAbsolutePath());
    } catch (IOException e) {
        // Unable to create file, likely because external storage is
        // not currently mounted.
        Log.e("ExternalStorage", "Error writing " + file, e);
    }
    return fileuri;
}