Mailto Android:“不支持的操作”错误
我是新手,但我的代码片段有什么问题? 我在选择链接时收到错误:“此操作当前不受支持”。 这是我的密码:Mailto Android:“不支持的操作”错误,android,email,mobile,mailto,Android,Email,Mobile,Mailto,我是新手,但我的代码片段有什么问题? 我在选择链接时收到错误:“此操作当前不受支持”。 这是我的密码: public void addEmail() { TextView txt = (TextView) findViewById(R.id.emailtext); txt.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ Inten
public void addEmail() {
TextView txt = (TextView) findViewById(R.id.emailtext);
txt.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent intent = new Intent();
String uriText =
"mailto:youremail@gmail.com" +
"?subject=" + URLEncoder.encode("some subject text here") +
"&body=" + URLEncoder.encode("some text here");
Uri uri = Uri.parse(uriText);
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
startActivity(Intent.createChooser(sendIntent, "Send email"));
}});
}
非常感谢 试试这个,它对我有用:
public void addEmail() {
TextView txt = (TextView) findViewById(R.id.emailtext);
txt.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
String[] emails = {"youremail@gmail.com"};
String subject = "your subject";
String message = "your message";
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, emails);
email.putExtra(Intent.EXTRA_SUBJECT, subject);
email.putExtra(Intent.EXTRA_TEXT, message);
// need this to prompts email client only
email.setType("message/rfc822");
startActivity(Intent.createChooser(email, "Choose an Email client :"));
}});
}
问题可能是你正在一个官方的Android模拟器上运行,而你还没有在上面设置电子邮件帐户。发生这种情况时,模拟器会打开com.android.fallback.fallback活动,但在现实世界的设备上似乎不会发生这种情况 您可以使用以下代码在尝试启动意图之前检测到这一点:
ComponentName emailApp = intent.resolveActivity(getPackageManager());
ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback");
boolean hasEmailApp = emailApp != null && !emailApp.equals(unsupportedAction);
问题在于您尚未在emulator上设置电子邮件帐户。我在模拟器上也遇到了同样的问题,但在手机上测试时就没有了。@see@shkschneider,这是如何解决错误的?我在Android 4.0.2模拟器中遇到了这个问题,当时我还没有在Android电子邮件客户端中设置电子邮件帐户。在客户机中设置帐户解决了这个问题。@Sam没有解释如何使用意图正确发送电子邮件吗?下面您确认的答案似乎是同一方向的。这就是我认为我的链接解决了错误的方式。如果没有,那就糟糕了。@shkschneider,它确实解释了如何发送电子邮件,但它并没有真正解决不支持的操作错误的实际原因。问题中的代码实际上工作得很好,但它只是在特定情况下以这种方式中断,从我到目前为止的测试来看,这似乎是一种组合:使用模拟器、使用setData和意图不匹配。这个问题中的代码实际上似乎比setType方法更好,因为根据一些SO答案上的评论,这种方法会导致Skype和其他非电子邮件客户端符合目的。我已经测试并确认了这一点。问题似乎是由于在没有应用程序符合目的的情况下使用setData造成的。此答案只是重申了其他答案和注释中已经说明的内容。