2011-06-21 58 views
1

我正在开发一个已经存在的应用程序,但我正在开发只是为了学习。我正在开发面向Android的GMail客户端应用程序。我尝试过使用Content Observer,但无法找到GMail Inbox的Content Provider URI。我想通过设置客户端来尝试其他方式。我的客户端已建立,但我不知道如何实例化此客户端以击中GMail服务器。如何启动Android应用程序与GMail帐户通话?

以下是我的代码:

GMailInbox.java

package com.tyco.gmailApp; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

public class GmailInbox extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //GmailObserver go = new GmailObserver(); 
     //this.getApplicationContext().getContentResolver().registerContentObserver(Uri.parse("content://imap.gmail.com"), true, go); 

     Intent myService = new Intent(this,GMailService.class); 
     myService.putExtra("user", "[email protected]"); 
     myService.putExtra("password", "brooklyn"); 
     startService(myService); 
    } 
} 

GMailService.java

package com.tyco.gmailApp; 


import java.util.Properties; 
import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.view.inputmethod.InputMethodSession; 
import android.view.inputmethod.InputMethod.SessionCallback; 
public class GMailService extends Service 
{ 

    private String mailhost = "imaps.gmail.com"; 
    private String user; 
    private String password; 

    @Override 
    public IBinder onBind(Intent intent){ 
     return null; 
    } 

    @Override 
    public void onCreate(){ 
     super.onCreate(); 


    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) { 
     super.onStart(intent, startId); 
     this.user = intent.getStringExtra("user"); 
     this.password = intent.getStringExtra("password");; 
     Properties props = new Properties(); 
     props = System.getProperties(); 
     props.setProperty("mail.store.protocol", "imaps"); 
     props.setProperty("mail.imaps.host", mailhost); 
     props.put("mail.imaps.auth", "true"); 
     props.put("mail.imaps.port", "993"); 
     props.put("mail.imaps.socketFactory.port", "993"); 
     props.put("mail.imaps.socketFactory.class", 
        "javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.imaps.socketFactory.fallback", "false"); 
     props.put("mail.imaps.socketFactory.fallback", "false"); 
     props.setProperty("mail.imaps.quitwait", "false"); 


// I Don't Know what to do here 



    } 




} 

我不知道所有收集到的信息后做什么属性对象。请提出建议。

问候, 拉胡尔·贾斯沃尔

回答

1

添加该代码与邮件服务器

Session session = Session.getDefaultInstance(props, null); 
    try{ 
     Store store = session.getStore("imaps"); 
     store.connect(mailhost, mailid,password);  
     Folder folder = store.getFolder("INBOX"); 
     folder.open(Folder.READ_ONLY); 
     int count=folder.getUnreadMessageCount(); 
     Message message[] = folder.getMessages(); 
     for (int i=0, n=message.length; i<n; i++) { 
       System.out.println("subject " +message[i].getSubject()); 
     } 
     } 
+0

连接我尝试这样的代码,但会议在javax.mail包中定义了一类不被支持的Android。 – Rahul

+0

我将mail-1.4_1.jar添加到我的项目中。现在我收到以下错误: javax.mail.MessagingException:主机未解析:imaps.gmail.com; 嵌套的异常是: java.net.SocketException:主机未解决:imaps.gmail.com 我解决了它通过修改我的mailHost url为“imap.gmail.com”而不是“imaps.gmail.com” – Rahul

相关问题