Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/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
Android:将图像附加到电子邮件意图-错误_Android_Email_Android Intent - Fatal编程技术网

Android:将图像附加到电子邮件意图-错误

Android:将图像附加到电子邮件意图-错误,android,email,android-intent,Android,Email,Android Intent,我正在尝试附加一个图像文件以发送意图(GMail等…) 这是我的密码: public void mail(ReadableMap options, Callback callback) { Intent i = new Intent(Intent.ACTION_SEND); i.setType("application/image"); if (options.hasKey("subject") && !options.isNull("subject")) { i.

我正在尝试附加一个图像文件以发送意图(GMail等…) 这是我的密码:

public void mail(ReadableMap options, Callback callback) {
Intent i = new Intent(Intent.ACTION_SEND);
  i.setType("application/image");

  if (options.hasKey("subject") && !options.isNull("subject")) {
  i.putExtra(Intent.EXTRA_SUBJECT, options.getString("subject"));
}

if (options.hasKey("body") && !options.isNull("body")) {
  i.putExtra(Intent.EXTRA_TEXT, options.getString("body"));
}

if (options.hasKey("recipients") && !options.isNull("recipients")) {
  ReadableArray r = options.getArray("recipients");
  int length = r.size();
  String[] recipients = new String[length];
  for (int keyIndex = 0; keyIndex < length; keyIndex++) {
    recipients[keyIndex] = r.getString(keyIndex);
  }
  i.putExtra(Intent.EXTRA_EMAIL, recipients);
}

if (options.hasKey("attachment") && !options.isNull("attachment")) {
  ReadableArray r = options.getArray("attachment");
  Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), r.getString(0)));
//      Log.e("FILE", r.getString(0));
  i.putExtra(Intent.EXTRA_STREAM, uri);
}

Intent chooser = Intent.createChooser(i, "Send Mail");

chooser.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
  reactContext.startActivity(chooser);
} catch (Exception ex) {
  callback.invoke("error");
}
}
publicsvoid邮件(ReadableMap选项,回调){
意向i=新意向(意向.行动\发送);
i、 setType(“应用程序/图像”);
if(options.hasKey(“subject”)&&!options.isNull(“subject”)){
i、 putExtra(Intent.EXTRA_SUBJECT,options.getString(“SUBJECT”));
}
if(options.hasKey(“body”)&&!options.isNull(“body”)){
i、 putExtra(Intent.EXTRA_TEXT,options.getString(“body”);
}
if(options.hasKey(“收件人”)和&!options.isNull(“收件人”)){
ReadableArray r=options.getArray(“收件人”);
int length=r.size();
字符串[]收件人=新字符串[长度];
对于(int-keyIndex=0;keyIndex
日志返回:

01-19 21:26:52.204 19326-19474/com.nevermind.app E/文件:file:///storage/emulated/0/Pictures/e461e1a3-b000-4201-8371-00f5e61eca8c.jpg

映像在设备上有效,但返回错误:无法附加空文件。其余的电子邮件字段在GMail应用程序上运行良好

以下是Android Studio的输出:

多音域管理器。应通过软件输入启用LayoutOutsetsBySoftInput:-1 01-19 21:35:14.864 1225-13155/系统_进程E/剪贴簿管理员:无法获取剪贴簿服务 01-19 21:35:14.874 3840-3840/com.google.android.gm E/Gmail:添加附件时出错 com.android.mail.utils.b:无法附加空附件 位于com.android.mail.ui.ComposeAttachmentTileGrid.a(源文件:62) 位于com.android.mail.compose.c.b(源文件:2098) 位于com.android.mail.compose.c.c(源文件:2228) 位于com.android.mail.compose.c.a(源文件:9157) 位于com.android.mail.compose.c.w(源文件:833) 位于com.android.mail.compose.c.onCreate(源文件:5904) 位于com.google.android.gm.composeActivityMail.onCreate(源文件:165) 位于android.app.Activity.performCreate(Activity.java:6550) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3102)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257) 在android.app.ActivityThread.access$1000(ActivityThread.java:197) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:145) 位于android.app.ActivityThread.main(ActivityThread.java:6891) 位于java.lang.reflect.Method.invoke(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1404) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

改为:

Uri uri = Uri.parse(r.getString(0));

R.getSting已包含完整路径,因此无需添加外部存储。

当您说“log returns:”时,您指的是哪个日志?Log.e()?是的,这就是我的意思。。。
Uri uri = Uri.parse(r.getString(0));