精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

BlackBerry應用開發者指南 Mail API

移動開發
本文為《BlackBerry應用開發者指南 Mail API》,BlackBerry Mail API在net.rim.blackberry.api.mail和net.rim.blackberry.mail.event中.

前不久我們給大家介紹過《BlackBerry應用開發者指南 使用受控API》,本文我們將介紹《BlackBerry應用開發者指南 Mail API》,BlackBerry Mail API在net.rim.blackberry.api.mail和net.rim.blackberry.mail.event中.

BlackBerry應用開發者指南

Mail API類

BlackBerry Mail API在net.rim.blackberry.api.mail和net.rim.blackberry.mail.event包中.它允許應用程序使用消息應用程序發送,接收和訪問消息..

(注:BlackBerry mail API提供訪問消息列表里的消息的能力,但不能訪問其他類型的消息,例如短消息,PIN消息,或者電話呼叫記錄.為了訪問電話呼叫記錄,使用電話呼叫記錄的API(net.rim.blackberry.phonelogs).)

當你的應用程序首先訪問mail API時,檢查一個NoClassDefFoundEorror!.如果系統管理員使用程序控制限制訪問mail API,此錯誤將拋出.

描述

Session

本類為消息操作表現了一個抽象模型.它提供訪問消息服務,存儲,以及傳輸的能力.應用程序獲取一個新的Session對發送或接收消息..

Store

本類模型化BlackBerry設備的底層消息存儲.為了獲得一個Store實例,調用Session實例.

Transport

本類代表了消息傳輸協議.

消息

一個Message對象包含了一組屬性,例如主題(subject),發送者(sender),接收者(recipients),以及消息體(它的內容).為獲取更多消息,參看14頁的”多部分消息”.

下面的類和接口定義了支持的屬性:

類或接口

描述

Address

本類代表了一個消息,ftp,http,或來自于(from),回復(reply to),接收屬性以及消息體里的wap地址.Address類包含一些字段來存儲完全許可的地址字符串,例如aisha.wahl@blackberry.com和顯示名.

Header

本類定義了支持的消息頭字段,例如 TO,FROM,以及DATE.

Message.Flag

本接口定義了消息標記,例如MOVED,OPENED,或SAVED.

Message.Icons

本接口定義了多種狀態圖標的字符串表現形式,例如一個已發送消息的檢查標記.

Message.RecipientType

本接口定義了支持的接收類型,例如TO,CC或BCC.

Message.Status

本接口為發送和接收消息定義了狀態選項,例如RX_RECEIVED,EX_ERROR,TX_SENT,以及TX_READ.

多部分消息(Multipart messages)

Mail API支持多部分消息.Multipart抽象類為一個或多個BodyPart對象提供一個容器.Multipart提供獲取和設置其子部分的方法.

每個BodyPart由消息頭字段(屬性)以及內容(消息體).Mail API提供四個BodyPart的實現.

描述

ContactAttachmentPart

本類代表了一個地址卡(address card)附件部分.使用javax.microedition.pim.Contact接口.為獲得更多信息,參看27頁的”使用地址本”.

TextBodyPart

本類代表了一個內容的消息體,此內容為text/plain類型.你可使用本類創建text/plain部分的多部分消息.

UnsupportedAttachmentPart

本類代表了一個不支持的附件部分.你不能實例化此類.內容類型一直為application/octet-stream.

SupportedAttachmentPart

本壘代表了一個支持的附件部分,對于此,在BlackBerry設備上由一個已注冊的附件處理器.

消息存儲

Folder類代表了一個本地郵件箱文件夾.定義了多種文件夾類型,包括INBOX,OUTBOX,SENT以及OTHER.你可以使用這些文件夾類型為獲取或保存消息獲取文件夾.

Store類模型化BlackBerry設備的底層消息存儲,并提供方法查找和獲取文件夾.文件夾以層次存在,正如下面例子中的描述一樣:

Mailbox - Aisha Wahl

Inbox

Projects

In Progress

Complete

Personal

一個標準的分隔符在層次結果里獨立每個文件夾,你可使用getSeperator()來得到它.你也可以列出Store對象里的所有文件夾,列出文件夾下的子文件夾,或者基于查詢字符串查找一個文件夾.

Folder類定義了一些方法獲取消息,或子文件夾,以及保存和刪除消息.

(注:多個Folder實例可以引用相同的BlackBerry設備文件夾.這樣,你可以一直調用相同Folder對象的addFolderListener()以及removeFolderListener().使用Folder.equals()判斷是否2個Folder對象引用了相同的folder.)#p#

Mail事件

BlackBerry mail事件包(net.rim.blackberry.api.mail.event)定義了下面的消息事件以及每個事件的監聽者:

