0

我设置了两个按钮。一个打开撰写短信意图,另一个打开撰写电子邮件意图。短信意图工作正常,但电子邮件按钮没有响应。我创建了一个类别选择器,但没有显示出来....直到我点击短信按钮

这是我的代码

case R.id.button2:
    {
        String phoneNumber = "xxxxxxxxxx";``
        Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
        smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
        smsIntent.setType("vnd.android -dir/mms-sms");
        smsIntent.setData(Uri.parse("sms:"+phoneNumber));
        startActivity(smsIntent);


    }
    case R.id.button3:
    {
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"xxxxxxxx@gmail.com"});
        emailIntent.setType("plain/text");
        startActivity(Intent.createChooser(emailIntent, "Send email..."));

    }

有任何想法吗?

4

4 回答 4

5

try to put break; after each case xxx {}

于 2012-05-17T10:30:48.163 回答
0

如果您在安装了邮件客户端的真实设备上使用它,邮件意图才可用。我猜你的模拟器有问题。要让它在那里工作,您需要安装一个支持此意图的客户端。我猜你会收到如下错误:

android.content.ActivityNotFoundException: No Activity found to handle Intent 
于 2013-02-01T12:38:07.780 回答
0

检查设计中按钮的 ID(xml 文件)。

于 2013-02-01T19:33:24.553 回答
0

通用意图的开发人员指南警告说,如果没有应用程序的 Activity 响应意图,则会引发异常:

注意:如果设备上没有可以接收隐式 Intent 的应用程序,您的应用程序在调用 startActivity() 时会崩溃。要首先验证应用是否存在以接收 Intent,请在 Intent 对象上调用 resolveActivity()。如果结果为非空,则至少有一个应用程序可以处理该意图,并且调用 startActivity() 是安全的。如果结果为 null,则不应使用该意图,并且如果可能,您应该禁用调用该意图的功能。

例如:

private void sendEmail(String address) {
    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"xxxxxxxx@gmail.com"});
    emailIntent.setType("plain/text");
    if (emailIntent.resolveActivity(getPackageManager()) != null) {
        startActivity(Intent.createChooser(emailIntent, "Send email..."));
    } else {
        // TODO: Tell your user about it
    }
}

或者,您可以进行检查以onCreate()完全隐藏按钮。

于 2015-04-30T08:40:03.447 回答