1

此类在 ICS 上运行良好,但ActivityNotFoundException在 Jelly Bean 上失败。你们知道为什么吗?谢谢你。

public class EmailSender {

    public static Intent getSendEmailIntent(Context context, String email,
                                            String subject, String body, File fileName, String chooserTitle) {

        final Intent emailIntent = new Intent(
                android.content.Intent.ACTION_SEND);

        //Explicitly only use Gmail to send
        emailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");

        emailIntent.setType("plain/text");

        //Add the recipients
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
                new String[]{email});

        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);

        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);

        //Add the attachment by specifying a reference to our custom ContentProvider
        //and the specific file of interest
        emailIntent.putExtra(
                Intent.EXTRA_STREAM,
                Uri.fromFile(fileName));

        return emailIntent;
    }
}

在果冻豆上,我遇到了一个例外:

11-19 15:32:07.852: E/AndroidRuntime(19630): android.content.ActivityNotFoundException: 找不到明确的活动类 {com.google.android.gm/com.google.android.gm.ComposeActivityGmail}; 您是否在 AndroidManifest.xml 中声明了此活动?

如有需要,可全程跟踪:

11-19 15:32:07.852: E/AndroidRuntime(19630): android.content.ActivityNotFoundException: 找不到明确的活动类 {com.google.android.gm/com.google.android.gm.ComposeActivityGmail}; 您是否在 AndroidManifest.xml 中声明了此活动?11-19 15:32:07.852: E/AndroidRuntime(19630): 在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618) 11-19 15:32:07.852: E/AndroidRuntime(19630): 在 android. app.Instrumentation.execStartActivity(Instrumentation.java:1417) 11-19 15:32:07.852: E/AndroidRuntime(19630): 在 android.app.Activity.startActivityForResult(Activity.java:3370) 11-19 15:32: 07.852: E/AndroidRuntime(19630): 在 android.app.Activity.startActivityForResult(Activity.java:3331) 11-19 15:32:07.852: E/AndroidRuntime(19630): 在 android.support.v4.app.FragmentActivity .

4

2 回答 2

4

我建议不要使用意图直接打开 gmail 撰写活动。使用如此严格的意图意味着用户需要安装 gmail 才能使用您的应用程序。并非每个人都将 gmail 用于他们的邮件客户端。此外,通过对类名进行硬编码,您可以让自己对类名更改可能导致您的活动中断(这是您当前问题的原因)的实例开放

我反编译了 gmail 4.2 应用程序,发现 ComposeActivity 类名和路径发生了变化.. 现在是com.android.mail.compose.ComposeActivity

您应该使用允许用户使用他们选择的电子邮件应用程序的通用电子邮件意图

于 2012-11-19T14:12:30.190 回答
0

仔细看看这条线

您是否在 AndroidManifest.xml 中声明了此活动

Perharps 你只是没有声明活动。

于 2012-11-19T13:51:22.857 回答