事件

描述

FolderEvent

當文件夾里的一個消息增加或刪除時此事件觸發.

MessageEvent

當一個消息改變(消息體,消息頭,或標記)時此事件觸發.

StoreEvent

當一個消息以批處理(例如,當BlackBerry和桌面同步時)的形式加入到消息Store里,或從消息Store里刪除,此事件觸發.

MailEvent類是這些mail事件類的基類.它定義了一個抽象的dispatch()方法,為每個事件調用合適的監聽者方法.

EventListener接口為FolderListener和MessageListener接口提供一個通用接口.

監聽者

可用對象

FolderListener

可以將此類型加入到Folder或Store對象中.

MessageListener

可以將此類型加入到Message對象中.

StoreListener

可以將此類型加入到Store對象中.

操作消息

接收消息通知

FolderListener和StoreListener接口的實現允許你的應用程序接收消息通知.

  1. public class MailTest implements FolderListener, StoreListener { ... }  

增加一個監聽者到消息Store

為了監聽消息存儲事件,例如同步,獲取一個Store對象,并將一個StoreListener實例加給它.

  1. try {  
  2.  
  3.     Store store = Session.waitForDefaultSession().getStore();  
  4.  
  5. }  
  6.  
  7. catch (NoSuchServiceException e) {  
  8.  
  9.     System.out.println(e.toString());  
  10.  
  11. }  
  12.  
  13. store.addStoreListener(this);  
  14.  

當消息以批處理的形式增加和刪除時,StoreListener.batchOperation()的實現定義了應用程序的行為.例如,你的應用程序可能檢查任何它引用的對象是否刪除.

  1. void batchOperation(StoreEvent e)  
  2.  
  3. {  
  4.  
  5.     // Perform action when messages added or removed in batch operation.  
  6.  
  7. }  
  8.  
  9.    
  10.  
  11.  

增加一個監聽者給文件夾

為了監聽一個文件夾事件,例如將一個消息加入到一個特定的文件夾,為你想接收新消息通知的文件夾獲取一個Folder對象.將一個FoldListener實例加到此文件夾對象.

  1. Folder[] folders = store.list(Folder.INBOX);  
  2.  
  3. Folder inbox = folders[0];  
  4.  
  5. inbox.addFolderListener(this);  

當文件夾事件發生時, 實現FolderListener.messagesAdded() 和FolderListener.messagesRemoved()完成操作.例如,你可實現這些方法維護任何引用你的應用程序必須指定的mail文件夾的一致性.

  1. void messagesAdded(FolderEvent e) {  
  2.  
  3.     // Perform processing on added messages.  
  4.  
  5. }  
  6.  
  7.  
  8.  
  9. void messagesRemoved(FolderEvent e)  
  10.  
  11. {  
  12.  
  13.     // Perform processing on removed messages.  
  14.  
  15. }  
  16.  

接收一個消息的更多部分

