精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品天天av精麻传媒| 精品欧美国产| 黄色片子在线观看| av成人资源网| 日韩欧美高清在线视频| 一本久久a久久精品vr综合| 国产美女明星三级做爰| 伊人久久综合| 在线丨暗呦小u女国产精品| 91精品视频国产| 欧美亚洲日本精品| 中文字幕综合网| 久久艳妇乳肉豪妇荡乳av| 中文字幕免费在线看| 欧美二区视频| 国产一区二区黑人欧美xxxx| 国产精品熟女一区二区不卡| 阿v视频在线观看| 国产精品视频线看| 精品国产乱码久久久久久88av| 国产免费www| 国产一区亚洲| 最近2019中文字幕大全第二页 | 欧美24videosex性欧美| 久久精品欧美日韩精品 | www.com毛片| 麻豆网在线观看| 91蝌蚪porny| 91中文在线观看| 天干夜夜爽爽日日日日| 国产精品激情电影| 久久色免费在线视频| 免费观看av网站| jizz性欧美23| 67194成人在线观看| 日本在线观看a| www.综合网.com| 最新日韩av在线| 日韩免费av一区二区三区| 性欧美13一14内谢| 在线观看视频二区| 欧美在线二区| 北条麻妃一区二区三区中文字幕| 一区二区三区伦理片| 国产精品超碰| 精品国产乱码久久久久久1区2区 | 国产尤物一区二区| 国产精品激情自拍| 亚洲欧美自拍视频| 亚洲精选一区| 久久人人爽人人爽人人片av高请| 国产一二三四区| 999成人精品视频线3| 亚洲日韩第一页| 亚洲一区二区乱码| 欧美成人午夜77777| 精品粉嫩超白一线天av| 欧洲成人午夜精品无码区久久| 国产精品xnxxcom| 欧美欧美欧美欧美首页| 中文字幕成人在线视频| 本网站久久精品| 欧美午夜精品一区二区蜜桃| 欧美 日韩 国产 激情| 欧美xxxxxx| 日本乱人伦一区| 999在线免费视频| 欧美日韩国产网站| 欧美视频在线一区| 在线免费视频一区| 先锋影音一区二区| 7777精品久久久大香线蕉 | 成人日韩视频| 日韩午夜电影av| 性猛交╳xxx乱大交| 国产一区在线电影| 日韩电视剧免费观看网站| 风间由美一二三区av片| 精品在线99| 色伦专区97中文字幕| 亚洲怡红院在线观看| 欧美~级网站不卡| 久久久久久中文字幕| 国产成人免费观看视频 | 男人天堂网视频| 欧美暴力调教| 91麻豆精品91久久久久久清纯 | 日韩视频在线免费| 久久久精品国产sm调教网站| 99成人在线| 国产精品久久久久久久久久久久 | 久久青草伊人| 在线精品视频免费观看| 6080国产精品| 欧美重口另类| 日韩有码在线播放| 日韩乱码在线观看| 免费黄网站欧美| 99国产超薄丝袜足j在线观看| 三级av在线| 亚洲三级在线看| 日本一道本久久| 日韩大陆av| 亚洲精品97久久| 俄罗斯毛片基地| 激情综合电影网| 国产精品入口尤物| 少妇人妻精品一区二区三区| 国产精品天干天干在线综合| 欧美黄网在线观看| 欧美日韩亚洲国产| 亚洲成人精品久久久| 国产一二三四区在线| 激情综合网址| 国产一区二区在线播放| 天堂在线视频免费观看| 亚洲男同性恋视频| www日韩视频| theporn国产在线精品| 在线观看精品自拍私拍| 国产精品9191| 国产乱码精品一区二区三区五月婷 | 成人免费一区| 日韩av在线资源| 青娱乐国产在线视频| 精品在线你懂的| 日本精品一区| 在线最新版中文在线| 日韩一区二区麻豆国产| 青青草自拍偷拍| 美女国产一区| 国产欧美一区二区三区另类精品| 黄色网页在线免费看| 欧美在线一区二区| 野花社区视频在线观看| 一区福利视频| 亚洲综合在线做性| 色三级在线观看| 欧美亚州韩日在线看免费版国语版| xxxxxx黄色| 亚洲第一区色| 高清视频在线观看一区| 91小视频xxxx网站在线| 欧美日韩国产综合一区二区三区| 国产真人做爰视频免费| 久久高清一区| 欧洲一区二区在线| 在线成人视屏| 一区二区三区四区精品| 免费看日批视频| 久久久激情视频| 成人一级片网站| 婷婷综合福利| 青青草99啪国产免费| 性猛交xxxx| 狠狠色狠狠色综合日日五| 超碰caoprom| 亚洲区第一页| 久久av一区二区| a日韩av网址| 亚洲欧美日韩爽爽影院| 国产性生活视频| 亚洲国产精品精华液2区45| 国产福利影院在线观看| 久久精品av| 91免费观看网站| 黄页网站在线| 日韩av在线网站| 99re国产在线| 国产精品电影一区二区三区| 亚洲色图偷拍视频| 欧美视频久久| 精品亚洲欧美日韩| 四虎4545www精品视频| 在线观看中文字幕亚洲| 国产精品久久久久久免费| 一区二区三区在线影院| 波多野结衣一二三区| 日韩有码一区二区三区| 亚洲欧洲久久| 18国产精品| 欧美一级视频免费在线观看| 黄色小视频在线观看| 欧美区一区二区三区| 久久精品这里只有精品| 久久久www成人免费毛片麻豆 | 亚洲国产成人一区| 男人天堂2024| 亚洲天堂精品视频| 国产一级二级视频| 日本一不卡视频| 久久久久久久久久伊人| 一区二区三区日本久久久| 国产精品自拍小视频| 美女尤物在线视频| 一夜七次郎国产精品亚洲| 精品久久国产视频| 91国在线观看| 精品亚洲永久免费| 日本一区二区成人在线| 亚洲一区二区三区四区av| 日韩av中文字幕一区二区三区| 99久re热视频精品98| 欧洲亚洲成人| 91亚洲人电影| 亚洲va中文在线播放免费| 久久大大胆人体| 欧美日韩国产综合视频| 日韩精品一区二区三区中文精品 | 欧美疯狂做受xxxx富婆| 五月天婷婷久久| 亚洲女人的天堂| 女人裸体性做爰全过| 99久久精品久久久久久清纯| www.com污| 日日摸夜夜添夜夜添国产精品 | 国产在线一区二区三区播放| 青青伊人久久| 国产成人97精品免费看片| 黑人精品视频| 麻豆成人在线看| 成人在线观看黄色| 日韩精品一区二区视频| 亚洲国产www| 欧美高清激情brazzers| 久久久精品毛片| 精品久久久国产精品999| 日韩黄色免费观看| 国产精品久久久久毛片软件| 亚洲激情视频小说| www.av精品| 国产老头和老头xxxx×| 久久国产精品99精品国产| 看欧美ab黄色大片视频免费| 国产农村妇女精品一二区| 毛片av在线播放| 在线一区免费| 欧美 另类 交| 天天av综合| 亚洲午夜精品国产| 久久影院100000精品| 五月天亚洲综合情| 国产videos久久| 欧洲亚洲一区二区三区四区五区| 亚洲日产av中文字幕| 鲁鲁视频www一区二区| 欧美黑人巨大videos精品| 国产麻豆一区二区三区在线观看| 午夜电影一区| 亚洲一区美女视频在线观看免费| 成人影院网站ww555久久精品| 国产欧美中文字幕| 日韩免费在线电影| 成人国内精品久久久久一区| 欧美一区二区三区婷婷| 成人久久久久爱| 粉嫩一区二区三区在线观看| 亚洲资源在线看| 日韩欧洲国产| 国新精品乱码一区二区三区18| 99re热精品视频| 国产一区二区三区奇米久涩| 色吊丝一区二区| 欧美亚洲免费高清在线观看| 欧美日韩高清| 国产日韩视频在线播放| 国产精品v亚洲精品v日韩精品 | 亚洲尤物精选| 国产91在线视频观看| 日韩黄色一级片| 看看黄色一级片| 国产精品影音先锋| 亚洲啪av永久无码精品放毛片| 91在线免费视频观看| 免费毛片视频网站| 一区在线观看视频| 欧美交换国产一区内射| 五月综合激情婷婷六月色窝| 亚洲成熟少妇视频在线观看| 欧美日韩在线亚洲一区蜜芽| a级片在线免费看| 日韩国产欧美精品在线 | 国产日韩精品一区二区三区| 岛国片在线免费观看| 一区二区三区不卡视频在线观看 | 91免费看国产| 免费萌白酱国产一区二区三区| 欧美综合激情| 欧美一区网站| 日本一区二区黄色| 国产一区二三区| v天堂中文在线| 国产精品久久国产精麻豆99网站| 精品97人妻无码中文永久在线 | 国产一区二区自拍视频| 精品国产欧美一区二区| 国产二区视频在线观看| 欧美成人免费全部观看天天性色| 欧美aa在线| 亚洲伊人第一页| 国产欧美日韩影院| 一本大道东京热无码aⅴ| 日韩精品乱码免费| 涩视频在线观看| 国产精品国产三级国产普通话三级 | 亚洲狼人综合干| 国产99久久久精品| 国产黄色大片免费看| 亚洲国产精品精华液网站 | 日韩午夜激情视频| 国产三级视频在线| 国产+成+人+亚洲欧洲| 四虎国产精品免费久久| 蜜桃av久久久亚洲精品| 亚洲综合婷婷| 亚洲人辣妹窥探嘘嘘| 99r精品视频| 免费在线一区二区三区| 欧美色精品在线视频| 天堂成人在线视频| 九九综合九九综合| 精品九九久久| 欧美高清性xxxxhd| 亚洲人www| 免费黄视频在线观看| 日韩理论片在线| 真实新婚偷拍xxxxx| 精品伊人久久97| 国产乱码午夜在线视频 | 国产女无套免费视频| 国产一区二区三区高清在线观看 | 国产精品福利小视频| 欧美18免费视频| 你真棒插曲来救救我在线观看| 国产在线视视频有精品| 欧美巨胸大乳hitomi| 日本韩国欧美一区| 青青青草原在线| 18一19gay欧美视频网站| 7m精品国产导航在线| 国产成人一二三区| 国产精品资源在线观看| 国精品无码一区二区三区| 欧美精品在线一区二区三区| 天堂а√在线资源在线| 国产日韩欧美自拍| 久久神马影院| www.com污| 亚洲欧美韩国综合色| 国产女无套免费视频| 久久99亚洲热视| 一区二区三区视频播放| 丰满少妇大力进入| av电影在线观看完整版一区二区| 国产极品美女高潮无套嗷嗷叫酒店| 精品美女一区二区三区| 国产在线xxx| 国产日韩在线一区二区三区| 99国产精品久久久久久久成人热| 久久精品女同亚洲女同13| 欧美日韩亚洲成人| 国产三级在线看| 成人h视频在线| 中文字幕一区二区三区乱码图片 | 久久综合九色综合欧美亚洲| 精品人妻一区二区三区潮喷在线 | 成人欧美一区二区三区在线观看| 国产中文一区| 黄色网址在线视频| 在线看不卡av| av免费在线免费观看| 成人国产一区二区| 国产精品美女久久久| 国内精品卡一卡二卡三| 91麻豆精品国产91| 国产直播在线| 亚洲一区二区精品在线| 国产精品99久久久久久有的能看| 精品午夜福利在线观看| 亚洲人成在线播放| 亚洲精品777| 久久久久99精品成人片| 久久久久99精品一区| 在线亚洲欧美日韩| 欧美激情一区二区三区在线视频观看| 日本三级久久| 在线观看免费的av| 亚洲大片免费看| 1区2区3区在线观看| 99电影在线观看| 老牛影视一区二区三区| 尤物在线免费视频| 日韩国产一区三区| 性欧美video另类hd尤物| 久久久久免费看黄a片app| 国产精品人人做人人爽人人添| 亚洲免费国产视频| 国产美女高潮久久白浆| 亚洲美女91| 日本一二三区在线观看|