【问题标题】:Android - Send Email from App crashes Email - Force CloseAndroid - 从应用程序发送电子邮件崩溃电子邮件 - 强制关闭
【发布时间】: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


【解决方案1】:

您需要在文件名前加上“file://”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多