缺省的,發送一個消息的第一部分(一般約2KB)到BlackBerry設備上.調用消息體部分上的hasMore()判斷在服務器上是否有更多的數據.調用moreRequestSent()判斷是否一個獲取更多數據的請求已經發出.調用more()請求一個消息的更多部分.

  1. if (( bp.hasMore())&&(! bp.moreRequestSent())     
  2.  
  3. {  
  4.  
  5.     Transport.more(bp, true);  
  6.  
  7. }  

more()的第二個參數是一個Boolean值,它指定了是否僅獲取消息體部分的下一部分(false),或者獲取所有剩下的部分(true).

打開一個消息

獲取消息存儲以及包含消息的文件夾:

  1. Store store = Session.waitForDefaultSession.getStore();  
  2.  
  3. Folder folder = Store.getFolder("SampleFolder");  

從文件夾獲取消息對象.迭代數組,并獲取信息,例如發送者,主題,顯示給用戶.

  1. Message[] msgs = folder.getMessages(); 

當用戶從列表中選擇一個消息時,調用Message對象上的方法獲取合適的字段以及消息體內容顯示給用戶.

  1. Message msg = msgs[0]; // Retrieve the first message.  
  2.  
  3. Address[] recipients = msg.getRecipients(Message.RecipientType.TO)  
  4.  
  5. Date sent = msg.getSentDate();  
  6.  
  7. Address from = msg.getFrom();  
  8.  
  9. String subject = msg.getSubject();  
  10.  
  11. Object o = msg.getContent();  
  12.  
  13. // Verify that the message is not multipart.  
  14.  
  15. if ( o instanceof String ) {  
  16.  
  17. String body = (String)o;  
  18.  
  19. }  
  20.  
  21. //...  

(注:調用一個消息上的getBodyText()方法獲取普通文本內容作為一個String.如果消息不包含普通文本,方法將返回null.)

發送一個消息

為發送消息,使用一個Transport對象,它代表了消息傳輸協議.

創建一個消息

創建一個Message對象,并指定一個文件夾拷貝已發送的消息.

  1. Store store = Session.getDefaultInstance().getStore();  
  2.  
  3. Folder[] folders = store.list(Folder.SENT);  
  4.  
  5. Folder sentfolder = folders[0];  
  6.  
  7. Message msg = new Message(sentfolder);  

指定接收者

創建一個Address對象的數組,然后將每個地址加入到數組中.你的應用程序應該捕獲一個AddressException異常,如果地址無效,它將會拋出:

  1. try {  
  2.  
  3.   toList[0]= new Address("aisha.wahl@blackberry.com""Aisha Wahl");  
  4.  
  5. }  
  6.  
  7. catch(AddressException e)  
  8.  
  9. {  
  10.  
  11.     System.out.println(e.toString());  
  12.  
  13. }  

增加接收者

調用Message.addRecipients().

將接收者類型(TO,CC,或BCC),以及地址數組作為參數提供給此方法.

如果你的消息有多個接收者類型,每個只調用一次addRecipients()方法.

  1. msg.addRecipients(Message.RecipientType.TO, toList); 

指定一個發送者的姓名和internet消息地址

調用setFrom(Address)

  1. Address from = new Address("scott.mcpherson@blackberry.com",  
  2.  
  3. "Scott McPherson");  
  4.  
  5. msg.setFrom(from);  

增加一個主題行

調用setSubject(String).

  1. msg.setSubject("Test Message"); 

指定消息內容

調用setContent(String).一般來說,你的應用程序從用戶輸入的文本域里獲取內容.

  1. try 
  2.  
  3. {  
  4.  
  5.     msg.setContent("This is a test message.");  
  6.  
  7. }  
  8.  
  9. catch(MessagingException e)  
  10.  
  11. {  
  12.  
  13.     System.out.println(e.getMessage());  
  14.  
  15. }  

發送消息

調用Transport.send(Message).

  1. try {  
  2.  
  3. Transport.send(msg);  
  4.  
  5. }  
  6.  
  7. catch(MessagingException e) {  
  8.  
  9.     System.out.println(e.getMessage());  
  10.  
  11. }  

回復消息

為了創建一個消息作為已存在消息的回復,調用Message.reply(Boolean).作為此方法的參數,指定true回復所有消息接收者,或設置false僅回復發送者.

  1. Store store = Session.waitForDefaultSession().getStore();  
  2.  
  3. Folder[] folders = store.list(INBOX);  
  4.  
  5. Folder inbox = folders[0];  
  6.  
  7. Message[] messages = folder.getMessages();  
  8.  
  9. if( messages.length > 0 ) {  
  10.  
  11.     Message msg = messages[0];  
  12.  
  13. }  
  14.  
  15. Message reply = msg.reply(true);  
  16.  
  17. Transport.send(reply);  

轉發一個消息

調用一個已存在Message對象的forward()方法.

(注:轉發消息的主題行會自動設置為FW:<original_subject>.)

  1. Message fwdmsg = msg.forward(); 

增加接收者

創建地址數組,然后調用addRecipients(int, Address[]).

  1. Address toList[] = new Address[1];  
  2.  
  3. toList[0]= new Address("aisha.wahl@blackberry.com""Katie Laird");  
  4.  
  5. fwdmsg.addRecipients(Message.RecipientType.TO, toList);  

指定消息內容

調用setContent(String).

<!--[if !vml]--><!--[endif]-->(注:你不能編輯轉化消息的文本, setContent()方法在轉化的消息前增加文本.)

  1. try {  
  2.  
  3.     fwdmsg.setContent("This is a forwarded message.");  
  4.  
  5. }  
  6.  
  7. catch(MessagingException e) {  
  8.  
  9.     System.out.println(e.getMessage());  
  10.  
  11. }  

發送消息

調用Send(Message).

  1. try {  
  2.  
  3.     Transport.send(fwdmsg);  
  4.  
  5. }  
  6.  
  7. catch(MessagingException e) {  
  8.  
  9.     System.out.println(e.getMessage());  
  10.  
  11. }  
  12.  
  13. try 
  14.  
  15. {  
  16.  
  17.     Transport.send(fwdmsg);  
  18.  
  19. }  
  20.  
  21. catch(MessagingException e) {  
  22.  
  23.     System.out.println(e.getMessage());  
  24.  

代碼實例

例:BasicMail.java

  1. /**  
  2.  
  3. * BasicMail.java  
  4.  
  5. * Copyright (C) 2001-2005 Research In Motion Limited.  
  6.  
  7. */ 
  8.  
  9. package com.rim.samples.docs.basicmail;  
  10.  
  11. import net.rim.blackberry.api.mail.*;  
  12.  
  13. import net.rim.blackberry.api.mail.event.*;  
  14.  
  15. import net.rim.device.api.system.*;  
  16.  
  17.  
  18.  
  19. public class BasicMail extends Application {  
  20.  
  21.     private Store store;  
  22.  
  23.     static void main (String args[]) {  
  24.  
  25.        BasicMail app = new BasicMail();  
  26.  
  27.        app.enterEventDispatcher();  
  28.  
  29.        }  
  30.  
  31.     BasicMail() {  
  32.  
  33.        Store store = Session.getDefaultInstance().getStore();  
  34.  
  35.        Folder[] folders = store.list(Folder.SENT);  
  36.  
  37.        Folder sentfolder = folders[0];  
  38.  
  39.        // Create message.  
  40.  
  41.        Message msg = new Message(sentfolder);  
  42.  
  43.        // Add TO Recipients.  
  44.  
  45.        Address toList[] = new Address[1];  
  46.  
  47.        try {  
  48.  
  49.            toList[0]= new Address(“scott.tooke@rim.com”, “Scott Tooke”);  
  50.  
  51.        }  
  52.  
  53.        catch(AddressException e) {  
  54.  
  55.            System.out.println(e.toString());  
  56.  
  57.        }  
  58.  
  59.        try {  
  60.  
  61.            msg.addRecipients(Message.RecipientType.TO, toList);  
  62.  
  63.        }  
  64.  
  65.        catch (MessagingException e) {  
  66.  
  67.            System.out.println(e.toString());  
  68.  
  69.        }  
  70.  
  71.         
  72.  
  73.        // Add CC Recipients.  
  74.  
  75.        Address ccList[] = new Address[1];  
  76.  
  77.        try {  
  78.  
  79.            ccList[0]= new Address("katie.laird@rim.com""Katie Laird");  
  80.  
  81.        }  
  82.  
  83.        catch(AddressException e) {  
  84.  
  85.            System.out.println(e.toString());  
  86.  
  87.        }  
  88.  
  89.         
  90.  
  91.        try {  
  92.  
  93.            msg.addRecipients(Message.RecipientType.CC, ccList);  
  94.  
  95.            }  
  96.  
  97.        catch (MessagingException e) {  
  98.  
  99.            System.out.println(e.toString());  
  100.  
  101.        }  
  102.  
  103.         
  104.  
  105.        // Add the subject.  
  106.  
  107.        msg.setSubject("A Test Email");  
  108.  
  109.         
  110.  
  111.        // Add the message body.  
  112.  
  113.        try {  
  114.  
  115.            msg.setContent("This is a test message.");  
  116.  
  117.        }  
  118.  
  119.        catch(MessagingException e)  
  120.  
  121.        {  
  122.  
  123.            // Handle messaging exceptions.  
  124.  
  125.        }  
  126.  
  127.         
  128.  
  129.        // Send the message.  
  130.  
  131.        try {  
  132.  
  133.            Transport.send(msg);  
  134.  
  135.            }  
  136.  
  137.        catch(MessagingException e) {  
  138.  
  139.            System.out.println(e.getMessage());  
  140.  
  141.            }  
  142.  
  143.        System.out.println("Email sent successfully.");  
  144.  
  145.        System.exit(0);  
  146.  
  147.        }  
  148.  
  149.     }  

管理文件夾

為了列出,接收并搜索文件夾,在缺省Session上調用getStore()獲取一個Store對象.

  1. Store store = Session.waitForDefaultSession().getStore(); 

列出mailbox store的文件夾

調用Store.List().

  1. Folder[] folders = store.list(); 

根據類型獲取文件夾數組

調用List(int).把文件類型作為參數提供給此方法.

  1. Folder[] folders = store.list(INBOX);  
  2.  
  3. Folder inbox = folders[0];  

搜索獲取文件夾數組

為了獲取層次結構上符合指定查詢字符串的所有文件夾,調用findFolder(String).

  1. Folder[] folders = store.findFolder("Inbox"); 

findFolder(String).方法返回一個與指定字符串匹配的文件夾數組,或者如果匹配的文件夾沒有找到,返回一個空的數組.

根據名稱獲取一個文件夾

調用getFolder(String).把文件夾的絕對路徑作為參數.如果文件夾沒有找到, FolderNotFoundException異常將拋出.

  1. Folder folder = store.getFolder("Mailbox - Aisha Wahl/Inbox/Projects"); 

根據ID獲取一個文件夾

調用getID()獲取文件夾ID,然后調用ID作為參數的getFolder()方法.

  1. Folder[] folders = store.list();  
  2.  
  3. long id = folders[0].getId();  
  4.  
  5. Folder f2 = store.getFolder(id);  
  6.  

歸檔(File)消息

調用Folder對象的appendMessage(Message)方法.

  1. Message msg = new Message();  
  2.  
  3. //...  
  4.  
  5. Folder folder = store.getFolder("Inbox");  
  6.  
  7. folder.appendMessage(msg);  
  8.  

管理附件

Mail API 允許你在BlackBerry設備上打開一個進來的消息附件,并且可以創建一個發出去的附件.一個消息附件作為多部分消息的一個獨立BodyPart對象表現.

創建一個自定義的附件處理器

AttachmentHandler接口的實現定義了一個自定義的附件處理器.

注冊接受的MIME類型

supports(String)的實現注冊一個附件處理器接受的附件的MIME類型.當BlackBerry設備接收到一個附件時,此方法被調用.

  1. public boolean supports(String contentType) {  
  2.  
  3.       return (contentType.toLowerCase().indexOf("contenttype") != -1 ? true : false);  
  4.  
  5. }  
  6.  

定義一個相關菜單項字符串

在消息列表中,當用戶選擇一個附件時,menuString()的實現返回一個顯示的菜單項字符串.

  1. public String menuString() {  
  2.  
  3.     return "Custom Attachment Viewer";  
  4.  
  5. }  

定義附件處理

run()的實現完成了對附件的合理處理,并將附件顯示給用戶.

  1. public void run(Message m, SupportedAttachmentPart p) {  
  2.  
  3.     // Perform processing on data.  
  4.  
  5.     Screen view = new Screen();  
  6.  
  7.     view.setTitle(new LabelField("Attachment Viewer"));  
  8.  
  9.     view.add(new RichTextField(new String((byte[])p.getContent())));  
  10.  
  11. }  

(注: 當在消息列表里選擇相應的菜單項時,調用run()方法.)

注冊一個附件處理器

AttachmentHandlerManager類控制附件是如何在BlackBerry設備上處理的.當用戶打開一個相關類型的附件時,為了使消息應用程序調用你的自定義附件,調用addAttachmentHandler()注冊你的附件處理器.

(注:BES附件服務在接收附件時有第一優先級,第三方附件處理器不能覆蓋缺省BlackBerry設備的行為.)

  1. AttachmentHandlerManager m = AttachmentHandlerManager.getInstance();  
  2.  
  3. CustomAttachmentHandler ah = new CustomAttachmentHandler();  
  4.  
  5. m.addAttachmentHandler(ah);  

獲取附件

SupportedAttachmentPart類代表了一個BlackBerry設備上對應查看器的附件.在BlackBerry設備上.,一個沒有查看器的附件作為一個UnsupportedAttachmentPart表現.

獲取附件內容

調用getContent().

  1. String s = new String((byte[])p.getContent()); 

獲取附件信息

SupportedAttachmentPart類提供多個方法獲取附件信息.下面的例子調用getName()和getSize()獲取附件名和大小.

  1. public void run(Message m, SupportedAttachmentPart p) {  
  2.  
  3.      ...  
  4.  
  5.      String name = p.getName();  
  6.  
  7.      int size = p.getSize();  
  8.  
  9.     }  

發送一個帶有附件的消息

通過創建一個新的Multipart對象創建一個多部分信息.為了創建每個附件組件,創建一個SupportedAttachmentPart的對象,把Multipart作為它的父組件.為了把每個SupportedAttachmentPart增加到Multipart,調用對象上的addBodyPart(SupportedAttachmentPart).

當調用Message對象的setContent(Multipart)時,將 Multipart對象作為參數傳入.

  1. MultiPart multipart = new MultiPart(); // Default type of multipart/mixed.  
  2.  
  3. SupportedAttachmentPart attach =  
  4.  
  5.     new SupportedAttachmentPart( multipart, "application/x-example""filename", data);  
  6.  
  7. multipart.addBodyPart(attach); // Add the attachment to the multipart.  
  8.  
  9. msg.setContent(multipart);  
  10.  
  11. Transport.send(msg); // Send the message.  
  12.  

 【編輯推薦】

  1. BlackBerry應用開發者指南 使用受控API
  2. 在NetBeans Java ME polish環境下開發BlackBerry應用
  3. 簡介RIM最新官方BlackBerry JDE 4.7
  4. 簡介BlackBerry API
  5. Java語言編寫BlackBerry應用程序
責任編輯:佚名 來源: 10086
相關推薦

2011-04-13 13:38:57

選項APIBlackBerry

2011-04-13 11:31:06

PIM APIBlackBerry

2011-04-02 13:44:08

2011-04-14 10:05:16

BlackBerry

2011-04-14 10:03:32

UI組件BlackBerry

2011-04-13 14:10:27

.alx文件BlackBerry

2011-04-14 10:34:08

BlackBerry

2010-05-22 16:57:09

BlackBerry開

2022-01-17 19:34:43

SentryWeb APISentry API

2011-04-18 11:00:34

使用音頻BlackBerry

2011-07-19 09:51:32

性能優化Designing FAndroid

2011-02-16 16:45:23

MWCRIMBlackBerry

2011-04-26 10:19:46

BlackBerry

2018-03-27 23:25:40

Paddle

2020-07-15 07:00:00

移動應用開發者指南

2013-08-29 13:41:42

Windows 8.1

2011-04-15 15:16:28

使用圖像對象畫圖BlackBerry

2024-02-01 09:37:42

Kubernetes服務網格? 命令

2019-08-16 10:55:37

開發者技能AI

2024-05-07 08:45:16

OpenAILlamaIndex大語言模型
點贊
收藏

51CTO技術棧公眾號

在线观看18视频网站| 日本久久亚洲电影| 两女双腿交缠激烈磨豆腐| 国产不卡在线| a美女胸又www黄视频久久| 青青草99啪国产免费| 911国产在线| 亚洲一区二区三区四区电影 | 欧美精品一区二区三区在线播放 | 五月天免费网站| 日韩区一区二| 色av一区二区| 一道本在线观看视频| 免费看国产片在线观看| 亚洲一区二区三区高清| 日韩在线视频免费观看高清中文 | 中文资源在线播放| 午夜国产一区| 中国china体内裑精亚洲片| 又黄又爽又色的视频| 91精品xxx在线观看| 亚洲精品欧美综合四区| 日韩经典在线视频| 91精品在线视频观看| 亚洲久色影视| 欧美成人精品xxx| 亚洲精品午夜视频| 国产精品xxxav免费视频| 欧美日韩不卡视频| 欧美成人xxxxx| 午夜dj在线观看高清视频完整版| 国产欧美日产一区| 国产一区在线观| 国产黄色片网站| 麻豆精品在线播放| 日韩美女在线观看| 日韩免费视频网站| 欧美体内she精视频在线观看| 中文字幕久久久av一区| 日本丰满少妇裸体自慰| 亚洲精品一区国产| 91精品国产全国免费观看| 五月天婷婷激情视频| 天堂av中文在线观看| 亚洲制服丝袜av| 日本一区二区三区四区五区六区| jizz在线观看视频| 久久久综合精品| 狠狠色综合欧美激情| www.五月天激情| 国产中文字幕精品| 成人网中文字幕| 国产精品区在线观看| 免费xxxx性欧美18vr| 国产成人精品国内自产拍免费看 | 国产精品无码一区二区三区| 久久精品色播| 日韩成人在线视频| 北岛玲一区二区| 亚洲精品亚洲人成在线| 日韩精品免费在线| 成人免费毛片糖心| 欧美码中文字幕在线| 在线观看欧美成人| 手机av在线不卡| 成人激情开心网| 日韩有码在线播放| 欧美日韩黄色网| 女生裸体视频一区二区三区| 欧美精品一本久久男人的天堂| 欧美成人精品欧美一级私黄| 欧美特黄视频| 欧美一级淫片aaaaaaa视频| 中文字字幕在线中文| 日韩精品每日更新| 国产精自产拍久久久久久蜜| 国产一区二区三区成人| 国产精品自在欧美一区| 国产91亚洲精品一区二区三区| 欧美视频在线观看一区二区三区| 不卡视频一二三| 蜜桃麻豆91| 第一页在线观看| 中文字幕欧美一区| 国产精品自拍合集| 久久久久久久| 欧美日韩精品系列| 欧美日韩一区二区区别是什么| 国产精品115| 亚洲色图偷窥自拍| 视频国产一区二区| 亚洲高清资源| 国产精品高潮粉嫩av| 国产v在线观看| 91视视频在线直接观看在线看网页在线看| 欧美成人dvd在线视频| 伊人免费在线| 亚洲v日本v欧美v久久精品| 日日碰狠狠躁久久躁婷婷| 成人51免费| 亚洲美女黄色片| 久久精品亚洲a| 亚洲永久视频| 亚洲尤物视频网| 全色精品综合影院| 亚洲日韩欧美一区二区在线| 久久国产亚洲精品无码| 亚洲精品aaa| 日韩精品在线观看视频| 日韩欧美综合视频| 久久成人国产| 国产66精品久久久久999小说| 国产精品一二三区视频| 一区二区免费看| 亚洲污视频在线观看| 狼人精品一区二区三区在线 | 成人午夜在线影视| 黑人欧美xxxx| 91av免费观看| 久久裸体网站| 日本三级韩国三级久久| 亚洲精品字幕在线| 中文字幕制服丝袜成人av | 久久青草伊人| 欧美一级欧美三级在线观看| 女人黄色一级片| 亚洲视频1区| 97超碰人人看人人| 日本成a人片在线观看| 91官网在线免费观看| 亚洲啪av永久无码精品放毛片| 天堂美国久久| 国产精品专区第二| 国产51人人成人人人人爽色哟哟 | 日韩中文字幕无砖| 最新中文字幕亚洲| 国产一级片av| 久久久久久9999| www.中文字幕在线| 色婷婷av一区二区三区丝袜美腿| 欧美激情欧美激情| aaa一区二区三区| 亚洲视频网在线直播| 中文字幕精品一区二区三区在线| 成人精品视频| 国产激情久久久| 国内三级在线观看| 色综合天天综合色综合av| 少妇饥渴放荡91麻豆| 西西人体一区二区| 蜜桃久久影院| 男人皇宫亚洲男人2020| 亚洲男人天堂手机在线| aaa在线视频| 久久久.com| 久久精品香蕉视频| 激情五月综合| 国产精品永久免费视频| 网友自拍视频在线| 在线不卡a资源高清| www欧美com| 高清在线成人网| 色欲色香天天天综合网www| 好吊妞国产欧美日韩免费观看网站| 欧美激情中文字幕乱码免费| 欧洲精品久久一区二区| 欧美视频免费在线| 精品欧美一区二区久久久| 日本不卡一区二区三区高清视频| 亚洲精品中文字幕乱码三区不卡| 精品自拍视频| 欧美大学生性色视频| 欧美 日韩 中文字幕| 色88888久久久久久影院野外| 无码人妻丰满熟妇啪啪欧美| 麻豆成人免费电影| 久久久99精品视频| 欧美日韩导航| 国产日韩欧美在线播放| 四虎av在线| 亚洲精品美女久久久久| 五月婷婷激情五月| 亚洲天堂福利av| 亚洲香蕉中文网| 视频一区欧美精品| 最新av在线免费观看| 啪啪激情综合网| 国产日韩在线观看av| 爱情岛论坛亚洲品质自拍视频网站| 亚洲精品大尺度| 亚洲天堂手机版| 亚洲一级二级三级在线免费观看| 素人fc2av清纯18岁| 精品一区二区三区av| 人妻久久久一区二区三区| 欧美精品一区二区三区中文字幕| 91视频免费网站| 亚洲欧洲美洲av| 久久久国产影院| 日本v片在线免费观看| 欧美一级xxx| 在线天堂中文字幕| 亚洲天堂av老司机| 性欧美13一14内谢| 国产精品18久久久久| 麻豆传传媒久久久爱| 欧美a级一区| 色婷婷精品国产一区二区三区| 99热这里只有精品首页 | 国产精品美女久久久久人| 久久久综合免费视频| 日本在线免费播放| 亚洲欧美www| 欧美熟妇另类久久久久久不卡 | 国内老熟妇对白hdxxxx| 在线视频国内一区二区| 精品在线免费观看视频| 国产精品乱人伦中文| 五十路六十路七十路熟婆| 国产在线播精品第三| 妞干网在线免费视频| 亚洲激情不卡| 香港三级日本三级a视频| 日韩一区二区中文| 欧美日产一区二区三区在线观看| xxxxxhd亚洲人hd| 亚洲mm色国产网站| 日韩精品第二页| 国产精品91久久久久久| 激情aⅴ欧美一区二区欲海潮| 久久中文字幕在线视频| 日本三级视频在线观看| 在线中文字幕日韩| 国产亚洲依依| 亚洲欧美中文另类| 日韩av成人| 亚洲精品视频网上网址在线观看| 可以免费看毛片的网站| 欧美一区二区福利视频| 一区不卡在线观看| 欧美日韩久久不卡| 怡红院男人的天堂| 欧美影院午夜播放| 亚洲精品91天天久久人人| 日本久久电影网| 久久国产乱子伦精品| 在线观看视频一区二区| 亚洲大尺度在线观看| 欧美中文字幕一区二区三区| 免费精品一区二区| 欧美日韩精品一区二区三区蜜桃 | 亚洲成年人在线播放| www.国产欧美| 欧美变态tickle挠乳网站| www.日本在线观看| 亚洲精品一区二区三区香蕉| 人人妻人人澡人人爽人人欧美一区 | 一区二区成人av| av在线第一页| 中文字幕v亚洲ⅴv天堂| 欧洲美女少妇精品| 欧美精品在线免费播放| 蜜桃成人365av| 亚洲91精品在线| 欧美gay视频| 国产日韩欧美另类| 51亚洲精品| 欧美成人一区二区在线| 欧美色女视频| 青青草免费在线视频观看| 欧美精品不卡| 国产午夜伦鲁鲁| 老司机午夜精品99久久| 下面一进一出好爽视频| 成人精品视频一区二区三区 | 国模极品一区二区三区| 欧美aa免费在线| 国产va免费精品高清在线观看| 成人久久网站| 国产91亚洲精品一区二区三区| 一本色道久久综合狠狠躁的番外| 亚洲精品欧洲精品| 国产精品a级| 成人一级片网站| 精品一区二区在线免费观看| 在线播放第一页| 久久久精品免费网站| 亚洲国产123| 精品久久久久国产| 亚洲在线视频播放| 亚洲成在人线av| 中文字幕在线免费| 91精品国产免费久久久久久| 国产成人精选| 国产亚洲二区| 四季av一区二区凹凸精品| 91成人综合网| 卡一卡二国产精品 | 九九九热精品免费视频观看网站| 松下纱荣子在线观看| 成人午夜黄色影院| 国产探花在线精品| 国产精品久久久久9999爆乳| 视频一区中文字幕| 亚洲色图欧美日韩| 亚洲婷婷国产精品电影人久久| 国产精品第5页| 精品国产一区二区三区忘忧草 | 欧美成人午夜免费视在线看片| 成人片免费看| 国产成人精品免费视频大全最热| 第一sis亚洲原创| 丝袜老师办公室里做好紧好爽| 国产乱码精品一区二区三区五月婷| 熟女少妇一区二区三区| 亚洲综合视频在线观看| 亚洲系列在线观看| 亚洲精品永久免费| 成人性生交大片免费看在线播放| 国产一区视频在线| 精品国产一区二区三区久久久樱花 | 欧美久久综合| 亚洲美女性囗交| 国产精品婷婷午夜在线观看| 日韩不卡在线播放| 精品国产免费一区二区三区四区| av毛片在线免费| 成人啪啪免费看| 亚洲第一偷拍| 五月天开心婷婷| 国产精品青草综合久久久久99| 特级西西444www大精品视频免费看| 精品久久人人做人人爰| 中文字幕在线观看网站| 91在线国产电影| 91成人国产| 涩多多在线观看| 中文字幕色av一区二区三区| 亚洲天堂视频在线| 日韩中文字幕视频在线| 97成人超碰| 亚洲在线播放电影| 免费观看在线色综合| 国产视频不卡在线| 欧美亚洲一区三区| www免费网站在线观看| 国产成人精品一区二区| 亚洲制服欧美另类| 99久久国产宗和精品1上映| 久久久无码精品亚洲日韩按摩| 日韩中文字幕在线观看视频| 精品无人区乱码1区2区3区在线| 一区二区精品伦理...| 欧美不卡三区| 欧美a一区二区| 美女av免费看| 欧美乱妇23p| 日本在线视频www鲁啊鲁| 国产成人成网站在线播放青青| 在线成人亚洲| 熟妇高潮精品一区二区三区| 色94色欧美sute亚洲线路一ni| wwwxxx在线观看| 91九色综合久久| 国产精品99免费看| 噜噜噜在线视频| 欧美亚洲综合在线| 国产成人l区| 久久国产精品高清| 日韩1区2区3区| 国产激情无码一区二区三区| 欧美mv和日韩mv的网站| 中文字幕资源网在线观看免费 | 日韩欧美视频一区二区三区| 免费黄色片在线观看| 国产色视频一区| 伊人影院久久| 在线观看日本中文字幕| 51精品久久久久久久蜜臀| segui88久久综合| 日韩电影免费观看高清完整| 国产在线精品一区二区不卡了 | 国产盗摄在线视频网站| 久久免费看av| 久久99精品久久久久婷婷| www.国产成人| 中文字幕日韩在线观看| jizz性欧美2| 亚州精品一二三区| 亚洲国产一区二区三区青草影视 | 精品国产拍在线观看| 老汉色老汉首页av亚洲| 亚洲欧美国产日韩综合| 亚洲国产精品久久艾草纯爱| 成人高潮成人免费观看| 粉嫩av免费一区二区三区| 日韩成人dvd| 日韩成人免费在线视频| 日韩网站免费观看高清| 欧美交a欧美精品喷水|