【发布时间】:2011-11-07 04:43:55
【问题描述】:
我有一个应用程序通过 Java 触发来自 Javascript 的电子邮件,然后附加一个文件。
我得到了选择器,其中有“电子邮件”或“Gmail”作为我的选项。
如果我选择 Gmail,Gmail 客户端会按预期打开,其中包含主题、正文和附件。
但如果我选择电子邮件,我会收到:“应用程序电子邮件(进程 com.google.android.email)已意外停止。强制关闭。”我需要它来使用公司电子邮件,所以这不好。
日志显示:“引起:java.lang.illegalArgumentException”
任何想法为什么会发生这种情况?
这是我的代码:
主活动:
public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setIntegerProperty( "splashscreen", R.drawable.splash );
super.loadUrl("file:///android_asset/www/index.html", 1000);
JavaScriptInterface jsi = new JavaScriptInterface(this, appView);
appView.addJavascriptInterface(jsi, "Android");
}
}
JavaScript接口
public class JavaScriptInterface {
private WebView mAppView;
private DroidGap mGap;
public JavaScriptInterface (DroidGap gap, WebView view)
{
mAppView = view;
mGap = gap;
}
public void doEmail(){
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/html");
sendIntent.putExtra(android.content.Intent.EXTRA_TEXT,"test text");
sendIntent.putExtra(Intent.EXTRA_SUBJECT,"test subject");
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("sdcard/test co.html"));
mGap.startActivity(Intent.createChooser(sendIntent, "Send email..."));
}
}
【问题讨论】:
-
如果您查看 logcat (
adb logcat) 中的异常,可以帮助我们提示问题发生在哪一行。 -
我猜它不喜欢你传递给
EXTRA_STREAM的 Uri。您是否尝试在文件名中添加 file://? -
哇。那行得通!我输入了
"file:///sdcard/test co.html"并且有效。谢谢! -
太棒了,我会提交它作为答案。
标签: java javascript android email