2015-06-03 26 views
1

我想從我的活動的onResume()調用一個類。但evrytime我正在上課沒有發現錯誤。android:從onResume調用類

下面是的onResume()的代碼:

@Override 
    protected void onResume() { 
     super.onResume(); 
     try { 
      sendHiddenMail sender = new sendHiddenMail("sidh*****@gmail.com", "pass"); 
      sender.sendMail("This is Subject", 
        "This is Body", 
        "sid*****@gmail.com", 
        "sid*****@gmail.com"); 
     } catch (Exception e) { 
      Log.e("SendMailsdfsdfsd", e.getMessage(), e); 
     } 

} 

這裏就是我想調用類:

public class sendHiddenMail extends javax.mail.Authenticator{ 

private String mailhost = "smtp.gmail.com"; 
private String user; 
private String password; 
private Session session; 

static { 
    Security.addProvider(new com.provider.JSSEProvider()); 
} 


public sendHiddenMail(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); 
    } 

    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)); 
     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"); 
     } 
    } 

} 

這裏是logcat的:

06-03 03:22:57.331: W/dalvikvm(4934): Unable to resolve superclass of Lcom/example/calllist/sendHiddenMail; (67) 
06-03 03:22:57.331: W/dalvikvm(4934): Link of class 'Lcom/example/calllist/sendHiddenMail;' failed 
06-03 03:22:57.331: E/dalvikvm(4934): Could not find class 'com.example.calllist.sendHiddenMail', referenced from method com.example.calllist.MainActivity.sendMail 
06-03 03:22:57.331: W/dalvikvm(4934): VFY: unable to resolve new-instance 34 (Lcom/example/calllist/sendHiddenMail;) in Lcom/example/calllist/MainActivity; 
06-03 03:22:57.331: D/dalvikvm(4934): VFY: replacing opcode 0x22 at 0x0000 
06-03 03:22:57.341: W/dalvikvm(4934): Unable to resolve superclass of Lcom/example/calllist/sendHiddenMail; (67) 
06-03 03:22:57.341: W/dalvikvm(4934): Link of class 'Lcom/example/calllist/sendHiddenMail;' failed 
06-03 03:22:57.401: D/dalvikvm(4934): DexOpt: unable to opt direct call 0x0039 at 0x06 in Lcom/example/calllist/MainActivity;.sendMail 
06-03 03:22:57.791: D/AndroidRuntime(4934): Shutting down VM 
06-03 03:22:57.791: W/dalvikvm(4934): threadid=1: thread exiting with uncaught exception (group=0xb1af6b90) 
06-03 03:22:57.811: E/AndroidRuntime(4934): FATAL EXCEPTION: main 
06-03 03:22:57.811: E/AndroidRuntime(4934): Process: com.example.calllist, PID: 4934 
06-03 03:22:57.811: E/AndroidRuntime(4934): java.lang.NoClassDefFoundError: com.example.calllist.sendHiddenMail 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at com.example.calllist.MainActivity.sendMail(MainActivity.java:102) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at com.example.calllist.MainActivity.getCallDetails(MainActivity.java:81) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at com.example.calllist.MainActivity.onResume(MainActivity.java:35) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.app.Activity.performResume(Activity.java:5322) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2759) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2798) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2231) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.app.ActivityThread.access$700(ActivityThread.java:135) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.os.Handler.dispatchMessage(Handler.java:102) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.os.Looper.loop(Looper.java:137) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at android.app.ActivityThread.main(ActivityThread.java:4998) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at java.lang.reflect.Method.invoke(Method.java:515) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
06-03 03:22:57.811: E/AndroidRuntime(4934):  at dalvik.system.NativeStart.main(Native Method) 
06-03 03:27:58.391: I/Process(4934): Sending signal. PID: 4934 SIG: 9 

我沒有在mainfest.xml中添加關於sendHiddenMail類的任何信息。

我不知道我錯在哪裏。

+0

我已經登錄logcat –

+0

這是非常基本的,但是你是否導入了類(假設需要)。另外,你的軟件包的結構是什麼? – SlashG

+0

是否導入了超類'javax.mail.Authenticator'?順便說一下,你應該使用以大寫字母開頭的類名。 –

回答

0

如果您正確導入javax.mail.Authenticator,在「編譯」時沒有錯誤,並且應用程序在運行時崩潰,則解決方案可能爲this link。 是的,如果您刪除類關係,您的代碼可能會工作,但它不能解決您的問題。嘗試清潔和重建項目。

+0

已嘗試清理該項目並重新構建它。什麼都沒有 –

+0

嘿,它的工作感謝 –

+0

不錯。然後,您可以通過點擊左側的複選標記來接受該答案。 –