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