Android:将图像附加到电子邮件意图-错误
我正在尝试附加一个图像文件以发送意图(GMail等…) 这是我的密码: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.
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));