我有一个收听来电的接收器。从这个接收器我开始一个服务,将发送电子邮件(使用Android Intent),但我得到一个例外(PLZ引用日志猫的日志)。
java.lang.RuntimeException:无法启动服务 com.pack.android.service.EmailService@40519818与Intent { CMP = com.pack.android.email.service / com.pack.android.service.EmailService :android.util.AndroidRuntimeException:从中调用startActivity() 在Activity上下文之外需要FLAG_ACTIVITY_NEW_TASK 旗。这真的是你想要的吗?
我设置了'FLAG_ACTIVITY_NEW_TASK'和'FLAG_FROM_BACKGROUND'。这不是用户活动。我正在尝试使用意图INTENT.SENDTO / SEND开始现有活动(发送电子邮件)。
奇怪的是错误: 引起:android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.SENDTO flg = 0x10000004(有额外内容)}
我在这里缺少什么?
我在使用Java Mail API发送电子邮件时遇到的另一个问题是邮件正在正常发送,它看起来像是什么但不知何故邮件似乎永远不会出现在邮箱中。我指的是以下链接,无需意图发送电子邮件: Send email without intent
如果有人可以对此提出一些见解,那将是gr8。
代码如下: 呼叫接收者: -
public class CallReceiver extends BroadcastReceiver
{
private static final String LOG_TAG = "CallReceiver";
private static final String ACTION = "android.intent.action.PHONE_STATE";
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("--------Inside onReceive of CallReceiver--------");
Log.d(LOG_TAG, "Inside onReceive");
if(intent.getAction().equals(ACTION)){
Log.d(LOG_TAG, "-----Criteria matched-----");
Intent emailIntent = new Intent(context, EmailService.class);
emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent.addFlags(Intent.FLAG_FROM_BACKGROUND);
context.startService(emailIntent);
}
}
}
电子邮件服务: -
public class EmailService extends Service {
private static final String LOG_TAG = "EmailService";
@Override
public IBinder onBind(Intent arg0)
{
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate()
{
super.onCreate();
Log.d(LOG_TAG, "-------On create called-------");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.d(LOG_TAG, "-----Inside On Start Command-----");
MailService mailer = new MailService("24adithya@gmail.com","24adithya@gmail.com","Test","Hi This is 5554 from Mail Service", "<b>HtmlBody</b>");
try {
boolean success = mailer.sendAuthenticated();
Log.d(LOG_TAG, String.valueOf(success));
} catch (Exception e) {
Log.e(LOG_TAG, "Failed sending email.", e);
}
try {
GMailSender sender = new GMailSender("%MyUserId%@gmail.com", "%Mypassword%");
sender.sendMail("Test Subject",
"Hi, This is 5554 from Gmail Sender",
"24adithya@gmail.com",
"24adithya@gmail.com");
} catch (Exception e) {
Log.e("SendMail", e.getMessage(), e);
}
/*Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent.addFlags(Intent.FLAG_FROM_BACKGROUND);
// emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[] { "24adithya@gmail.com" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
"Email from Intent");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
"Hi, This is 5554 from intent");
// getApplicationContext().startActivity(Intent.createChooser(emailIntent, "Send mail..."));
Log.d(LOG_TAG, "context = " + getApplicationContext());
startActivity(emailIntent);*/
return Service.START_STICKY;
}
@Override
public void onDestroy()
{
super.onDestroy();
Log.d(LOG_TAG, "-------On destroy called-------");
}
}
邮件服务:
public class MailService {
private static final String LOG_TAG = "MailService";
private String toList;
private String ccList;
private String bccList;
private String subject;
final private static String SMTP_SERVER = "smtp.gmail.com";
private String from;
private String txtBody;
private String htmlBody;
private String replyToList;
private boolean authenticationRequired = false;
public MailService(String from, String toList, String subject, String txtBody, String htmlBody) {
this.txtBody = txtBody;
this.htmlBody = htmlBody;
this.subject = subject;
this.from = from;
this.toList = toList;
this.ccList = null;
this.bccList = null;
this.replyToList = null;
this.authenticationRequired = true;
}
public boolean sendAuthenticated() throws AddressException, MessagingException {
authenticationRequired = true;
return send();
}
/**
* Send an e-mail
*
* @throws MessagingException
* @throws AddressException
*/
public boolean send() throws AddressException, MessagingException {
Log.d(LOG_TAG, "Inside Send !");
Properties props = new Properties();
// set the host smtp address
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", SMTP_SERVER);
props.put("mail.smtp.auth", "true"); // needed for gmail
props.put("mail.smtp.port", "465"); // gmail smtp port - 587
// props.put("mail.user", from);
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.quitwait", "false");
Session session;
if (authenticationRequired) {
Authenticator auth = new SMTPAuthenticator();
Log.d(LOG_TAG, "auth = "+auth);
session = Session.getDefaultInstance(props, auth);
} else {
session = Session.getDefaultInstance(props, null);
}
// get the default session
session.setDebug(true);
// create message
Message msg = new javax.mail.internet.MimeMessage(session);
// set from and to address
try {
msg.setFrom(new InternetAddress(from, from));
msg.setReplyTo(new InternetAddress[]{new InternetAddress(from,from)});
} catch (Exception e) {
msg.setFrom(new InternetAddress(from));
msg.setReplyTo(new InternetAddress[]{new InternetAddress(from)});
}
// set send date
msg.setSentDate(Calendar.getInstance().getTime());
// parse the recipients TO address
java.util.StringTokenizer st = new java.util.StringTokenizer(toList, ",");
int numberOfRecipients = st.countTokens();
javax.mail.internet.InternetAddress[] addressTo = new javax.mail.internet.InternetAddress[numberOfRecipients];
int i = 0;
while (st.hasMoreTokens()) {
addressTo[i++] = new javax.mail.internet.InternetAddress(st
.nextToken());
}
msg.setRecipients(javax.mail.Message.RecipientType.TO, addressTo);
// parse the replyTo addresses
if (replyToList != null && !"".equals(replyToList)) {
st = new java.util.StringTokenizer(replyToList, ",");
int numberOfReplyTos = st.countTokens();
javax.mail.internet.InternetAddress[] addressReplyTo = new javax.mail.internet.InternetAddress[numberOfReplyTos];
i = 0;
while (st.hasMoreTokens()) {
addressReplyTo[i++] = new javax.mail.internet.InternetAddress(
st.nextToken());
}
msg.setReplyTo(addressReplyTo);
}
// parse the recipients CC address
if (ccList != null && !"".equals(ccList)) {
st = new java.util.StringTokenizer(ccList, ",");
int numberOfCCRecipients = st.countTokens();
javax.mail.internet.InternetAddress[] addressCC = new javax.mail.internet.InternetAddress[numberOfCCRecipients];
i = 0;
while (st.hasMoreTokens()) {
addressCC[i++] = new javax.mail.internet.InternetAddress(st
.nextToken());
}
msg.setRecipients(javax.mail.Message.RecipientType.CC, addressCC);
}
// parse the recipients BCC address
if (bccList != null && !"".equals(bccList)) {
st = new java.util.StringTokenizer(bccList, ",");
int numberOfBCCRecipients = st.countTokens();
javax.mail.internet.InternetAddress[] addressBCC = new javax.mail.internet.InternetAddress[numberOfBCCRecipients];
i = 0;
while (st.hasMoreTokens()) {
addressBCC[i++] = new javax.mail.internet.InternetAddress(st
.nextToken());
}
msg.setRecipients(javax.mail.Message.RecipientType.BCC, addressBCC);
}
msg.setSubject(subject);
Multipart mp = new MimeMultipart("related");
// set body message
MimeBodyPart bodyMsg = new MimeBodyPart();
bodyMsg.setText(txtBody);
mp.addBodyPart(bodyMsg);
msg.setContent(mp);
// send it
try {
Address[] fromAddressArray = msg.getFrom();
for(Address address : fromAddressArray)
{
Log.d(LOG_TAG,"from = " + address.toString()+", ");
}
Address[] recipientAddressArray = msg.getAllRecipients();
for(Address address : recipientAddressArray)
{
Log.d(LOG_TAG,"recipient = " + address.toString()+", ");
}
Address[] replyToAddressArray = msg.getReplyTo();
for(Address address : replyToAddressArray)
{
Log.d(LOG_TAG,"replyTo = " + address.toString()+", ");
}
javax.mail.Transport.send(msg);
return true;
} catch (Exception e) {
Log.e(LOG_TAG, e.getMessage());
e.printStackTrace();
}
return false;
}
/**
* SimpleAuthenticator is used to do simple authentication when the SMTP
* server requires it.
*/
private static class SMTPAuthenticator extends javax.mail.Authenticator {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
String username = "%MyUserId%@gmail.com";
String password = "%Mypassword%";
return new PasswordAuthentication(username, password);
}
}
public String getToList() {
return toList;
}
public void setToList(String toList) {
this.toList = toList;
}
public String getCcList() {
return ccList;
}
public void setCcList(String ccList) {
this.ccList = ccList;
}
public String getBccList() {
return bccList;
}
public void setBccList(String bccList) {
this.bccList = bccList;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setFrom(String from) {
this.from = from;
}
public void setTxtBody(String body) {
this.txtBody = body;
}
public void setHtmlBody(String body) {
this.htmlBody = body;
}
public String getReplyToList() {
return replyToList;
}
public void setReplyToList(String replyToList) {
this.replyToList = replyToList;
}
public boolean isAuthenticationRequired() {
return authenticationRequired;
}
public void setAuthenticationRequired(boolean authenticationRequired) {
this.authenticationRequired = authenticationRequired;
}
}
Gmail发件人:
public class GMailSender extends javax.mail.Authenticator {
private static final String LOG_TAG = "GmailSenderService";
private String mailhost = "smtp.gmail.com";
private String popMailHost = "pop.gmail.com";
private String user;
private String password;
private Session session;
static {
Security.addProvider(new JSSEProvider());
}
public GMailSender(String user, String password) {
this.user = user;
this.password = password;
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", mailhost);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.quitwait", "false");
session = Session.getDefaultInstance(props, this);
session.setDebug(true);
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
try{
MimeMessage message = new MimeMessage(session);
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
message.setDataHandler(handler);
if (recipients.indexOf(',') > 0)
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
else
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
Address[] fromAddressArray = message.getFrom();
for(Address address : fromAddressArray)
{
Log.d(LOG_TAG,"from = " + address.toString()+", ");
}
Address[] recipientAddressArray = message.getAllRecipients();
for(Address address : recipientAddressArray)
{
Log.d(LOG_TAG,"recipient = " + address.toString()+", ");
}
Address[] replyToAddressArray = message.getReplyTo();
for(Address address : replyToAddressArray)
{
Log.d(LOG_TAG,"replyTo = " + address.toString()+", ");
}
Transport.send(message);
}catch(Exception e){
}
}
public class ByteArrayDataSource implements DataSource {
private byte[] data;
private String type;
public ByteArrayDataSource(byte[] data, String type) {
super();
this.data = data;
this.type = type;
}
public ByteArrayDataSource(byte[] data) {
super();
this.data = data;
}
public void setType(String type) {
this.type = type;
}
public String getContentType() {
if (type == null)
return "application/octet-stream";
else
return type;
}
public InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(data);
}
public String getName() {
return "ByteArrayDataSource";
}
public OutputStream getOutputStream() throws IOException {
throw new IOException("Not Supported");
}
}
}
Log Cat:
08-15 00:04:23.676: D/EmailService(522): -------On create called-------
08-15 00:04:23.686: D/EmailService(522): -----Inside On Start Command-----
08-15 00:04:23.686: D/MailService(522): Inside Send !
08-15 00:04:23.706: D/MailService(522): auth = com.pack.android.other.MailService$SMTPAuthenticator@40518f80
08-15 00:04:23.716: I/System.out(522): DEBUG: setDebug: JavaMail version 1.4.1
08-15 00:04:23.776: D/MailService(522): from = "24adithya@gmail.com" <24adithya@gmail.com>,
08-15 00:04:23.776: D/MailService(522): recipient = 24adithya@gmail.com,
08-15 00:04:23.776: D/MailService(522): recipient = rnyn@rediffmail.com,
08-15 00:04:23.776: D/MailService(522): replyTo = "24adithya@gmail.com" <24adithya@gmail.com>,
08-15 00:04:23.896: I/System.out(522): DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc.,1.4.1]
08-15 00:04:23.986: I/System.out(522): DEBUG SMTP: useEhlo true, useAuth true
08-15 00:04:24.001: I/System.out(522): DEBUG SMTP: useEhlo true, useAuth true
08-15 00:04:24.006: I/System.out(522): DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false
08-15 00:04:25.226: I/System.out(522): 220 mx.google.com ESMTP fu4sm8557775igc.4
08-15 00:04:25.226: I/System.out(522): DEBUG SMTP: connected to host "smtp.gmail.com", port: 465
08-15 00:04:25.246: I/System.out(522): EHLO localhost
08-15 00:04:25.566: I/System.out(522): 250-mx.google.com at your service, [117.219.113.96]
08-15 00:04:25.566: I/System.out(522): 250-SIZE 35882577
08-15 00:04:25.566: I/System.out(522): 250-8BITMIME
08-15 00:04:25.566: I/System.out(522): 250-AUTH LOGIN PLAIN XOAUTH
08-15 00:04:25.566: I/System.out(522): 250 ENHANCEDSTATUSCODES
08-15 00:04:25.566: I/System.out(522): DEBUG SMTP: Found extension "SIZE", arg "35882577"
08-15 00:04:25.566: I/System.out(522): DEBUG SMTP: Found extension "8BITMIME", arg ""
08-15 00:04:25.566: I/System.out(522): DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
08-15 00:04:25.576: I/System.out(522): DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
08-15 00:04:25.576: I/System.out(522): DEBUG SMTP: Attempt to authenticate
08-15 00:04:25.576: I/System.out(522): AUTH LOGIN
08-15 00:04:26.085: I/System.out(522): 334 VXNlcm5hbWU6
08-15 00:04:26.085: I/System.out(522): MjRhZGl0aHlhQGdtYWlsLmNvbQ==
08-15 00:04:26.408: I/System.out(522): 334 UGFzc3dvcmQ6
08-15 00:04:26.408: I/System.out(522): I2EsZmF3a2VzKzE=
08-15 00:04:27.365: I/System.out(522): 235 2.7.0 Accepted
08-15 00:04:27.386: I/System.out(522): DEBUG SMTP: use8bit false
08-15 00:04:27.488: I/System.out(522): MAIL FROM:<24adithya@gmail.com>
08-15 00:04:27.991: I/System.out(522): 250 2.1.0 OK fu4sm8557775igc.4
08-15 00:04:27.996: I/System.out(522): RCPT TO:<24adithya@gmail.com>
08-15 00:04:28.326: I/System.out(522): 250 2.1.5 OK fu4sm8557775igc.4
08-15 00:04:28.326: I/System.out(522): RCPT TO:<rnyn@rediffmail.com>
08-15 00:04:28.705: I/System.out(522): 250 2.1.5 OK fu4sm8557775igc.4
08-15 00:04:28.705: I/System.out(522): DEBUG SMTP: Verified Addresses
08-15 00:04:28.705: I/System.out(522): DEBUG SMTP: 24adithya@gmail.com
08-15 00:04:28.736: I/System.out(522): DEBUG SMTP: rnyn@rediffmail.com
08-15 00:04:28.736: I/System.out(522): DATA
08-15 00:04:29.586: I/System.out(522): 354 Go ahead fu4sm8557775igc.4
08-15 00:04:29.656: I/System.out(522): Date: Wed, 15 Aug 2012 00:04:23 +0530 (GMT+05:30)
08-15 00:04:29.656: I/System.out(522): From: "24adithya@gmail.com" <24adithya@gmail.com>
08-15 00:04:29.656: I/System.out(522): Reply-To: "24adithya@gmail.com" <24adithya@gmail.com>
08-15 00:04:29.656: I/System.out(522): To: 24adithya@gmail.com, rnyn@rediffmail.com
08-15 00:04:29.656: I/System.out(522): Message-ID: <1079391960.1.1344969263899.JavaMail.javamailuser@localhost>
08-15 00:04:29.656: I/System.out(522): Subject: Test
08-15 00:04:29.656: I/System.out(522): MIME-Version: 1.0
08-15 00:04:29.656: I/System.out(522): Content-Type: multipart/related;
08-15 00:04:29.656: I/System.out(522): boundary="----=_Part_0_1079137608.1344969263768"
08-15 00:04:29.656: I/System.out(522):
08-15 00:04:29.656: I/System.out(522): ------=_Part_0_1079137608.1344969263768
08-15 00:04:29.656: I/System.out(522): Content-Type: text/plain; charset=us-ascii
08-15 00:04:29.656: I/System.out(522): Content-Transfer-Encoding: 7bit
08-15 00:04:29.656: I/System.out(522):
08-15 00:04:29.656: I/System.out(522): Hi This is 5554 from Mail Service
08-15 00:04:29.656: I/System.out(522): ------=_Part_0_1079137608.1344969263768--
08-15 00:04:29.666: I/System.out(522): .
08-15 00:04:31.030: I/System.out(522): 250 2.0.0 OK 1344969267 fu4sm8557775igc.4
08-15 00:04:31.035: I/System.out(522): QUIT
08-15 00:04:31.055: D/EmailService(522): true
08-15 00:04:31.075: I/System.out(522): DEBUG: setDebug: JavaMail version 1.4.1
08-15 00:04:31.095: D/GmailSenderService(522): from = 24adithya@gmail.com,
08-15 00:04:31.105: D/GmailSenderService(522): recipient = 24adithya@gmail.com,
08-15 00:04:31.115: D/GmailSenderService(522): replyTo = 24adithya@gmail.com,
08-15 00:04:31.145: I/System.out(522): DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc.,1.4.1]
08-15 00:04:31.145: I/System.out(522): DEBUG SMTP: useEhlo true, useAuth true
08-15 00:04:31.156: I/System.out(522): DEBUG SMTP: useEhlo true, useAuth true
08-15 00:04:31.156: I/System.out(522): DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false
08-15 00:04:32.478: I/System.out(522): 220 mx.google.com ESMTP bp8sm22904456igb.12
08-15 00:04:32.498: I/System.out(522): DEBUG SMTP: connected to host "smtp.gmail.com", port: 465
08-15 00:04:32.498: I/System.out(522): EHLO localhost
08-15 00:04:32.905: I/System.out(522): 250-mx.google.com at your service, [117.219.113.96]
08-15 00:04:32.905: I/System.out(522): 250-SIZE 35882577
08-15 00:04:32.905: I/System.out(522): 250-8BITMIME
08-15 00:04:32.925: I/System.out(522): 250-AUTH LOGIN PLAIN XOAUTH
08-15 00:04:32.925: I/System.out(522): 250 ENHANCEDSTATUSCODES
08-15 00:04:32.960: I/System.out(522): DEBUG SMTP: Found extension "SIZE", arg "35882577"
08-15 00:04:32.960: I/System.out(522): DEBUG SMTP: Found extension "8BITMIME", arg ""
08-15 00:04:32.960: I/System.out(522): DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
08-15 00:04:32.960: I/System.out(522): DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
08-15 00:04:32.960: I/System.out(522): DEBUG SMTP: Attempt to authenticate
08-15 00:04:32.960: I/System.out(522): AUTH LOGIN
08-15 00:04:33.527: I/System.out(522): 334 VXNlcm5hbWU6
08-15 00:04:33.527: I/System.out(522): MjRhZGl0aHlhQGdtYWlsLmNvbQ==
08-15 00:04:33.915: I/System.out(522): 334 UGFzc3dvcmQ6
08-15 00:04:33.915: I/System.out(522): I2EsZmF3a2VzKzE=
08-15 00:04:34.785: I/System.out(522): 235 2.7.0 Accepted
08-15 00:04:34.807: I/System.out(522): DEBUG SMTP: use8bit false
08-15 00:04:34.815: I/System.out(522): MAIL FROM:<24adithya@gmail.com>
08-15 00:04:35.239: I/System.out(522): 250 2.1.0 OK bp8sm22904456igb.12
08-15 00:04:35.245: I/System.out(522): RCPT TO:<24adithya@gmail.com>
08-15 00:04:35.635: I/System.out(522): 250 2.1.5 OK bp8sm22904456igb.12
08-15 00:04:35.635: I/System.out(522): DEBUG SMTP: Verified Addresses
08-15 00:04:35.646: I/System.out(522): DEBUG SMTP: 24adithya@gmail.com
08-15 00:04:35.666: I/System.out(522): DATA
08-15 00:04:36.539: I/System.out(522): 354 Go ahead bp8sm22904456igb.12
08-15 00:04:36.605: I/System.out(522): Sender: 24adithya@gmail.com
08-15 00:04:36.605: I/System.out(522): To: 24adithya@gmail.com
08-15 00:04:36.605: I/System.out(522): Message-ID: <1079897912.2.1344969271138.JavaMail.javamailuser@localhost>
08-15 00:04:36.605: I/System.out(522): Subject: Test Subject
08-15 00:04:36.605: I/System.out(522): MIME-Version: 1.0
08-15 00:04:36.605: I/System.out(522): Content-Type: text/plain; charset=us-ascii
08-15 00:04:36.605: I/System.out(522): Content-Transfer-Encoding: 7bit
08-15 00:04:36.605: I/System.out(522):
08-15 00:04:36.605: I/System.out(522): Hi, This is 5554 from Gmail Sender
08-15 00:04:36.605: I/System.out(522): .
08-15 00:04:37.896: I/System.out(522): 250 2.0.0 OK 1344969274 bp8sm22904456igb.12
08-15 00:04:37.896: I/System.out(522): QUIT
答案 0 :(得分:4)
你得到的原因
android.content.ActivityNotFoundException: No Activity found to handle Intent {
act=android.intent.action.SENDTO flg=0x10000004 (has extras) }
是因为您从未在Intent中设置数据。 Android会尝试查找可以处理“SENDTO”操作和您提供的数据的活动。但是您没有提供任何数据,因此无法找到合适的活动。你有这个代码:
Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent.addFlags(Intent.FLAG_FROM_BACKGROUND);
// emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[] { "24adithya@gmail.com" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
"Email from Intent");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
"Hi, This is 5554 from intent");
// getApplicationContext().startActivity(Intent.createChooser(emailIntent, "Send mail..."));
Log.d(LOG_TAG, "context = " + getApplicationContext());
startActivity(emailIntent);
但您需要致电emailIntent.setdataAndType()
或emailIntent.setData()1 and
emailIntent.setType()`。
答案 1 :(得分:0)
在Log中查看这一行:
android.util.AndroidRuntimeException:从中调用startActivity() 在Activity上下文之外需要FLAG_ACTIVITY_NEW_TASK 旗。这真的是你想要的吗?
明确表示您需要FLAG_ACTIVITY_NEW_TASK才能从服务启动活动。所以添加
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
从服务
开始活动答案 2 :(得分:0)
使用FLAG_ACTIVITY_NEW_TASK
Intent myIntent = new Intent(getBaseContext(), myActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_FROM_BACKGROUND);
getApplication().startActivity(myIntent);