久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android官方文档—APP组件(Content Providers)(Contacts Provider)

發布時間:2023/12/14 Android 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android官方文档—APP组件(Content Providers)(Contacts Provider) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通訊錄內容提供者

Contacts Provider是一個功能強大且靈活的Android組件,用于管理設備的人員數據中??央存儲庫。聯系人提供程序是您在設備的聯系人應用程序中看到的數據源,您還可以在自己的應用程序中訪問其數據,并在設備和在線服務之間傳輸數據。提供商可以容納各種數據源,并嘗試為每個人管理盡可能多的數據,結果是組織結構復雜。因此,提供者的API包括一組廣泛的合同類和接口,便于數據檢索和修改。

本指南介紹以下內容:

  • 基本的提供者結構。
  • 如何從提供程序檢索數據。
  • 如何修改提供程序中的數據。
  • 如何編寫同步適配器以將數據從服務器同步到Contacts Provider。

本指南假設您了解Android內容提供商的基礎知識。要了解有關Android內容提供商的更多信息,請閱讀內容提供商基礎知識指南。 Sample Sync Adapter示例應用程序是使用同步適配器在Contacts Provider和Google Web Services托管的示例應用程序之間傳輸數據的示例。

通訊錄供應商架構


Contacts Provider是Android內容提供商組件。它維護有關一個人的三種類型的數據,每種數據對應于提供者提供的表,如圖1所示:

圖1. Contacts Provider表結構。

這三個表通常用其合同類的名稱來表示。這些類定義了表使用的內容URI,列名和列值的常量:

ContactsContract.Contacts表

代表不同人的行,基于原始聯系行的聚合。

ContactsContract.RawContacts表

包含人員數據摘要的行,特定于用戶帳戶和類型。

ContactsContract.Data表

行包含原始聯系人的詳細信息,例如電子郵件地址或電話號碼。

ContactsContract中由合同類表示的其他表是Contacts Provider用于管理其操作或支持設備的聯系人或電話應用程序中的特定功能的輔助表。

原始聯系人


原始聯系人表示來自單個帳戶類型和帳戶名稱的人員數據。由于聯系人提供程序允許多個聯機服務作為人員的數據源,因此聯系人提供程序允許同一個人使用多個原始聯系人。多個原始聯系人還允許用戶組合來自同一帳戶類型的多個帳戶的人員數據。

原始聯系人的大多數數據不存儲在ContactsContract.RawContacts表中。相反,它存儲在ContactsContract.Data表中的一行或多行中。每個數據行都有一列Data.RAW_CONTACT_ID,其中包含其父ContactsContract.RawContacts行的RawContacts._ID值。

重要的原始數據列

ContactsContract.RawContacts表中的重要列列在表1中。請閱讀表后面的注釋:

表1.重要的原始接觸列。

列名用法備注
ACCOUNT_NAME作為此原始聯系人來源的帳戶類型的帳戶名稱。例如,Google帳戶的帳戶名稱是設備所有者的Gmail地址之一。有關詳細信息,請參閱ACCOUNT_TYPE的下一個條目。此名稱的格式特定于其帳戶類型。它不一定是電子郵件地址。
ACCOUNT_TYPE作為此原始聯系人來源的帳戶類型。例如,Google帳戶的帳戶類型是com.google。始終使用您擁有或控制的域的域標識符限定您的帳戶類型。這將確保您的帳戶類型是唯一的。提供聯系人數據的帳戶類型通常具有與聯系人提供程序同步的關聯同步適配器。
DELETED原始聯系人的“已刪除”標志。此標志允許聯系人提供程序在內部維護該行,直到同步適配器能夠從其服務器中刪除該行,然后最終從存儲庫中刪除該行。

注意

以下是有關ContactsContract.RawContacts表的重要說明:

  • 原始聯系人的姓名未存儲在ContactsContract.RawContacts的行中。相反,它存儲在ContactsContract.CommonDataKinds.StructuredName行的ContactsContract.Data表中。原始聯系人在ContactsContract.Data表中只有一行此類型。
  • 警告:要在原始聯系人行中使用您自己的帳戶數據,必須先在AccountManager中注冊。為此,請提示用戶將帳戶類型及其帳戶名稱添加到帳戶列表中。如果您不這樣做,聯系人提供程序將自動刪除您的原始聯系人行。

例如,如果您希望自己的應用使用域com.example.dataservice維護基于Web的服務的聯系人數據,并且用戶的服務帳戶是becky.sharp@dataservice.example.com,則用戶必須先添加在您的應用添加原始聯系人行之前,帳戶“type”(com.example.dataservice)和帳戶“name”(becky.smart@dataservice.example.com)。您可以在文檔中向用戶解釋此要求,也可以提示用戶添加類型和名稱,或兩者都添加。帳戶類型和帳戶名稱將在下一節中詳細介紹。

原始聯系人數據的來源

要了解原始聯系人的工作原理,請考慮在其設備上定義了以下三個用戶帳戶的用戶“Emily Dickinson”:

  • emily.dickinson@gmail.com
  • emilyd@gmail.com
  • Twitter account "belle_of_amherst"

此用戶已在“帳戶”設置中為所有這三個帳戶啟用了“同步聯系人”。

假設Emily Dickinson打開瀏覽器窗口,以emily.dickinson@gmail.com登錄Gmail,打開聯系人,并添加“Thomas Higginson”。稍后,她以emilyd@gmail.com身份登錄Gmail,并向“Thomas Higginson”發送電子郵件,自動將其添加為聯系人。她還在Twitter上關注“colonel_tom”(Thomas Higginson的Twitter ID)。

由于這項工作,Contacts Provider會創建三個原始聯系人:

  • “Thomas Higginson”的原始聯系人與emily.dickinson@gmail.com相關聯。用戶帳戶類型為Google。
  • “Thomas Higginson”的第二個原始聯系人與emilyd@gmail.com相關聯。用戶帳戶類型也是Google。即使名稱與以前的名稱相同,也存在第二個原始聯系人,因為該人員是為其他用戶帳戶添加的。
  • ?與“belle_of_amherst”相關的“Thomas Higginson”的第三個原始聯系人。用戶帳戶類型是Twitter。
  • 數據


    如前所述,原始聯系人的數據存儲在ContactsContract.Data行中,該行鏈接到原始聯系人的_ID值。這允許單個原始聯系人具有相同類型數據的多個實例,例如電子郵件地址或電話號碼。例如,如果emilyd@gmail.com的“Thomas Higginson”(Thomas Higginson的原始聯系人行與Google帳戶emilyd@gmail.com相關聯)的家庭電子郵件地址為thigg@gmail.com,工作電子郵件地址為thomas.higginson@gmail.com,Contacts Provider存儲兩個電子郵件地址行,并將它們鏈接到原始聯系人。

    請注意,此單個表中存儲了不同類型的數據。顯示名稱,電話號碼,電子郵件,郵政地址,照片和網站詳細信息行均可在ContactsContract.Data表中找到。為了幫助管理它,ContactsContract.Data表包含一些具有描述性名稱的列,以及具有通用名稱的其他列。無論行中的數據類型如何,描述性名稱列的內容都具有相同的含義,而通用名稱列的內容根據數據類型具有不同的含義。

    描述性列名

    描述性列名的一些示例是:

    RAW_CONTACT_ID

    此數據的原始聯系人的_ID列的值。

    MIMETYPE

    存儲在此行中的數據類型,表示為自定義MIME類型。 Contacts Provider使用ContactsContract.CommonDataKinds子類中定義的MIME類型。這些MIME類型是開源的,可以與任何與Contacts Provider一起使用的應用程序或同步適配器使用。

    IS_PRIMARY

    如果原始聯系人可以多次出現此類數據行,則IS_PRIMARY列會標記包含該類型主數據的數據行。例如,如果用戶長按聯系人的電話號碼并選擇“設置默認值”,則包含該號碼的ContactsContract.Data行將其IS_PRIMARY列設置為非零值。

    通用列名稱

    有15個名為DATA1到DATA15的通用列通常可用,還有另外四個通用列SYNC1到SYNC4,它們只能由同步適配器使用。無論行包含哪種數據類型,通用列名常量始終有效。

    DATA1列已編制索引。聯系人提供程序始終將此列用于提供程序期望的數據,該數據將是查詢的最常見目標。例如,在電子郵件行中,此列包含實際的電子郵件地址。

    按照慣例,列DATA15被保留用于存儲二進制大對象(BLOB)數據,例如照片縮略圖。

    特定于類型的列名稱

    為了便于使用特定類型行的列,Contacts Provider還提供了在ContactsContract.CommonDataKinds的子類中定義的特定于類型的列名常量。常量只是為同一列名提供不同的常量名稱,這有助于您訪問特定類型的行中的數據。

    例如,ContactsContract.CommonDataKinds.Email類為ContactsContract.Data行定義類型特定的列名常量,該行具有MIME類型Email.CONTENT_ITEM_TYPE。該類包含電子郵件地址列的常量ADDRESS。 ADDRESS的實際值是“data1”,它與列的通用名稱相同。

    警告:不要使用具有提供程序的預定義MIME類型之一的行將自己的自定義數據添加到ContactsContract.Data表。如果這樣做,您可能會丟失數據或導致提供商出現故障。例如,您不應在DATA1列中添加包含用戶名而不是電子郵件地址的MIME類型Email.CONTENT_ITEM_TYPE的行。如果您對該行使用自己的自定義MIME類型,則可以自由定義自己的特定于類型的列名稱,并根據需要使用列。

    圖2顯示了描述性列和數據列在ContactsContract.Data行中的顯示方式,以及特定于類型的列名稱如何“覆蓋”通用列名稱。

    圖2.特定于類型的列名和通用列名。

    特定于類型的列名稱類

    表2列出了最常用的特定于類型的列名類:

    表2.特定于類型的列名類

    映射類數據類型備注
    ContactsContract.CommonDataKinds.StructuredName與此數據行關聯的原始聯系人的名稱數據。原始聯系人只有這些行中的一行。
    ContactsContract.CommonDataKinds.Photo與此數據行關聯的原始聯系人的主照片。原始聯系人只有這些行中的一行。
    ContactsContract.CommonDataKinds.Email與此數據行關聯的原始聯系人的電子郵件地址。原始聯系人可以有多個電子郵件地址。
    ContactsContract.CommonDataKinds.StructuredPostal與此數據行關聯的原始聯系人的郵政地址。原始聯系人可以有多個郵政地址。
    ContactsContract.CommonDataKinds.GroupMembership將原始聯系人鏈接到“聯系人”提供程序中的一個組的標識符。組是帳戶類型和帳戶名稱的可選功能。它們在聯系人組部分中有更詳細的描述。

    通訊錄

    聯系人提供商將所有帳戶類型和帳戶名稱中的原始聯系人行組合在一起以形成聯系人。這有助于顯示和修改用戶為人收集的所有數據。聯系人提供程序管理新聯系人行的創建,以及原始聯系人與現有聯系人行的聚合。應用程序和同步適配器都不允許添加聯系人,聯系行中的某些列是只讀的。

    注意:如果您嘗試使用insert()將聯系人添加到Contacts Provider,則會收到UnsupportedOperationException異常。如果您嘗試更新列為“只讀”的列,則忽略更新。

    聯系人提供商創建新聯系人以響應添加與任何現有聯系人不匹配的新原始聯系人。如果現有原始聯系人的數據以不再與之前附加的聯系人匹配的方式更改,則提供程序也會執行此操作。如果應用程序或同步適配器創建與現有聯系人匹配的新原始聯系人,則新的原始聯系人將聚合到現有聯系人。

    “聯系人”提供程序將聯系人行與其原始聯系人行鏈接,并在“聯系人”表中將聯系人行的_ID列鏈接。原始聯系人表ContactsContract.RawContacts的CONTACT_ID列包含與每個原始聯系人行關聯的聯系人行的_ID值。

    ContactsContract.Contacts表還有LOOKUP_KEY列,它是聯系行的“永久”鏈接。由于聯系人提供程序會自動維護聯系人,因此可能會更改聯系人行的_ID值以響應聚合或同步。即使發生這種情況,內容URI CONTENT_LOOKUP_URI結合聯系人的LOOKUP_KEY仍將指向聯系人行,因此您可以使用LOOKUP_KEY維護指向“最喜歡”聯系人的鏈接,依此類推。此列具有自己的格式,與_ID列的格式無關。

    圖3顯示了三個主要表格如何相互關聯。

    圖3. Contacts,Raw Contacts和Details表關系。

    來自同步適配器的數據


    用戶將聯系人數據直接輸入設備,但數據也通過同步適配器從Web服務流入聯系人提供程序,這樣可以自動在設備和服務之間傳輸數據。同步適配器在系統的控制下在后臺運行,并且它們調用ContentResolver方法來管理數據。

    在Android中,同步適配器使用的Web服務由帳戶類型標識。每個同步適配器使用一種帳戶類型,但它可以支持該類型的多個帳戶名稱。帳戶類型和帳戶名稱在原始聯系人數據源中簡要描述。以下定義提供了更多詳細信息,并描述了帳戶類型和名稱與同步適配器和服務的關系。

    帳戶類型

    標識用戶已存儲數據的服務。大多數情況下,用戶必須使用該服務進行身份驗證。例如,Google通訊錄是一種帳戶類型,由代碼google.com標識。此值對應于AccountManager使用的帳戶類型。

    用戶名

    標識帳戶類型的特定帳戶或登錄。 Google通訊錄帳戶與Google帳戶相同,后者的電子郵件地址為帳戶名稱。其他服務可能使用單字用戶名或數字ID。

    帳戶類型不必是唯一的。用戶可以配置多個Google通訊錄帳戶并將其數據下載到聯系人提供商;如果用戶有一組個人帳戶名稱的個人聯系人,另一組用于工作,則可能發生這種情況。帳戶名稱通常是唯一的。它們共同確定了聯系人提供者和外部服務之間的特定數據流。

    如果要將服務的數據傳輸到Contacts Provider,則需要編寫自己的同步適配器。 “聯系人提供程序同步適配器”一節中對此進行了更詳細的描述。

    圖4顯示了Contacts Provider如何適應人員數據流。在標有“同步適配器”的框中,每個適配器都標有其帳戶類型。

    圖4. Contacts Provider數據流。

    必需的權限


    想要訪問聯系人提供程序的應用程序必須請求以下權限:

    對一個或多個表的讀訪問權限

    READ_CONTACTS,在AndroidManifest.xml中指定,<uses-permission>元素為<uses-permission android:name =“android.permission.READ_CONTACTS”>。

    對一個或多個表的寫訪問權

    WRITE_CONTACTS,在AndroidManifest.xml中指定,<uses-permission>元素為<uses-permission android:name =“android.permission.WRITE_CONTACTS”>。

    這些權限不會擴展到用戶配置文件數據。用戶配置文件及其所需權限將在下一節“用戶配置文件”中討論。

    請記住,用戶的聯系人數據是個人且敏感的。用戶擔心他們的隱私,因此他們不希望應用程序收集有關他們或他們的聯系人的數據。如果您需要獲得訪問其聯系人數據的權限并不明顯,則可能會使您的應用程序評級較低,或者只是拒絕安裝它。

    用戶檔案


    ContactsContract.Contacts表有一行包含設備用戶的配置文件數據。此數據描述設備的用戶而不是用戶的一個聯系人。配置文件聯系人行鏈接到使用配置文件的每個系統的原始聯系人行。每個配置文件原始聯系人行可以有多個數據行。 ContactsContract.Profile類中提供了用于訪問用戶配置文件的常量。

    訪問用戶配置文件需要特殊權限。除了讀取和寫入所需的READ_CONTACTS和WRITE_CONTACTS權限之外,訪問用戶配置文件還需要分別使用android.Manifest.permission#READ_PROFILE和android.Manifest.permission#WRITE_PROFILE權限進行讀寫訪問。

    請記住,您應該認為用戶的個人資料是敏感的。權限android.Manifest.permission#READ_PROFILE允許您訪問設備用戶的個人識別數據。請務必告訴用戶您在應用程序說明中需要用戶配置文件訪問權限的原因。

    要檢索包含用戶配置文件的聯系人行,請調用ContentResolver.query()。將內容URI設置為CONTENT_URI,不提供任何選擇條件。您還可以使用此內容URI作為基本URI,以檢索配置文件的原始聯系人或數據。例如,此代碼段檢索配置文件的數據:

    // Sets the columns to retrieve for the user profile mProjection = new String[]{Profile._ID,Profile.DISPLAY_NAME_PRIMARY,Profile.LOOKUP_KEY,Profile.PHOTO_THUMBNAIL_URI};// Retrieves the profile from the Contacts Provider mProfileCursor =getContentResolver().query(Profile.CONTENT_URI,mProjection ,null,null,null);

    注意:如果檢索多個聯系行,并且要確定其中一個是否為用戶配置文件,請測試該行的IS_USER_PROFILE列。如果聯系人是用戶配置文件,則此列設置為“1”。

    聯系人提供商元數據


    聯系人提供程序管理跟蹤存儲庫中聯系人數據狀態的數據。有關存儲庫的此元數據存儲在各種位置,包括Raw Contacts,Data和Contacts表行,ContactsContract.Settings表和ContactsContract.SyncState表。下表顯示了每個元數據的效果:

    表3. Contacts Provider中的元數據

    意義
    ContactsContract.RawContactsDIRTY“0” - 自上次同步后未更改。標記在設備上更改的原始聯系人,并且必須同步回服務器。當Android應用程序更新行時,聯系人提供程序會自動設置該值。
    “1” - 自上次同步后更改,需要同步回服務器。修改原始聯系人或數據表的同步適配器應始終將字符串CALLER_IS_SYNCADAPTER附加到他們使用的內容URI。這可以防止提供程序將行標記為臟。否則,同步適配器修改似乎是本地修改并發送到服務器,即使服務器是修改的源。
    ContactsContract.RawContactsVERSION此行的版本號。每當行或其相關數據發生更改時,Contacts Provider會自動遞增此值。
    ContactsContract.DataDATA_VERSION此行的版本號。每當更改數據行時,Contacts Provider都會自動遞增此值。
    ContactsContract.RawContactsSOURCE_ID一個字符串值,用于唯一標識與創建該聯系人的帳戶的原始聯系人。

    當同步適配器創建新的原始聯系人時,應將此列設置為服務器的原始聯系人的唯一ID。當Android應用程序創建新的原始聯系人時,應用程序應將此列留空。這表示同步適配器應在服務器上創建新的原始聯系人,并獲取SOURCE_ID的值。

    特別是,每個帳戶類型的源ID必須是唯一的,并且應該在同步中保持穩定:

    • 唯一:帳戶的每個原始聯系人都必須擁有自己的源ID。如果您不強制執行此操作,則會導致聯系人應用程序出現問題。請注意,同一帳戶類型的兩個原始聯系人可能具有相同的源ID。例如,帳戶emily.dickinson@gmail.com的原始聯系人“Thomas Higginson”被允許與帳戶emilyd@gmail.com的原始聯系人“Thomas Higginson”具有相同的源ID。
    • 穩定:源ID是原始聯系人在線服務數據的永久部分。例如,如果用戶從“應用程序”設置中清除“聯系人存儲”并重新同步,則還原的原始聯系人應具有與以前相同的源ID。如果您不強制執行此操作,快捷方式將停止工作。
    ContactsContract.GroupsGROUP_VISIBLE“0” - 此組中的聯系人不應在Android應用程序UI中可見。此列用于與允許用戶隱藏特定組中的聯系人的服務器兼容。
    “1” - 允許在應用程序UI中顯示該組中的聯系人。?
    ContactsContract.SettingsUNGROUPED_VISIBLE“0” - 對于此帳戶和帳戶類型,不屬于某個組的聯系人對Android應用程序UI不可見。默認情況下,如果聯系人的原始聯系人都不屬于某個組,則聯系人不可見(原始聯系人的組成員身份由ContactsContract.Data表中的一個或多個ContactsContract.CommonDataKinds.GroupMembership行指示)。通過在ContactsContract.Settings表行中為帳戶類型和帳戶設置此標志,可以強制不顯示組的聯系人。此標志的一個用途是顯示不使用組的服務器的聯系人。
    “1” - 對于此帳戶和帳戶類型,應用程序UI可以看到不屬于某個組的聯系人。?
    ContactsContract.SyncState(all)使用此表存儲同步適配器的元數據。使用此表,您可以在設備上持久存儲同步狀態和其他與同步相關的數據。

    聯系提供者訪問


    本節介紹從“聯系人提供程序”訪問數據的準則,重點介紹以下內容:

    • 實體查詢。
    • 批量修改。
    • 使用意圖進行檢索和修改。
    • 數據的完整性。

    “聯系人提供程序同步適配器”一節中還詳細介紹了如何從同步適配器進行修改。

    查詢實體

    由于Contacts Provider表是按層次結構組織的,因此檢索行和鏈接到它的所有“子”行通常很有用。例如,要顯示人員的所有信息,您可能需要檢索單個ContactsContract.Contacts行的所有ContactsContract.RawContacts行,或單個ContactsContract.RawContacts行的所有ContactsContract.CommonDataKinds.Email行。為此,Contacts Provider提供實體構造,其作用類似于表之間的數據庫連接。

    實體就像一個由父表及其子表中的選定列組成的表。查詢實體時,您將根據實體中可用的列提供投影和搜索條件。結果是包含的Cursor包含檢索到的每個子表行的一行。例如,如果查詢ContactsContract.Contacts.Entity以獲取該名稱的所有原始聯系人的聯系人姓名和所有ContactsContract.CommonDataKinds.Email行,則會返回一個Cursor,其中包含每行ContactsContract.CommonDataKinds.Email行的一行。

    實體簡化了查詢。使用實體,您可以立即檢索聯系人或原始聯系人的所有聯系人數據,而不必首先查詢父表以獲取ID,然后必須使用該ID查詢子表。此外,聯系人提供程序在單個事務中處理針對實體的查詢,這確保檢索到的數據在內部是一致的。

    注意:實體通常不包含父表和子表的所有列。如果您嘗試使用不在實體的列名常量列表中的列名,您將獲得異常。

    以下代碼段顯示了如何檢索聯系人的所有原始聯系人行。該代碼段是一個較大的應用程序的一部分,它有兩個活動,“主要”和“細節”。主要活動顯示聯系人行列表;當用戶選擇一個時,活動將其ID發送到詳細活動。詳細信息活動使用ContactsContract.Contacts.Entity顯示與所選聯系人關聯的所有原始聯系人的所有數據行。

    此代碼段取自“詳細信息”activity:

    .../** Appends the entity path to the URI. In the case of the Contacts Provider, the* expected URI is content://com.google.contacts/#/entity (# is the ID value).*/mContactUri = Uri.withAppendedPath(mContactUri,ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);// Initializes the loader identified by LOADER_ID.getLoaderManager().initLoader(LOADER_ID, // The identifier of the loader to initializenull, // Arguments for the loader (in this case, none)this); // The context of the activity// Creates a new cursor adapter to attach to the list viewmCursorAdapter = new SimpleCursorAdapter(this, // the context of the activityR.layout.detail_list_item, // the view item containing the detail widgetsmCursor, // the backing cursormFromColumns, // the columns in the cursor that provide the datamToViews, // the views in the view item that display the data0); // flags// Sets the ListView's backing adapter.mRawContactList.setAdapter(mCursorAdapter); ... @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) {/** Sets the columns to retrieve.* RAW_CONTACT_ID is included to identify the raw contact associated with the data row.* DATA1 contains the first column in the data row (usually the most important one).* MIMETYPE indicates the type of data in the data row.*/String[] projection ={ContactsContract.Contacts.Entity.RAW_CONTACT_ID,ContactsContract.Contacts.Entity.DATA1,ContactsContract.Contacts.Entity.MIMETYPE};/** Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw* contact collated together.*/String sortOrder =ContactsContract.Contacts.Entity.RAW_CONTACT_ID +" ASC";/** Returns a new CursorLoader. The arguments are similar to* ContentResolver.query(), except for the Context argument, which supplies the location of* the ContentResolver to use.*/return new CursorLoader(getApplicationContext(), // The activity's contextmContactUri, // The entity content URI for a single contactprojection, // The columns to retrievenull, // Retrieve all the raw contacts and their data rows.null, //sortOrder); // Sort by the raw contact ID. }

    加載完成后,LoaderManager調用onLoadFinished()的回調。此方法的一個傳入參數是帶有查詢結果的Cursor。在您自己的應用程序中,您可以從此Cursor獲取數據以顯示它或進一步使用它。

    批量修改

    只要有可能,您應該通過創建ContentProviderOperation對象的ArrayList并調用applyBatch(),以“批處理模式”在Contacts Provider中插入,更新和刪除數據。由于Contacts Provider在單個事務中執行applyBatch()中的所有操作,因此您的修改永遠不會使聯系人存儲庫處于不一致狀態。批量修改還有助于同時插入原始聯系人及其詳細數據。

    注意:要修改單個原始聯系人,請考慮向設備的聯系人應用程序發送意圖,而不是在應用程序中處理修改。在使用意圖檢索和修改一節中更詳細地描述了這樣做。

    屈服點

    包含大量操作的批量修改可能會阻止其他進程,從而導致整體用戶體驗不佳。要在盡可能少的單獨列表中組織要執行的所有修改,同時防止它們阻止系統,您應該為一個或多個操作設置屈服點。屈服點是ContentProviderOperation對象,其isYieldAllowed()值設置為true。當聯系人提供程序遇到屈服點時,它會暫停其工作以讓其他進程運行并關閉當前事務。當提供程序再次啟動時,它將繼續執行ArrayList中的下一個操作并啟動新事務。

    服點確實會導致每次調用applyBatch()時有多個事務。因此,您應為一組相關行的最后一個操作設置屈服點。例如,您應該為添加原始聯系人行及其關聯數據行的集合中的最后一個操作設置屈服點,或者為與單個聯系人相關的一組行設置最后一個操作。

    屈服點也是原子操作的單位。兩個屈服點之間的所有訪問將作為單個單元成功或失敗。如果未設置任何屈服點,則最小的原子操作是整批操作。如果使用屈服點,則可以防止操作降低系統性能,同時確保操作子集是原子的。

    修改后引用

    當您將新的原始聯系人行及其關聯的數據行作為一組ContentProviderOperation對象插入時,必須通過將原始聯系人的_ID值作為RAW_CONTACT_ID值插入,將數據行鏈接到原始聯系人行。但是,當您為數據行創建ContentProviderOperation時,此值不可用,因為您尚未為原始聯系人行應用ContentProviderOperation。要解決此問題,ContentProviderOperation.Builder類具有withValueBackReference()方法。此方法允許您插入或修改具有上一操作結果的列。

    withValueBackReference()方法有兩個參數:

    key

    鍵值對的關鍵。此參數的值應該是您正在修改的表中列的名稱。

    previousResult

    來自applyBatch()的ContentProviderResult對象數組中的值的從0開始的索引。在應用批處理操作時,每個操作的結果都存儲在一個中間結果數組中。 previousResult值是這些結果之一的索引,使用鍵值檢索和存儲。這允許您插入新的原始聯系人記錄并獲取其_ID值,然后在添加ContactsContract.Data行時對該值進行“后向引用”。

    第一次調用applyBatch()時會創建整個結果數組,其大小等于您提供的ContentProviderOperation對象的ArrayList的大小。但是,結果數組中的所有元素都設置為null,如果嘗試對尚未應用的操作的結果進行反向引用,則withValueBackReference()會拋出異常。

    以下代碼段顯示了如何批量插入新的原始聯系人和數據。它們包括建立屈服點并使用反向引用的代碼。這些片段是createContacEntry()方法的擴展版本,該方法是Contact Manager示例應用程序中ContactAdder類的一部分。

    第一個代碼段從UI檢索聯系人數據。此時,用戶已經選擇了應添加新原始聯系人的帳戶。

    // Creates a contact entry from the current UI values, using the currently-selected account. protected void createContactEntry() {/** Gets values from the UI*/String name = mContactNameEditText.getText().toString();String phone = mContactPhoneEditText.getText().toString();String email = mContactEmailEditText.getText().toString();int phoneType = mContactPhoneTypes.get(mContactPhoneTypeSpinner.getSelectedItemPosition());int emailType = mContactEmailTypes.get(mContactEmailTypeSpinner.getSelectedItemPosition());

    下一個代碼段創建一個操作,將原始聯系人行插入ContactsContract.RawContacts表:

    /** Prepares the batch operation for inserting a new raw contact and its data. Even if* the Contacts Provider does not have any data for this person, you can't add a Contact,* only a raw contact. The Contacts Provider will then add a Contact automatically.*/// Creates a new array of ContentProviderOperation objects.ArrayList<ContentProviderOperation> ops =new ArrayList<ContentProviderOperation>();/** Creates a new raw contact with its account type (server type) and account name* (user's account). Remember that the display name is not stored in this row, but in a* StructuredName data row. No other data is required.*/ContentProviderOperation.Builder op =ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType()).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());// Builds the operation and adds it to the array of operationsops.add(op.build());

    接下來,代碼為顯示名稱,電話和電子郵件行創建數據行。

    每個操作構建器對象使用withValueBackReference()來獲取RAW_CONTACT_ID。引用指向第一個操作的ContentProviderResult對象,該操作添加原始聯系人行并返回其新的_ID值。因此,每個數據行都會通過其RAW_CONTACT_ID自動鏈接到它所屬的新ContactsContract.RawContacts行。

    添加電子郵件行的ContentProviderOperation.Builder對象標記為withYieldAllowed(),該對象設置屈服點:

    // Creates the display name for the new raw contact, as a StructuredName data row.op =ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)/** withValueBackReference sets the value of the first argument to the value of* the ContentProviderResult indexed by the second argument. In this particular* call, the raw contact ID column of the StructuredName data row is set to the* value of the result returned by the first operation, which is the one that* actually adds the raw contact row.*/.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)// Sets the data row's MIME type to StructuredName.withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)// Sets the data row's display name to the name in the UI..withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);// Builds the operation and adds it to the array of operationsops.add(op.build());// Inserts the specified phone number and type as a Phone data rowop =ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)/** Sets the value of the raw contact id column to the new raw contact ID returned* by the first operation in the batch.*/.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)// Sets the data row's MIME type to Phone.withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)// Sets the phone number and type.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone).withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);// Builds the operation and adds it to the array of operationsops.add(op.build());// Inserts the specified email and type as a Phone data rowop =ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)/** Sets the value of the raw contact id column to the new raw contact ID returned* by the first operation in the batch.*/.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)// Sets the data row's MIME type to Email.withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)// Sets the email address and type.withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email).withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);/** Demonstrates a yield point. At the end of this insert, the batch operation's thread* will yield priority to other threads. Use after every set of operations that affect a* single contact, to avoid degrading performance.*/op.withYieldAllowed(true);// Builds the operation and adds it to the array of operationsops.add(op.build());

    最后一個片段顯示了對applyBatch()的調用,該調用插入了新的原始聯系人和數據行。

    // Ask the Contacts Provider to create a new contactLog.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +mSelectedAccount.getType() + ")");Log.d(TAG,"Creating contact: " + name);/** Applies the array of ContentProviderOperation objects in batch. The results are* discarded.*/try {getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);} catch (Exception e) {// Display a warningContext ctx = getApplicationContext();CharSequence txt = getString(R.string.contactCreationFailure);int duration = Toast.LENGTH_SHORT;Toast toast = Toast.makeText(ctx, txt, duration);toast.show();// Log exceptionLog.e(TAG, "Exception encountered while inserting contact: " + e);} }

    批處理操作還允許您實現樂觀并發控制,這是一種應用修改事務而無需鎖定底層存儲庫的方法。要使用此方法,請應用事務,然后檢查可能同時進行的其他修改。如果發現發生了不一致的修改,則回滾事務并重試。

    樂觀并發控制對于移動設備非常有用,其中一次只有一個用戶,并且很少同時訪問數據存儲庫。由于未使用鎖定,因此不會浪費時間設置鎖定或等待其他事務釋放其鎖定。

    要在更新單個ContactsContract.RawContacts行時使用樂觀并發控制,請按照下列步驟操作:

  • 檢索原始聯系人的VERSION列以及您檢索的其他數據。
  • 使用newAssertQuery(Uri)方法創建適合強制執行約束的ContentProviderOperation.Builder對象。對于內容URI,使用RawContacts.CONTENT_URI并附加原始聯系人的_ID。
  • 對于ContentProviderOperation.Builder對象,調用withValue()將VERSION列與剛剛檢索的版本號進行比較。
  • 對于相同的ContentProviderOperation.Builder,調用withExpectedCount()以確保此斷言僅測試一行。
  • 調用build()來創建ContentProviderOperation對象,然后將此對象添加為您傳遞給applyBatch()的ArrayList中的第一個對象。
  • 應用批處理事務。
  • 如果在您讀取行的時間和嘗試修改行的時間之間通過另一個操作更新原始聯系行,則“斷言”ContentProviderOperation將失敗,并且將撤消整批操作。然后,您可以選擇重試批處理或執行其他操作。

    以下代碼段演示了如何在使用CursorLoader查詢單個原始聯系人后創建“斷言”ContentProviderOperation:

    /** The application uses CursorLoader to query the raw contacts table. The system calls this method* when the load is finished.*/ public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {// Gets the raw contact's _ID and VERSION valuesmRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION)); }...// Sets up a Uri for the assert operation Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);// Creates a builder for the assert operation ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);// Adds the assertions to the assert operation: checks the version and count of rows tested assertOp.withValue(SyncColumns.VERSION, mVersion); assertOp.withExpectedCount(1);// Creates an ArrayList to hold the ContentProviderOperation objects ArrayList ops = new ArrayList<ContentProviderOperationg>;ops.add(assertOp.build());// You would add the rest of your batch operations to "ops" here...// Applies the batch. If the assert fails, an Exception is thrown try{ContentProviderResult[] results =getContentResolver().applyBatch(AUTHORITY, ops);} catch (OperationApplicationException e) {// Actions you want to take if the assert operation fails go here}

    使用意圖進行檢索和修改

    向設備的聯系人應用程序發送意圖允許您間接訪問聯系人提供程序。意圖啟動設備的聯系人應用程序UI,用戶可以在其中執行與聯系人相關的工作。通過這種類型的訪問,用戶可以:

    • 從列表中選擇一個聯系人,并將其返回到您的應用程序以進行進一步的工作。
    • 編輯現有聯系人的數據。
    • 為他們的任何帳戶插入新的原始聯系人。
    • 刪除聯系人或聯系人數據。

    如果用戶正在插入或更新數據,您可以先收集數據并將其作為意圖的一部分發送。

    當您使用意圖通過設備的聯系人應用程序訪問聯系人提供程序時,您不必編寫自己的UI或代碼來訪問提供程序。您也不必請求讀取或寫入提供程序的權限。設備的聯系人應用程序可以將聯系人的讀取權限委派給您,并且由于您通過其他應用程序對提供程序進行了修改,因此您不必具有寫入權限。

    發送訪問提供程序的意圖的一般過程在“內容提供程序基礎知識”指南的“通過意圖進行數據訪問”一節中有詳細介紹。表4總結了用于可用任務的操作,MIME類型和數據值,而可以與putExtra()一起使用的extras值列在ContactsContract.Intents.Insert的參考文檔中:

    表4.聯系人提供者意圖。

    TaskActionDataMIME typeNotes
    從列表中選擇一個聯系人ACTION_PICK

    以下之一:

    • Contacts.CONTENT_URI,顯示聯系人列表。
    • Phone.CONTENT_URI,顯示原始聯系人的電話號碼列表。
    • StructuredPostal.CONTENT_URI,顯示原始聯系人的郵政地址列表。
    • Email.CONTENT_URI,顯示原始聯系人的電子郵件地址列表。
    Not used顯示原始聯系人列表或原始聯系人的數據列表,具體取決于您提供的內容URI類型。

    調用startActivityForResult(),它返回所選行的內容URI。 URI的形式是表的內容URI,其中附加了行的LOOKUP_ID。設備的聯系人應用程序在活動期間委托對此內容URI的讀寫權限。有關更多詳細信息,請參閱Content Provider Basics指南。
    插入新的原始聯系人Insert.ACTIONN/ARawContacts.CONTENT_TYPE,一組原始聯系人的MIME類型。顯示設備的聯系人應用程序的“添加聯系人”屏幕。將顯示您添加到意圖中的額外值。如果使用startActivityForResult()發送,則新添加的原始聯系人的內容URI將在“數據”字段中的Intent參數中傳遞回活動的onActivityResult()回調方法。要獲取該值,請調用getData()。
    編輯聯系人ACTION_EDITCONTENT_LOOKUP_URI為聯系人。編輯器活動將允許用戶編輯與此聯系人關聯的任何數據。Contacts.CONTENT_ITEM_TYPE,單個聯系人。顯示聯系人應用程序中的編輯聯系人屏幕。將顯示您添加到意圖中的額外值。當用戶單擊“完成”以保存編輯時,您的活動將返回到前臺。
    顯示也可以添加數據的選擇器。ACTION_INSERT_OR_EDITN/ACONTENT_ITEM_TYPE

    此意圖始終顯示聯系人應用程序的選擇器屏幕。用戶可以選擇要編輯的聯系人,也可以添加新聯系人。根據用戶的選擇,將顯示編輯或添加屏幕,并顯示您在意圖中傳遞的額外數據。如果您的應用顯示聯系人數據(如電子郵件或電話號碼),請使用此意圖允許用戶將數據添加到現有聯系人。

    注意:無需在此intent的附加內容中發送名稱值,因為用戶始終選擇現有名稱或添加新名稱。此外,如果您發送名稱,并且用戶選擇進行編輯,則聯系人應用程序將顯示您發送的名稱,覆蓋以前的值。如果用戶沒有注意到并保存編輯,則舊值將丟失。

    設備的聯系人應用程序不允許您刪除原始聯系人或其任何數據。相反,要刪除原始聯系人,請使用ContentResolver.delete()或ContentProviderOperation.newDelete()。

    以下代碼段顯示了如何構造和發送插入新原始聯系人和數據的intent:

    // Gets values from the UI String name = mContactNameEditText.getText().toString(); String phone = mContactPhoneEditText.getText().toString(); String email = mContactEmailEditText.getText().toString();String company = mCompanyName.getText().toString(); String jobtitle = mJobTitle.getText().toString();// Creates a new intent for sending to the device's contacts application Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);// Sets the MIME type to the one expected by the insertion activity insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);// Sets the new contact name insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);// Sets the new company and job title insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company); insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);/** Demonstrates adding data rows as an array list associated with the DATA key*/// Defines an array list to contain the ContentValues objects for each row ArrayList<ContentValues> contactData = new ArrayList<ContentValues>();/** Defines the raw contact row*/// Sets up the row as a ContentValues object ContentValues rawContactRow = new ContentValues();// Adds the account type and name to the row rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType()); rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());// Adds the row to the array contactData.add(rawContactRow);/** Sets up the phone number data row*/// Sets up the row as a ContentValues object ContentValues phoneRow = new ContentValues();// Specifies the MIME type for this data row (all data rows must be marked by their type) phoneRow.put(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE );// Adds the phone number and its type to the row phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);// Adds the row to the array contactData.add(phoneRow);/** Sets up the email data row*/// Sets up the row as a ContentValues object ContentValues emailRow = new ContentValues();// Specifies the MIME type for this data row (all data rows must be marked by their type) emailRow.put(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE );// Adds the email address and its type to the row emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);// Adds the row to the array contactData.add(emailRow);/** Adds the array to the intent's extras. It must be a parcelable object in order to* travel between processes. The device's contacts app expects its key to be* Intents.Insert.DATA*/ insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);// Send out the intent to start the device's contacts app in its add contact activity. startActivity(insertIntent);

    數據的完整性

    由于聯系人存儲庫包含用戶期望正確且最新的重要且敏感的數據,因此聯系人提供程序具有明確定義的數據完整性規則。修改聯系人數據時,您有責任遵守這些規則。這里列出了重要的規則:

    始終為您添加的每個ContactsContract.RawContacts行添加ContactsContract.CommonDataKinds.StructuredName行。

    在ContactsContract.Data表中沒有ContactsContract.CommonDataKinds.StructuredName行的ContactsContract.RawContacts行可能會在聚合期間導致問題。

    始終將新的ContactsContract.Data行鏈接到其父ContactsContract.RawContacts行。

    未鏈接到ContactsContract.RawContacts的ContactsContract.Data行將在設備的聯系人應用程序中不可見,并且可能會導致同步適配器出現問題。

    僅為您擁有的原始聯系人更改數據。

    請記住,聯系人提供商通常管理來自多種不同帳戶類型/在線服務的數據。您需要確保應用程序僅修改或刪除屬于您的行的數據,并且僅插入具有您控制的帳戶類型和名稱的數據。

    始終使用ContactsContract及其子類中定義的常量來獲取權限,內容URI,URI路徑,列名,MIME類型和TYPE值。

    使用這些常量可以幫助您避免錯誤。如果不推薦任何常量,也會收到編譯器警告通知。

    自定義數據行

    通過創建和使用自己的自定義MIME類型,您可以在ContactsContract.Data表中插入,編輯,刪除和檢索自己的數據行。您的行僅限于使用ContactsContract.DataColumns中定義的列,但您可以將自己的特定于類型的列名稱映射到默認列名稱。在設備的聯系人應用程序中,將顯示行的數據,但無法編輯或刪除,用戶無法添加其他數據。要允許用戶修改自定義數據行,您必須在自己的應用程序中提供編輯器活動。

    顯示自定義數據,請提供包含<ContactsAccountType>元素及其一個或多個<ContactsDataKind>子元素的contacts.xml文件。這在<ContactsDataKind>元素部分中有更詳細的描述。

    要了解有關自定義MIME類型的更多信息,請閱讀“創建內容提供商”指南。

    聯系人提供商同步適配器


    聯系人提供程序專門用于處理設備和在線服務之間的聯系人數據同步。這允許用戶將現有數據下載到新設備并將現有數據上載到新帳戶。無論添加和更改的來源如何,同步還可確保用戶掌握最新數據。同步的另一個優點是,即使設備未連接到網絡,它也可以使聯系人數據可用。

    雖然您可以通過多種方式實現同??步,但Android系統提供了一個插件同步框架,可自動執行以下任務:

    • 檢查網絡可用性。
    • 根據用戶首選項調度和執行同步。
    • 重新啟動已停止的同步。

    要使用此框架,請提供同步適配器插件。每個同步適配器對于服務和內容提供商都是唯一的,但可以處理同一服務的多個帳戶名。該框架還允許同一服務和提供者使用多個同步適配器。

    同步適配器類和文件

    您將同步適配器實現為AbstractThreadedSyncAdapter的子類,并將其安裝為Android應用程序的一部分。系統從應用程序清單中的元素以及清單指向的特殊XML文件中了解同步適配器。 XML文件定義在線服務的帳戶類型和內容提供者的權限,它們一起唯一地標識適配器。在用戶為同步適配器的帳戶類型添加帳戶并為同步適配器同步的內容提供程序啟用同步之前,同步適配器不會變為活動狀態。此時,系統開始管理適配器,根據需要調用它以在內容提供者和服務器之間進行同步。

    注意:使用帳戶類型作為同步適配器標識的一部分,系統可以檢測同一組合的同步適配器并將其組合在一起。例如,Google在線服務的同步適配器都具有相同的帳戶類型com.google。當用戶將Google帳戶添加到他們的設備時,所有已安裝的Google服務同步適配器都會列在一起;列出的每個同步適配器與設備上的其他內容提供程序同步。

    由于大多數服務要求用戶在訪問數據之前驗證其身份,因此Android系統提供的身份驗證框架與同步適配器框架類似,并且通常與其同時使用。身份驗證框架使用插件身份驗證器,它是AbstractAccountAuthenticator的子類。驗證者通過以下步驟驗證用戶的身份:

    • 收集用戶的名稱,密碼或類似信息(用戶的憑據)。
    • 將憑據發送到服務
    • 檢查服務的回復。

    如果服務接受憑據,則身份驗證器可以存儲憑據以供以后使用。由于插件驗證器框架,AccountManager可以提供對驗證者支持并選擇公開的任何驗證的訪問權限,例如OAuth2 authtokens。

    雖然不需要身份驗證,但大多數聯系人服務都使用它。但是,您不需要使用Android身份驗證框架進行身份驗證。

    同步適配器實現

    要為Contacts Provider實現同步適配器,首先要創建一個包含以下內容的Android應用程序:

    一個服務組件,響應來自系統的請求綁定到同步適配器。

    當系統想要運行同步時,它會調用服務的onBind()方法來獲取同步適配器的IBinder。這允許系統對適配器的方法執行跨進程調用。

    在Sample Sync Adapter示例應用程序中,此服務的類名是com.example.android.samplesync.syncadapter.SyncService。

    實際的同步適配器,實現為AbstractThreadedSyncAdapter的具體子類。

    此類負責從服務器下載數據,從設備上傳數據以及解決沖突。適配器的主要工作是在onPerformSync()方法中完成的。必須將此類實例化為單例。

    在Sample Sync Adapter示例應用程序中,同步適配器在com.example.android.samplesync.syncadapter.SyncAdapter類中定義。

    Application的子類。

    此類充當同步適配器單例的工廠。使用onCreate()方法實例化同步適配器,并提供靜態“getter”方法以將單例返回到同步適配器服務的onBind()方法。

    可選:響應來自系統的用戶身份驗證請求的服務組件。

    AccountManager啟動此服務以開始身份驗證過程。服務的onCreate()方法實例化一個authenticator對象。當系統想要為應用程序的同步適配器驗證用戶帳戶時,它會調用服務的onBind()方法來獲取驗證者的IBinder。這允許系統對認證者的方法進行跨進程調用。

    在Sample Sync Adapter示例應用程序中,此服務的類名是com.example.android.samplesync.authenticator.AuthenticationService。

    可選:AbstractAccountAuthenticator的一個具體子類,用于處理身份驗證請求。

    此類提供AccountManager調用的方法,以便使用服務器驗證用戶的憑據。根據使用的服務器技術,身份驗證過程的細節差異很大。您應參閱服務器軟件的文檔以了解有關身份驗證的更多信息。

    在Sample Sync Adapter示例應用程序中,驗證程序在com.example.android.samplesync.authenticator.Authenticator類中定義。

    定義系統同步適配器和身份驗證器的XML文件。

    前面描述的同步適配器和身份驗證器服務組件在應用程序清單中的<service>元素中定義。這些元素包含<meta-data>子元素,它們為系統提供特定數據:

    • 步適配器服務的<meta-data>元素指向XML文件res / xml / syncadapter.xml。反過來,此文件指定將與聯系人提供程序同步的Web服務的URI,以及Web服務的帳戶類型。
    • 可選:驗證者的<meta-data>元素指向XML文件res / xml / authenticator.xml。反過來,此文件指定此身份驗證器支持的帳戶類型,以及在身份驗證過程中顯示的UI資源。此元素中指定的帳戶類型必須與為同步適配器指定的帳戶類型相同。

    社交流數據


    android.provider.ContactsContract.StreamItems和android.provider.ContactsContract.StreamItemPhotos表管理來自社交網絡的傳入數據。您可以編寫一個同步適配器,將來自您自己網絡的流數據添加到這些表中,或者您可以從這些表中讀取流數據并將其顯示在您自己的應用程序中,或兩者都顯示。借助這些功能,您的社交網絡服務和應用程序可以集成到Android的社交網絡體驗中。

    社交流文本

    流項目始終與原始聯系人關聯。 android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID鏈接到原始聯系人的_ID值。原始聯系人的帳戶類型和帳戶名稱也存儲在流項目行中。

    將流中的數據存儲在以下列中:

    android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE

    必要:用戶與此流項關聯的原始聯系人的帳戶類型。請記住在插入流項目時設置此值。

    android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME

    必要:用戶與此流項目關聯的原始聯系人的帳戶名稱。請記住在插入流項目時設置此值。

    標識符列

    必要:插入流項時,必須插入以下標識符列:

    • android.provider.ContactsContract.StreamItemsColumns #CONTACT_ID:與此流項關聯的聯系人的android.provider.BaseColumns#_ID值。
    • android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY:此流項目與之關聯的聯系人的android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY值。
    • android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID:與此流項關聯的原始聯系人的android.provider.BaseColumns#_ID值。

    android.provider.ContactsContract.StreamItemsColumns#COMMENTS

    可選的。存儲可以在流項目開頭顯示的摘要信息。

    android.provider.ContactsContract.StreamItemsColumns#TEXT

    流項目的文本,即項目源發布的內容,或生成流項目的某些操作的描述。此列可以包含可以由fromHtml()呈現的任何格式和嵌入式資源圖像。提供程序可能會截斷或刪除長內容,但會盡量避免破壞標記。

    要顯示流項目的標識信息,請使用android.provider.ContactsContract.StreamItemsColumns#RES_ICON,android.provider.ContactsContract.StreamItemsColumns#RES_LABEL和android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE鏈接到應用程序中的資源。

    android.provider.ContactsContract.StreamItems表還包含列android.provider.ContactsContract.StreamItemsColumns#SYNC1到android.provider.ContactsContract.StreamItemsColumns#SYNC4,用于獨占使用同步適配器。

    社交流照片

    android.provider.ContactsContract.StreamItemPhotos表存儲與流項關聯的照片。表的android.provider.ContactsContract.StreamItemPhotosColumns #STREAM_ITEM_ID列鏈接到android.provider.ContactsContract.StreamItems表的_ID列中的值。照片參考存儲在這些列的表中:

    android.provider.ContactsContract.StreamItemPhotos #PHOTO列(BLOB)。

    照片的二進制表示,由提供程序調整大小以進行存儲和顯示。此列可用于向后兼容用于存儲照片的以前版本的Contacts Provider。但是,在當前版本中,您不應使用此列來存儲照片。相反,使用android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID或android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI(兩者都在以下幾點中描述)將照片存儲在文件中。此列現在包含照片的縮略圖,可供閱讀。

    android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID

    原始聯系人照片的數字標識符。將此值附加到常量DisplayPhoto.CONTENT_URI以獲取指向單個照片文件的內容URI,然后調用openAssetFileDescriptor()以獲取照片文件的句柄。

    android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI

    內容URI直接指向此行所代表的照片的照片文件。使用此URI調用openAssetFileDescriptor()以獲取照片文件的句柄。

    使用社交流表

    這些表的工作方式與Contacts Provider中的其他主表相同,不同之處在于:

    • 這些表需要其他訪問權限。要從中讀取,您的應用程序必須具有android.Manifest.permission#READ_SOCIAL_STREAM權限。要修改它們,您的應用程序必須具有android.Manifest.permission#WRITE_SOCIAL_STREAM權限。
    • 對于android.provider.ContactsContract.StreamItems表,為每個原始聯系人存儲的行數是有限的。達到此限制后,Contacts Provider會自動刪除具有最舊android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP的行,從而為新的流項目行騰出空間。要獲得限制,請向內容URI發出查詢android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI。您可以將除內容URI之外的所有參數設置為null。該查詢返回一個包含單行的Cursor,其中包含單個列android.provider.ContactsContract.StreamItems #MAX_ITEMS。

    android.provider.ContactsContract.StreamItems.StreamItemPhotos類定義了包含單個流項目的照片行的android.provider.ContactsContract.StreamItemPhotos的子表。

    社交流互動

    聯系人提供商管理的社交流數據與設備的聯系人應用程序一起,提供了一種將社交網絡系統與現有聯系人連接的強大方式。可以使用以下功能:

    • 通過使用同步適配器將您的社交網絡服務同步到Contacts Provider,您可以檢索用戶聯系人的最近活動,并將其存儲在android.provider.ContactsContract.StreamItems和android.provider.ContactsContract.StreamItemPhotos表中供以后使用。
    • 除了常規同步之外,您還可以在用戶選擇要查看的聯系人時觸發同步適配器以檢索其他數據。這允許您的同步適配器檢索高分辨率照片和聯系人的最新流項目。
    • 通過向設備的聯系人應用程序和聯系人提供程序注冊通知,您可以在查看聯系人時收到意圖,并在此時更新服務中的聯系人狀態。與使用同步適配器進行完全同步相比,此方法可能更快并且使用更少的帶寬。
    • 用戶可以在查看設備聯系人應用程序中的聯系人時為您的社交網絡服務添加聯系人。您可以使用“邀請聯系人”功能啟用此功能,該功能通過將現有聯系人添加到網絡的活動和提供設備聯系人應用程序的XML文件以及提供應用程序詳細信息的聯系人提供程序的組合啟用。

    流項目與Contacts Provider的定期同步與其他同步相同。有關同步的詳細信息,請參閱“聯系人提供程序同步適配器”一節。接下來的兩節將介紹注冊通知和邀請聯系人。

    注冊以處理社交網絡視圖

    注冊同步適配器以在用戶查看由同步適配器管理的聯系人時接收通知:

  • 在項目的res / xml /目錄中創建名為contacts.xml的文件。如果您已有此文件,則可以跳過此步驟。
  • 在此文件中,添加元素<ContactsAccountType xmlns:android =“http://schemas.android.com/apk/res/android”>。如果此元素已存在,則可以跳過此步驟。
  • 要注冊當用戶在設備的聯系人應用程序中打開聯系人詳細信息頁面時收到通知的服務,請將屬性viewContactNotifyService =“serviceclass”添加到該元素,其中serviceclass是應接收意圖的服務的完全限定類名。設備的聯系人應用程序。對于通知程序服務,請使用擴展IntentService的類,以允許服務接收意圖。傳入意圖中的數據包含用戶單擊的原始聯系人的內容URI。從通知程序服務,您可以綁定到然后調用同步適配器以更新原始聯系人的數據。
  • 要注冊當用戶單擊流項目或照片或兩者時要調用的活動:

  • 在項目的res / xml /目錄中創建名為contacts.xml的文件。如果您已有此文件,則可以跳過此步驟。
  • 要注冊您的某個活動以處理用戶單擊設備的聯系人應用程序中的流項目,請將屬性viewStreamItemActivity =“activityclass”添加到元素,其中activityclass是應從其接收意圖的活動的完全限定類名。設備的聯系人應用程序。
  • 要注冊您的某個活動以處理用戶單擊設備的聯系人應用程序中的流項目,請將屬性viewStreamItemActivity =“activityclass”添加到元素,其中activityclass是應從其接收意圖的活動的完全限定類名。設備的聯系人應用程序。
  • 要注冊您的某個活動以處理用戶在設備的聯系人應用程序中單擊流照片,請將屬性viewStreamItemPhotoActivity =“activityclass”添加到該元素,其中activityclass是應接收意圖的活動的完全限定類名。設備的聯系人應用程序。
  • <ContactsAccountType>元素在<ContactsAccountType>元素中有更詳細的描述。

    傳入的意圖包含用戶單擊的項目或照片的內容URI。要為文本項和照片分別進行活動,請在同一文件中使用這兩個屬性。

    與您的社交網絡服務進行交互

    用戶無需離開設備的聯系人應用程序即可邀請聯系人加入您的社交網站。相反,您可以讓設備的聯系人應用程序發送邀請聯系人參與您的某項活動的意圖。要設置它:

  • 在項目的res / xml /目錄中創建名為contacts.xml的文件。如果您已有此文件,則可以跳過此步驟。
  • 在此文件中,添加元素<ContactsAccountType xmlns:android =“http://schemas.android.com/apk/res/android”>。如果此元素已存在,則可以跳過此步驟。
  • 添加以下屬性:
    • inviteContactActivity="activityclass"
    • inviteContactActionLabel="@string/invite_action_label"

    activityclass值是應該接收intent的活動的完全限定類名。 invite_action_label值是一個文本字符串,顯示在設備的聯系人應用程序的“添加連接”菜單中。

    注意:ContactsSource是ContactsAccountType的已棄用標記名稱。

    contacts.xml參考

    文件的contacts.xml包含控制同步適配器和應用程序與聯系人應用程序和聯系人提供程序的交互的XML元素。以下各節介紹了這些元素。

    <ContactsAccountType>元素

    <ContactsAccountType>元素控制應用程序與聯系人應用程序的交互。它具有以下語法:

    <ContactsAccountTypexmlns:android="http://schemas.android.com/apk/res/android"inviteContactActivity="activity_name"inviteContactActionLabel="invite_command_text"viewContactNotifyService="view_notify_service"viewGroupActivity="group_view_activity"viewGroupActionLabel="group_action_text"viewStreamItemActivity="viewstream_activity_name"viewStreamItemPhotoActivity="viewphotostream_activity_name">

    包含在:

    res/xml/contacts.xml

    可以包含:

    <ContactsDataKind>

    描述:

    聲明Android組件和UI標簽,允許用戶邀請其中一個聯系人加入社交網絡,在其中一個社交網絡流更新時通知用戶,等等。

    請注意,<ContactsAccountType>的屬性不需要屬性前綴android:。

    屬性:

    inviteContactActivity

    當用戶從設備的聯系人應用程序中選擇添加連接時,要激活的應用程序中活動的完全限定類名。

    inviteContactActionLabel

    在“添加連接”菜單中為inviteContactActivity中指定的活動顯示的文本字符串。例如,您可以使用字符串“Follow in my network”。您可以為此標簽使用字符串資源標識符。

    viewContactNotifyService

    應用程序中服務的完全限定類名,應在用戶查看聯系人時接收通知。此通知由設備的聯系人應用程序發送;它允許您的應用程序推遲數據密集型操作,直到需要它們為止。例如,您的應用程序可以通過讀入并顯示聯系人的高分辨率照片和最新的社交流項目來響應此通知。社交流交互部分中更詳細地描述了此功能。您可以在SampleSyncAdapter示例應用程序的NotifierService.java文件中看到通知服務的示例。

    viewGroupActivity

    應用程序中可顯示組信息的活動的完全限定類名。當用戶單擊設備的聯系人應用程序中的組標簽時,將顯示此活動的UI。

    viewGroupActionLabel

    聯系人應用程序為UI控件顯示的標簽,允許用戶查看應用程序中的組。

    例如,如果您在自己的設備上安裝Google+應用程序并將Google+與聯系人應用程序同步,則會在聯系人應用程序的“組”標簽中看到Google+圈子列為群組。如果您點擊Google+圈子,您會看到該圈子中的人員被列為“群組”。在屏幕頂部,您會看到Google+圖標;如果您點擊它,控制權切換到Google+應用。聯系人應用程序使用Google+圖標作為viewGroupActionLabel的值,使用viewGroupActivity執行此操作。

    此屬性允許使用字符串資源標識符。

    viewStreamItemActivity

    應用程序中活動的完全限定類名,當用戶單擊原始聯系人的流項時,設備的聯系人應用程序將啟動該活動。

    viewStreamItemPhotoActivity

    應用程序中活動的完全限定類名,當用戶單擊原始聯系人的流項目中的照片時,設備的聯系人應用程序將啟動該活動。

    <ContactsDataKind>元素

    <ContactsDataKind>元素控制聯系人應用程序UI中應用程序的自定義數據行的顯示。它具有以下語法:

    <ContactsDataKindandroid:mimeType="MIMEtype"android:icon="icon_resources"android:summaryColumn="column_name"android:detailColumn="column_name">

    包含在:

    <ContactsAccountType>

    描述:

    使用此元素可使聯系人應用程序顯示自定義數據行的內容,作為原始聯系人詳細信息的一部分。 <ContactsAccountType>的每個<ContactsDataKind>子元素表示同步適配器添加到ContactsContract.Data表的一種自定義數據行。為您使用的每個自定義MIME類型添加一個<ContactsDataKind>元素。如果您有一個不想顯示數據的自定義數據行,則不必添加該元素。

    屬性:

    android:mimeType

    您為ContactsContract.Data表中的某個自定義數據行類型定義的自定義MIME類型。例如,值vnd.android.cursor.item / vnd.example.locationstatus可以是記錄聯系人上次已知位置的數據行的自定義MIME類型。

    android:icon

    聯系人應用程序在您的數據旁邊顯示的Android可繪制資源。使用此選項可向用戶表明數據來自您的服務。

    android:summaryColumn

    從數據行檢索的兩個值中的第一個的列名稱。該值顯示為此數據行的條目的第一行。第一行旨在用作數據摘要,但這是可選的。另見android:detailColumn。

    android:detailColumn

    從數據行檢索的兩個值中的第二個的列名稱。該值顯示為此數據行的條目的第二行。另見android:summaryColumn。

    其他聯系人提供商功能

    除了前面部分中描述的主要功能外,Contacts Provider還提供了這些用于處理聯系人數據的有用功能:

    • 聯系小組
    • 照片功能

    聯系小組

    聯系人提供者可以選擇使用組數據標記相關聯系人的集合。如果與用戶帳戶關聯的服務器要維護組,則帳戶的帳戶類型的同步適配器應在聯系人提供程序和服務器之間傳輸組數據。當用戶將新聯系人添加到服務器,然后將此聯系人放入新組時,同步適配器必須將新組添加到ContactsContract.Groups表。原始聯系人所屬的組或組使用ContactsContract.CommonDataKinds.GroupMembership MIME類型存儲在ContactsContract.Data表中。

    如果您正在設計將原始聯系人數據從服務器添加到聯系人提供程序的同步適配器,并且您沒有使用組,則需要告知提供程序使您的數據可見。在用戶向設備添加帳戶時執行的代碼中,更新Contacts Provider為該帳戶添加的ContactsContract.Settings行。在此行中,將Settings.UNGROUPED_VISIBLE列的值設置為1.執行此操作時,即使您不使用組,聯系人提供程序也始終使您的聯系人數據可見。

    聯系照片

    ContactsContract.Data表將照片存儲為MIME類型為Photo.CONTENT_ITEM_TYPE的行。行的CONTACT_ID列鏈接到它所屬的原始聯系人的_ID列。 ContactsContract.Contacts.Photo類定義ContactsContract.Contacts的子表,其中包含聯系人主要照片的照片信息,該照片是聯系人主要原始聯系人的主要照片。類似地,類ContactsContract.RawContacts.DisplayPhoto定義ContactsContract.RawContacts的子表,其中包含原始聯系人的主要照片的照片信息。

    ContactsContract.Contacts.Photo和ContactsContract.RawContacts.DisplayPhoto的參考文檔包含檢索照片信息的示例。檢索原始聯系人的主縮略圖沒有便利類,但您可以向ContactsContract.Data表發送查詢,選擇原始聯系人的_ID,Photo.CONTENT_ITEM_TYPE和IS_PRIMARY列以查找原始聯系人的主要聯系人照片排。

    人的社交流數據還可以包括照片。它們存儲在android.provider.ContactsContract.StreamItemPhotos表中,在社交流照片一節中有更詳細的描述。

    總結

    以上是生活随笔為你收集整理的Android官方文档—APP组件(Content Providers)(Contacts Provider)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    任你躁国产自任一区二区三区 | 国产成人无码av片在线观看不卡 | 国产精品人人爽人人做我的可爱 | 久久国产劲爆∧v内射 | 日韩精品成人一区二区三区 | 夜精品a片一区二区三区无码白浆 | 无码纯肉视频在线观看 | 国产亚洲欧美在线专区 | 色爱情人网站 | 亚洲中文字幕va福利 | 男女超爽视频免费播放 | 色婷婷av一区二区三区之红樱桃 | 在线天堂新版最新版在线8 | 国产一区二区三区影院 | 久久久久久久人妻无码中文字幕爆 | 国内少妇偷人精品视频免费 | 国产av无码专区亚洲a∨毛片 | 2020久久超碰国产精品最新 | 中文字幕日韩精品一区二区三区 | 亚洲精品综合五月久久小说 | 5858s亚洲色大成网站www | 无码人妻丰满熟妇区毛片18 | 久久综合网欧美色妞网 | 在线欧美精品一区二区三区 | 性生交大片免费看女人按摩摩 | 国产精品亚洲lv粉色 | 久久综合狠狠综合久久综合88 | 中文精品无码中文字幕无码专区 | 久久无码专区国产精品s | 99久久99久久免费精品蜜桃 | 亚洲另类伦春色综合小说 | 九九在线中文字幕无码 | 强辱丰满人妻hd中文字幕 | 色婷婷av一区二区三区之红樱桃 | 国产做国产爱免费视频 | 国产午夜亚洲精品不卡下载 | 成年女人永久免费看片 | 国产成人无码专区 | 国产 浪潮av性色四虎 | 美女扒开屁股让男人桶 | 成年美女黄网站色大免费全看 | 小鲜肉自慰网站xnxx | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 中文字幕人妻丝袜二区 | 亚洲欧美日韩成人高清在线一区 | 国产福利视频一区二区 | 一本久久a久久精品亚洲 | 小sao货水好多真紧h无码视频 | 免费观看又污又黄的网站 | 亚洲狠狠色丁香婷婷综合 | 亚洲精品国产第一综合99久久 | 领导边摸边吃奶边做爽在线观看 | 亚洲一区二区三区国产精华液 | 中文字幕无码日韩专区 | 日韩 欧美 动漫 国产 制服 | 国产国产精品人在线视 | 成人一区二区免费视频 | 精品人妻人人做人人爽 | 久久精品女人天堂av免费观看 | 夜精品a片一区二区三区无码白浆 | 少妇太爽了在线观看 | 欧洲熟妇色 欧美 | 东京热一精品无码av | 一本大道久久东京热无码av | 国产成人久久精品流白浆 | 国产免费无码一区二区视频 | 蜜臀aⅴ国产精品久久久国产老师 | 久久久中文字幕日本无吗 | 国模大胆一区二区三区 | 成人免费视频一区二区 | 老司机亚洲精品影院无码 | 人人妻人人澡人人爽精品欧美 | 日本高清一区免费中文视频 | 乌克兰少妇xxxx做受 | 亚洲国产精品久久久久久 | 国产香蕉尹人综合在线观看 | 日日摸日日碰夜夜爽av | 少妇太爽了在线观看 | 曰韩无码二三区中文字幕 | 久久久久成人精品免费播放动漫 | 亚洲人交乣女bbw | 亚洲自偷精品视频自拍 | 三级4级全黄60分钟 | 欧洲熟妇色 欧美 | 美女张开腿让人桶 | 人妻中文无码久热丝袜 | 女人被爽到呻吟gif动态图视看 | 久久午夜夜伦鲁鲁片无码免费 | 国产午夜手机精彩视频 | 女人被男人躁得好爽免费视频 | 亚洲色欲久久久综合网东京热 | 未满成年国产在线观看 | 中文字幕 人妻熟女 | 无码福利日韩神码福利片 | 免费国产成人高清在线观看网站 | 四虎国产精品一区二区 | 久久精品无码一区二区三区 | 亚洲热妇无码av在线播放 | 性欧美牲交xxxxx视频 | 俺去俺来也www色官网 | 日韩视频 中文字幕 视频一区 | 18禁止看的免费污网站 | 少妇性l交大片 | 久久国语露脸国产精品电影 | 亚洲一区二区三区偷拍女厕 | 无套内射视频囯产 | 无码人妻精品一区二区三区下载 | 国产亚洲精品久久久久久久 | 大肉大捧一进一出视频出来呀 | 国产精品无码一区二区三区不卡 | 国产成人精品视频ⅴa片软件竹菊 | 精品成人av一区二区三区 | 99精品视频在线观看免费 | 中文字幕无线码 | 午夜精品久久久久久久久 | 色综合久久久无码中文字幕 | 国产猛烈高潮尖叫视频免费 | 亚洲一区二区三区无码久久 | 精品成人av一区二区三区 | 日韩少妇白浆无码系列 | 女人被爽到呻吟gif动态图视看 | 亚洲国产欧美在线成人 | 中文字幕无码av激情不卡 | 免费观看激色视频网站 | 亚洲の无码国产の无码步美 | 亚洲欧美色中文字幕在线 | 人妻少妇精品无码专区二区 | 欧洲美熟女乱又伦 | 日韩 欧美 动漫 国产 制服 | 中文字幕+乱码+中文字幕一区 | 51国偷自产一区二区三区 | 日本一卡二卡不卡视频查询 | 欧美色就是色 | 人人爽人人爽人人片av亚洲 | 国产一区二区三区四区五区加勒比 | 久久亚洲精品中文字幕无男同 | 国产精品高潮呻吟av久久4虎 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产一区二区不卡老阿姨 | 夜夜夜高潮夜夜爽夜夜爰爰 | 久久97精品久久久久久久不卡 | 欧美日韩亚洲国产精品 | 蜜臀av无码人妻精品 | 久久天天躁狠狠躁夜夜免费观看 | 俺去俺来也在线www色官网 | 老子影院午夜精品无码 | 欧洲欧美人成视频在线 | 亚洲一区二区三区香蕉 | 国产精品亚洲а∨无码播放麻豆 | 欧美国产日韩亚洲中文 | 国产精品久久久久久亚洲毛片 | 亚洲欧美日韩综合久久久 | 欧洲vodafone精品性 | 偷窥日本少妇撒尿chinese | 熟女少妇人妻中文字幕 | 国产精品办公室沙发 | 国产av人人夜夜澡人人爽麻豆 | 国产精品沙发午睡系列 | 无码一区二区三区在线 | 人妻少妇精品视频专区 | 丝袜人妻一区二区三区 | 在线播放无码字幕亚洲 | 东京热无码av男人的天堂 | 欧美人与物videos另类 | 亚洲国产精华液网站w | а√资源新版在线天堂 | 国产卡一卡二卡三 | 精品乱子伦一区二区三区 | 强伦人妻一区二区三区视频18 | 亚洲一区二区三区含羞草 | 久久aⅴ免费观看 | 精品夜夜澡人妻无码av蜜桃 | 日韩少妇内射免费播放 | 午夜精品久久久久久久久 | 综合激情五月综合激情五月激情1 | 欧美第一黄网免费网站 | 人人妻人人藻人人爽欧美一区 | 亚洲高清偷拍一区二区三区 | 精品无码一区二区三区爱欲 | 青青久在线视频免费观看 | 3d动漫精品啪啪一区二区中 | 久久精品中文闷骚内射 | 狠狠色欧美亚洲狠狠色www | 人人妻人人澡人人爽人人精品浪潮 | 伊人久久大香线蕉亚洲 | 无码帝国www无码专区色综合 | 国产一区二区三区影院 | 亚洲毛片av日韩av无码 | 国产亲子乱弄免费视频 | 日本一卡二卡不卡视频查询 | 精品aⅴ一区二区三区 | 国产又爽又猛又粗的视频a片 | 精品人妻中文字幕有码在线 | 小鲜肉自慰网站xnxx | 大肉大捧一进一出视频出来呀 | 成人影院yy111111在线观看 | 亚洲s码欧洲m码国产av | 一本大道久久东京热无码av | 亚洲午夜久久久影院 | 日本乱偷人妻中文字幕 | 人妻插b视频一区二区三区 | 丝袜人妻一区二区三区 | 国产精品国产自线拍免费软件 | 国产卡一卡二卡三 | 国产区女主播在线观看 | 伊人久久大香线蕉亚洲 | 任你躁在线精品免费 | 中文字幕 人妻熟女 | 久久国产劲爆∧v内射 | 牲交欧美兽交欧美 | 精品欧美一区二区三区久久久 | 日韩人妻少妇一区二区三区 | 波多野结衣一区二区三区av免费 | 日日摸夜夜摸狠狠摸婷婷 | 欧美三级不卡在线观看 | 亚洲精品无码人妻无码 | 国产又粗又硬又大爽黄老大爷视 | 国产成人亚洲综合无码 | 国产成人综合在线女婷五月99播放 | 亚洲阿v天堂在线 | 丰满肥臀大屁股熟妇激情视频 | 亚洲欧洲日本综合aⅴ在线 | 98国产精品综合一区二区三区 | 女人被男人爽到呻吟的视频 | 97精品国产97久久久久久免费 | 国产精品久久久久久久9999 | 国产成人综合美国十次 | 亚洲精品中文字幕久久久久 | 伊人久久大香线蕉av一区二区 | 免费观看的无遮挡av | 亚洲精品中文字幕久久久久 | 国产成人无码一二三区视频 | 狂野欧美性猛xxxx乱大交 | 亚洲国产精品一区二区第一页 | 97久久国产亚洲精品超碰热 | 麻豆人妻少妇精品无码专区 | 国产手机在线αⅴ片无码观看 | 中文字幕乱码亚洲无线三区 | 少妇无码一区二区二三区 | 久久成人a毛片免费观看网站 | 婷婷五月综合缴情在线视频 | 亚洲国产精品成人久久蜜臀 | 国产精品多人p群无码 | 国产成人综合在线女婷五月99播放 | 丝袜美腿亚洲一区二区 | 国内少妇偷人精品视频免费 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲色成人中文字幕网站 | 无码av最新清无码专区吞精 | 玩弄中年熟妇正在播放 | 亚洲欧洲日本无在线码 | 又色又爽又黄的美女裸体网站 | 高清国产亚洲精品自在久久 | 蜜桃视频韩日免费播放 | 丰满少妇弄高潮了www | 国产成人精品视频ⅴa片软件竹菊 | 午夜丰满少妇性开放视频 | 亚洲aⅴ无码成人网站国产app | 国产亚洲精品久久久久久大师 | 精品一区二区三区波多野结衣 | 少妇无套内谢久久久久 | 久久综合色之久久综合 | 国产av久久久久精东av | 三上悠亚人妻中文字幕在线 | 欧美熟妇另类久久久久久多毛 | 亚洲中文字幕在线无码一区二区 | 婷婷五月综合缴情在线视频 | 久久久久av无码免费网 | 亚洲成av人片在线观看无码不卡 | 中文字幕 人妻熟女 | 中文字幕无码av波多野吉衣 | 在线亚洲高清揄拍自拍一品区 | 99久久精品无码一区二区毛片 | 风流少妇按摩来高潮 | 亚洲无人区一区二区三区 | 色一情一乱一伦 | 久久久久av无码免费网 | 国产又粗又硬又大爽黄老大爷视 | 4hu四虎永久在线观看 | 色综合久久久无码网中文 | 亚洲一区二区三区在线观看网站 | 蜜桃av抽搐高潮一区二区 | 日本护士毛茸茸高潮 | 久久久久免费看成人影片 | 国色天香社区在线视频 | 亚洲精品无码国产 | 亚欧洲精品在线视频免费观看 | 亚洲欧美日韩综合久久久 | 天天拍夜夜添久久精品大 | 无码国内精品人妻少妇 | 久久精品中文字幕大胸 | 十八禁真人啪啪免费网站 | 性啪啪chinese东北女人 | 精品久久综合1区2区3区激情 | 少妇性俱乐部纵欲狂欢电影 | 少妇愉情理伦片bd | 美女黄网站人色视频免费国产 | 婷婷色婷婷开心五月四房播播 | 狂野欧美性猛xxxx乱大交 | 99在线 | 亚洲 | 久久精品无码一区二区三区 | 成人av无码一区二区三区 | 秋霞特色aa大片 | 人妻无码αv中文字幕久久琪琪布 | 欧美喷潮久久久xxxxx | 久久人妻内射无码一区三区 | 国产高潮视频在线观看 | aⅴ亚洲 日韩 色 图网站 播放 | 久久99精品国产麻豆蜜芽 | 综合人妻久久一区二区精品 | 国产成人综合色在线观看网站 | 亚洲理论电影在线观看 | 久久99精品久久久久久 | 国产区女主播在线观看 | 无码人妻黑人中文字幕 | 日韩在线不卡免费视频一区 | 2020久久香蕉国产线看观看 | 18精品久久久无码午夜福利 | 久久精品国产日本波多野结衣 | 美女黄网站人色视频免费国产 | 国产69精品久久久久app下载 | 波多野42部无码喷潮在线 | 又色又爽又黄的美女裸体网站 | аⅴ资源天堂资源库在线 | 麻豆国产人妻欲求不满 | 国产亚洲精品久久久ai换 | 亚洲阿v天堂在线 | 人人妻人人澡人人爽精品欧美 | av小次郎收藏 | 人妻插b视频一区二区三区 | 内射老妇bbwx0c0ck | 久久国产劲爆∧v内射 | 久久五月精品中文字幕 | 无码人妻精品一区二区三区不卡 | 精品国产一区二区三区四区在线看 | 久久精品国产一区二区三区肥胖 | 国产乱人无码伦av在线a | 免费看少妇作爱视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 无码av中文字幕免费放 | 国产又爽又猛又粗的视频a片 | 鲁一鲁av2019在线 | 中文字幕日韩精品一区二区三区 | 18禁黄网站男男禁片免费观看 | 国产亚洲日韩欧美另类第八页 | 亚洲欧洲中文日韩av乱码 | 欧洲vodafone精品性 | 久久精品中文字幕一区 | 人妻少妇精品久久 | 国产成人精品视频ⅴa片软件竹菊 | 国产黑色丝袜在线播放 | 亚洲一区二区三区含羞草 | 久久视频在线观看精品 | 狂野欧美性猛交免费视频 | 欧美日本免费一区二区三区 | 欧美老人巨大xxxx做受 | av无码不卡在线观看免费 | 人人妻人人澡人人爽欧美精品 | 欧洲vodafone精品性 | 国产麻豆精品一区二区三区v视界 | 兔费看少妇性l交大片免费 | 久久综合网欧美色妞网 | 日韩精品乱码av一区二区 | 日韩亚洲欧美中文高清在线 | 少妇激情av一区二区 | 久久久久久av无码免费看大片 | 欧美熟妇另类久久久久久不卡 | 骚片av蜜桃精品一区 | 中文字幕无码av激情不卡 | 色婷婷香蕉在线一区二区 | 丰满人妻一区二区三区免费视频 | 日韩av无码中文无码电影 | 亚洲成在人网站无码天堂 | 久久久www成人免费毛片 | 日本xxxx色视频在线观看免费 | 精品久久久无码人妻字幂 | 国产区女主播在线观看 | 四虎国产精品免费久久 | 国产人妻精品一区二区三区 | 国产真人无遮挡作爱免费视频 | 亚洲熟妇自偷自拍另类 | 国产成人无码av在线影院 | 亚洲国产精华液网站w | 一本精品99久久精品77 | 国产特级毛片aaaaaa高潮流水 | 国产97色在线 | 免 | 夜精品a片一区二区三区无码白浆 | 欧美成人免费全部网站 | 无遮挡国产高潮视频免费观看 | 国产成人精品一区二区在线小狼 | 亚洲乱亚洲乱妇50p | 成人毛片一区二区 | 四虎影视成人永久免费观看视频 | 欧美精品免费观看二区 | 国产疯狂伦交大片 | 日本大香伊一区二区三区 | 麻花豆传媒剧国产免费mv在线 | 成人精品视频一区二区三区尤物 | 大地资源中文第3页 | 午夜精品一区二区三区的区别 | 未满成年国产在线观看 | 国产精品视频免费播放 | 中文字幕无码日韩专区 | 亚洲午夜久久久影院 | 久久成人a毛片免费观看网站 | 国产精品无码久久av | 无码成人精品区在线观看 | 亚洲阿v天堂在线 | 国产激情精品一区二区三区 | 亚洲色欲久久久综合网东京热 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲小说图区综合在线 | 一区二区三区乱码在线 | 欧洲 | 色综合天天综合狠狠爱 | 天堂一区人妻无码 | 激情国产av做激情国产爱 | 一本大道久久东京热无码av | 日本免费一区二区三区最新 | a片免费视频在线观看 | 又紧又大又爽精品一区二区 | 国产成人久久精品流白浆 | 亚洲第一网站男人都懂 | 午夜福利电影 | 天堂а√在线中文在线 | 精品 日韩 国产 欧美 视频 | 老子影院午夜伦不卡 | 综合激情五月综合激情五月激情1 | 久久久久久久女国产乱让韩 | a片在线免费观看 | 性欧美videos高清精品 | av无码久久久久不卡免费网站 | 国产精品亚洲综合色区韩国 | 好爽又高潮了毛片免费下载 | 丰满肥臀大屁股熟妇激情视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲欧美国产精品专区久久 | 色婷婷综合激情综在线播放 | 国产精品美女久久久网av | 国产 浪潮av性色四虎 | 日本大乳高潮视频在线观看 | 国产无套内射久久久国产 | 婷婷丁香六月激情综合啪 | 精品亚洲韩国一区二区三区 | 一个人看的视频www在线 | 婷婷综合久久中文字幕蜜桃三电影 | 国产一区二区三区日韩精品 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲人交乣女bbw | 国产真实乱对白精彩久久 | 国产av人人夜夜澡人人爽麻豆 | 免费乱码人妻系列无码专区 | 国产女主播喷水视频在线观看 | 欧美野外疯狂做受xxxx高潮 | 久久久久人妻一区精品色欧美 | 国产免费久久精品国产传媒 | 性史性农村dvd毛片 | 成年美女黄网站色大免费全看 | 午夜精品一区二区三区的区别 | 国产精品久久久一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品国产福利一区二区 | 成人欧美一区二区三区黑人 | 人人妻人人澡人人爽精品欧美 | 亚洲国产精品毛片av不卡在线 | 久久亚洲中文字幕无码 | 欧美喷潮久久久xxxxx | 亚洲国产欧美在线成人 | 中文字幕无码av激情不卡 | 亚洲国产精品久久久天堂 | 99精品国产综合久久久久五月天 | 国产 精品 自在自线 | 日韩av激情在线观看 | 装睡被陌生人摸出水好爽 | 色欲综合久久中文字幕网 | 日韩人妻无码一区二区三区久久99 | 无码av岛国片在线播放 | 国产国语老龄妇女a片 | 秋霞特色aa大片 | 性生交片免费无码看人 | 中文字幕无码日韩欧毛 | 中文字幕无码免费久久9一区9 | 国产后入清纯学生妹 | 青青青手机频在线观看 | 国产精品久久久久影院嫩草 | av无码久久久久不卡免费网站 | 国产97色在线 | 免 | 欧美国产日产一区二区 | 久久国产精品偷任你爽任你 | 日产精品99久久久久久 | 久久久无码中文字幕久... | 免费看少妇作爱视频 | 欧美xxxxx精品 | 少妇无码一区二区二三区 | 亚洲综合久久一区二区 | 久久久久成人精品免费播放动漫 | 亚洲精品成a人在线观看 | 日韩视频 中文字幕 视频一区 | 精品国产一区二区三区四区 | 欧美人与禽猛交狂配 | 性做久久久久久久免费看 | av无码电影一区二区三区 | 天堂а√在线中文在线 | 狠狠色噜噜狠狠狠狠7777米奇 | 最新国产乱人伦偷精品免费网站 | 伦伦影院午夜理论片 | 成人性做爰aaa片免费看不忠 | 少妇人妻av毛片在线看 | 亚洲一区av无码专区在线观看 | 成 人 网 站国产免费观看 | av在线亚洲欧洲日产一区二区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 清纯唯美经典一区二区 | 男女超爽视频免费播放 | 亚洲中文字幕成人无码 | 草草网站影院白丝内射 | 999久久久国产精品消防器材 | 久久亚洲中文字幕无码 | 无码任你躁久久久久久久 | 女人被男人躁得好爽免费视频 | 国产精品亚洲专区无码不卡 | 女人色极品影院 | 又大又硬又黄的免费视频 | 曰本女人与公拘交酡免费视频 | 樱花草在线播放免费中文 | 亚洲熟妇自偷自拍另类 | 欧美日韩色另类综合 | 久久久久久九九精品久 | 国产综合久久久久鬼色 | 国产一区二区不卡老阿姨 | 骚片av蜜桃精品一区 | 国产精品久久久久久无码 | 高潮毛片无遮挡高清免费视频 | 国产精品资源一区二区 | 中文字幕 亚洲精品 第1页 | 97精品人妻一区二区三区香蕉 | 黄网在线观看免费网站 | 成熟妇人a片免费看网站 | 乌克兰少妇xxxx做受 | 国产精品福利视频导航 | 色情久久久av熟女人妻网站 | 久久久久se色偷偷亚洲精品av | 国产内射老熟女aaaa | 天干天干啦夜天干天2017 | 中文久久乱码一区二区 | 2020久久香蕉国产线看观看 | 亚洲一区二区三区播放 | 国产免费久久久久久无码 | 久久精品视频在线看15 | 久久综合给合久久狠狠狠97色 | 大地资源中文第3页 | 亚洲gv猛男gv无码男同 | 亚洲中文字幕久久无码 | 日韩在线不卡免费视频一区 | 爽爽影院免费观看 | 中文字幕人妻无码一区二区三区 | 精品欧美一区二区三区久久久 | 欧美熟妇另类久久久久久多毛 | 亚洲а∨天堂久久精品2021 | 99久久精品国产一区二区蜜芽 | 日本精品人妻无码77777 天堂一区人妻无码 | 久久久精品国产sm最大网站 | 亚洲综合伊人久久大杳蕉 | 男女作爱免费网站 | 在线观看欧美一区二区三区 | 久久久久亚洲精品男人的天堂 | 狠狠色噜噜狠狠狠狠7777米奇 | 丰满少妇熟乱xxxxx视频 | 亚洲欧美精品伊人久久 | 日韩精品乱码av一区二区 | 色情久久久av熟女人妻网站 | 国产亚洲精品久久久久久大师 | 天天拍夜夜添久久精品大 | 国产av无码专区亚洲awww | 国产 精品 自在自线 | 亚洲熟悉妇女xxx妇女av | 亚洲欧美精品aaaaaa片 | 国产精品久久国产三级国 | 亚洲欧美国产精品专区久久 | 乱码午夜-极国产极内射 | 成人无码视频免费播放 | 欧美激情综合亚洲一二区 | 国产网红无码精品视频 | 无码午夜成人1000部免费视频 | 国产免费久久精品国产传媒 | 精品国产一区二区三区av 性色 | 亚洲精品美女久久久久久久 | 一本久道高清无码视频 | 日本一区二区更新不卡 | 粗大的内捧猛烈进出视频 | 青青青手机频在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 欧洲美熟女乱又伦 | 欧美黑人乱大交 | 99精品无人区乱码1区2区3区 | 宝宝好涨水快流出来免费视频 | 性生交大片免费看女人按摩摩 | 亚洲精品一区二区三区在线观看 | 亚洲国产一区二区三区在线观看 | 老司机亚洲精品影院无码 | 国产精品久久久 | 老太婆性杂交欧美肥老太 | 国产乱子伦视频在线播放 | 国产乱码精品一品二品 | 无码av中文字幕免费放 | 熟妇女人妻丰满少妇中文字幕 | 粗大的内捧猛烈进出视频 | 日韩av无码一区二区三区 | 红桃av一区二区三区在线无码av | 国产精品毛片一区二区 | 97色伦图片97综合影院 | 国产精品久久久久久久影院 | 日本乱人伦片中文三区 | 国产人妻大战黑人第1集 | 夜先锋av资源网站 | 无码人妻精品一区二区三区不卡 | 无码av中文字幕免费放 | 日韩精品乱码av一区二区 | 国产亚洲日韩欧美另类第八页 | 久久久久99精品成人片 | 欧美刺激性大交 | 色妞www精品免费视频 | 久久精品中文字幕一区 | 狂野欧美性猛xxxx乱大交 | 日本丰满熟妇videos | 女人被男人爽到呻吟的视频 | 国产 精品 自在自线 | 久热国产vs视频在线观看 | 荫蒂被男人添的好舒服爽免费视频 | 樱花草在线播放免费中文 | 呦交小u女精品视频 | 日本一卡二卡不卡视频查询 | 中文字幕av日韩精品一区二区 | 亚洲另类伦春色综合小说 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 亚洲 a v无 码免 费 成 人 a v | 成人av无码一区二区三区 | 97精品人妻一区二区三区香蕉 | 成人一在线视频日韩国产 | 无码播放一区二区三区 | 国产精品自产拍在线观看 | 欧美自拍另类欧美综合图片区 | 女人和拘做爰正片视频 | 国产97色在线 | 免 | 国产婷婷色一区二区三区在线 | 娇妻被黑人粗大高潮白浆 | 久久精品一区二区三区四区 | 欧美成人午夜精品久久久 | 又大又硬又黄的免费视频 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲一区二区三区偷拍女厕 | 99国产欧美久久久精品 | 久久亚洲精品成人无码 | 奇米影视7777久久精品人人爽 | 人妻插b视频一区二区三区 | 亚洲理论电影在线观看 | 给我免费的视频在线观看 | 国产精品人人爽人人做我的可爱 | 真人与拘做受免费视频一 | 久久久中文字幕日本无吗 | 伊人久久大香线蕉亚洲 | 精品国产麻豆免费人成网站 | 久久精品人人做人人综合试看 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产国语老龄妇女a片 | 无码精品国产va在线观看dvd | 纯爱无遮挡h肉动漫在线播放 | 成人免费视频在线观看 | 欧美阿v高清资源不卡在线播放 | 久久99精品久久久久婷婷 | 国产av久久久久精东av | 成人试看120秒体验区 | 免费播放一区二区三区 | 精品无人区无码乱码毛片国产 | 亚洲乱码中文字幕在线 | 成人免费视频视频在线观看 免费 | 四虎影视成人永久免费观看视频 | 午夜丰满少妇性开放视频 | 亚洲欧洲中文日韩av乱码 | 国产午夜视频在线观看 | 大肉大捧一进一出好爽视频 | 久久精品女人天堂av免费观看 | 丰满妇女强制高潮18xxxx | 在线亚洲高清揄拍自拍一品区 | 国产女主播喷水视频在线观看 | 欧美真人作爱免费视频 | 欧洲美熟女乱又伦 | 300部国产真实乱 | 色狠狠av一区二区三区 | 无码中文字幕色专区 | 无码毛片视频一区二区本码 | 女人被爽到呻吟gif动态图视看 | ass日本丰满熟妇pics | 国产特级毛片aaaaaa高潮流水 | 正在播放东北夫妻内射 | 国产亚洲精品久久久久久久 | 精品国产一区二区三区四区 | 亚洲狠狠婷婷综合久久 | 少妇邻居内射在线 | 美女黄网站人色视频免费国产 | 夜夜影院未满十八勿进 | 久久久久久久久888 | 久久综合给久久狠狠97色 | 亚洲欧美日韩国产精品一区二区 | 男女作爱免费网站 | 久久精品人人做人人综合试看 | 国产精品免费大片 | 精品久久综合1区2区3区激情 | 欧美日韩视频无码一区二区三 | 日本一区二区三区免费高清 | 精品偷自拍另类在线观看 | 性开放的女人aaa片 | 国产精品第一国产精品 | 久久久久99精品国产片 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产亚洲精品久久久ai换 | 国产精品亚洲综合色区韩国 | 国产精品鲁鲁鲁 | 国产综合在线观看 | 野外少妇愉情中文字幕 | 色综合久久久无码网中文 | 久久亚洲日韩精品一区二区三区 | 婷婷综合久久中文字幕蜜桃三电影 | 国产成人无码av在线影院 | 未满成年国产在线观看 | 成熟人妻av无码专区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲中文无码av永久不收费 | 日韩欧美中文字幕公布 | 欧美三级不卡在线观看 | 国产美女极度色诱视频www | 最近的中文字幕在线看视频 | 婷婷丁香六月激情综合啪 | 国产精品欧美成人 | 精品少妇爆乳无码av无码专区 | 麻豆果冻传媒2021精品传媒一区下载 | 无遮无挡爽爽免费视频 | 任你躁国产自任一区二区三区 | 精品午夜福利在线观看 | 性生交大片免费看女人按摩摩 | 国产成人无码a区在线观看视频app | 亚洲 高清 成人 动漫 | 久久久久成人精品免费播放动漫 | 人人妻人人澡人人爽人人精品浪潮 | 少妇性l交大片 | 中文字幕亚洲情99在线 | 荡女精品导航 | 国产97在线 | 亚洲 | 少妇被黑人到高潮喷出白浆 | 亚洲精品久久久久久一区二区 | 国产精品久久国产三级国 | 国产超碰人人爽人人做人人添 | 在线播放亚洲第一字幕 | 国产精品亚洲五月天高清 | 国产真人无遮挡作爱免费视频 | 国产sm调教视频在线观看 | 亚洲午夜福利在线观看 | 中文久久乱码一区二区 | 暴力强奷在线播放无码 | 国产亚洲人成a在线v网站 | 国产精品无码一区二区桃花视频 | 一二三四社区在线中文视频 | 一二三四社区在线中文视频 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲色大成网站www | 男人和女人高潮免费网站 | 欧美国产日韩久久mv | 无码人中文字幕 | 久久精品中文字幕大胸 | 鲁鲁鲁爽爽爽在线视频观看 | 51国偷自产一区二区三区 | 老子影院午夜伦不卡 | 日韩精品一区二区av在线 | 成人毛片一区二区 | 巨爆乳无码视频在线观看 | 国产精品久久国产精品99 | 亚欧洲精品在线视频免费观看 | 国产色在线 | 国产 | 国产午夜无码精品免费看 | 日本精品久久久久中文字幕 | 国产精品沙发午睡系列 | 亚洲人成无码网www | 18禁止看的免费污网站 | 无码人妻丰满熟妇区毛片18 | 中文亚洲成a人片在线观看 | 又粗又大又硬又长又爽 | 亚欧洲精品在线视频免费观看 | 成人精品视频一区二区 | 乱人伦中文视频在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲啪av永久无码精品放毛片 | 欧美性生交xxxxx久久久 | 国产精品va在线播放 | 中文字幕人成乱码熟女app | av无码电影一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 精品无码国产一区二区三区av | 精品偷拍一区二区三区在线看 | av无码久久久久不卡免费网站 | 亚洲色欲色欲天天天www | 天堂亚洲2017在线观看 | 国产电影无码午夜在线播放 | 亚洲精品一区二区三区大桥未久 | 国产综合色产在线精品 | 欧美日韩视频无码一区二区三 | 天堂а√在线中文在线 | 国产在线一区二区三区四区五区 | 无码国产激情在线观看 | 亚洲精品综合一区二区三区在线 | 中文字幕 亚洲精品 第1页 | 久久综合给久久狠狠97色 | 人妻无码久久精品人妻 | 中文字幕无码日韩欧毛 | 国产成人久久精品流白浆 | 色综合久久久无码中文字幕 | 亚洲阿v天堂在线 | 在教室伦流澡到高潮hnp视频 | 99re在线播放 | 无套内谢的新婚少妇国语播放 | 久久精品国产亚洲精品 | 欧美 日韩 人妻 高清 中文 | 呦交小u女精品视频 | 18禁黄网站男男禁片免费观看 | 日韩av无码中文无码电影 | 成熟妇人a片免费看网站 | 久久久精品成人免费观看 | 人妻少妇精品无码专区二区 | aa片在线观看视频在线播放 | 亚洲色欲色欲天天天www | 中文字幕av无码一区二区三区电影 | 亚洲毛片av日韩av无码 | 无码国产色欲xxxxx视频 | 88国产精品欧美一区二区三区 | 久久综合九色综合欧美狠狠 | 免费无码肉片在线观看 | 中文字幕乱码人妻无码久久 | 亚洲一区av无码专区在线观看 | 亚洲成在人网站无码天堂 | 久久亚洲a片com人成 | 国产精品嫩草久久久久 | 日本大乳高潮视频在线观看 | 正在播放老肥熟妇露脸 | 久久99精品久久久久婷婷 | 久久精品国产大片免费观看 | 亚洲伊人久久精品影院 | 国产99久久精品一区二区 | 人人爽人人爽人人片av亚洲 | 天天拍夜夜添久久精品 | 国产亚洲精品久久久久久久 | 婷婷五月综合缴情在线视频 | 一本久久伊人热热精品中文字幕 | 国产成人综合色在线观看网站 | 久久精品一区二区三区四区 | 丰满少妇熟乱xxxxx视频 | 国产综合久久久久鬼色 | 国产内射爽爽大片视频社区在线 | 欧美精品在线观看 | 亚洲成色在线综合网站 | 精品午夜福利在线观看 | 久久精品一区二区三区四区 | 亚洲综合另类小说色区 | www成人国产高清内射 | 伦伦影院午夜理论片 | 国产成人无码a区在线观看视频app | 亚洲日韩乱码中文无码蜜桃臀网站 | 强辱丰满人妻hd中文字幕 | 女人被男人爽到呻吟的视频 | 久精品国产欧美亚洲色aⅴ大片 | 国产精品久久久午夜夜伦鲁鲁 | 午夜精品久久久久久久 | 麻豆国产97在线 | 欧洲 | 国内精品人妻无码久久久影院蜜桃 | 国产网红无码精品视频 | 国产艳妇av在线观看果冻传媒 | 一本无码人妻在中文字幕免费 | 亚洲高清偷拍一区二区三区 | 亚洲欧美精品aaaaaa片 | 精品人妻人人做人人爽 | 日本护士xxxxhd少妇 | 久久伊人色av天堂九九小黄鸭 | 初尝人妻少妇中文字幕 | 在线精品国产一区二区三区 | 十八禁视频网站在线观看 | 天天做天天爱天天爽综合网 | 少妇一晚三次一区二区三区 | 无码帝国www无码专区色综合 | 精品国精品国产自在久国产87 | 女人高潮内射99精品 | 狠狠噜狠狠狠狠丁香五月 | 中文字幕无码人妻少妇免费 | 国产精品久久福利网站 | 97资源共享在线视频 | 亚洲综合精品香蕉久久网 | 老司机亚洲精品影院无码 | 亚洲成av人影院在线观看 | 久久久久国色av免费观看性色 | 国产精品亚洲专区无码不卡 | 亚洲 欧美 激情 小说 另类 | 性做久久久久久久久 | 日韩人妻无码中文字幕视频 | 国产精品99爱免费视频 | 欧美丰满熟妇xxxx | 天堂在线观看www | 久久99精品久久久久久 | 亚洲成av人影院在线观看 | 婷婷色婷婷开心五月四房播播 | 精品熟女少妇av免费观看 | 撕开奶罩揉吮奶头视频 | 精品无码一区二区三区爱欲 | 中文字幕无码视频专区 | 免费无码的av片在线观看 | www国产亚洲精品久久网站 | 天天av天天av天天透 | 久久久国产精品无码免费专区 | 夜夜影院未满十八勿进 | 最新国产乱人伦偷精品免费网站 | 国产suv精品一区二区五 | 久久综合网欧美色妞网 | 在线天堂新版最新版在线8 | 亚洲精品国偷拍自产在线观看蜜桃 | 少妇人妻大乳在线视频 | 久久久久99精品成人片 | 欧美自拍另类欧美综合图片区 | 女人和拘做爰正片视频 | 国产精品亚洲а∨无码播放麻豆 | 综合激情五月综合激情五月激情1 | 国产精品人人妻人人爽 | 一二三四在线观看免费视频 | 日韩精品乱码av一区二区 | 中文字幕日韩精品一区二区三区 | 欧美午夜特黄aaaaaa片 | 我要看www免费看插插视频 | 亚洲の无码国产の无码步美 | 国产精品久久久久无码av色戒 | 天干天干啦夜天干天2017 | 久久99热只有频精品8 | av无码不卡在线观看免费 | 中文字幕无码热在线视频 | 俄罗斯老熟妇色xxxx | 国产 精品 自在自线 | 在线a亚洲视频播放在线观看 | av人摸人人人澡人人超碰下载 | 国产精品久免费的黄网站 | 亚洲欧美日韩成人高清在线一区 | 67194成是人免费无码 | 日本在线高清不卡免费播放 | 亚洲欧美国产精品专区久久 | 久久人人爽人人人人片 | 一区二区三区乱码在线 | 欧洲 | 免费看少妇作爱视频 | 亚洲中文字幕乱码av波多ji | 国产成人无码av一区二区 | 国产精品二区一区二区aⅴ污介绍 | 欧美乱妇无乱码大黄a片 | 伊人久久大香线蕉亚洲 | 无码国产激情在线观看 | 久久精品丝袜高跟鞋 | 国产精品内射视频免费 | 国产乱码精品一品二品 | 18禁黄网站男男禁片免费观看 | 国产精品久久国产三级国 | 夜夜躁日日躁狠狠久久av | 人妻无码αv中文字幕久久琪琪布 | 99视频精品全部免费免费观看 | 成人亚洲精品久久久久软件 | 黑人粗大猛烈进出高潮视频 | 精品人妻中文字幕有码在线 | 亚洲中文字幕无码中文字在线 | 色情久久久av熟女人妻网站 | 最近免费中文字幕中文高清百度 | 少妇的肉体aa片免费 | 亚洲精品成a人在线观看 | 国产两女互慰高潮视频在线观看 | 国产精品第一国产精品 | 99久久婷婷国产综合精品青草免费 | 精品一区二区不卡无码av | 国产精品自产拍在线观看 | 国产特级毛片aaaaaa高潮流水 | 牲欲强的熟妇农村老妇女 | 少妇性l交大片 | 国产精品无码一区二区三区不卡 | 色欲综合久久中文字幕网 | 日本在线高清不卡免费播放 | 激情内射日本一区二区三区 | 性生交大片免费看女人按摩摩 | 少妇人妻大乳在线视频 | 真人与拘做受免费视频 | 日日碰狠狠躁久久躁蜜桃 | 欧美精品免费观看二区 | 妺妺窝人体色www在线小说 | 成年美女黄网站色大免费视频 | 高中生自慰www网站 | 中国女人内谢69xxxxxa片 | 无码人妻黑人中文字幕 | 日日摸夜夜摸狠狠摸婷婷 | 免费观看激色视频网站 | 国产凸凹视频一区二区 | 99久久精品国产一区二区蜜芽 | 欧美日韩精品 | 免费无码午夜福利片69 | 日韩精品乱码av一区二区 | 欧美怡红院免费全部视频 | 色综合久久网 | 红桃av一区二区三区在线无码av | 超碰97人人射妻 | 久久精品人人做人人综合试看 | 伊人久久婷婷五月综合97色 | 一二三四社区在线中文视频 | 欧美人与物videos另类 | 成人免费视频视频在线观看 免费 | 天堂久久天堂av色综合 | 正在播放东北夫妻内射 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 日本成熟视频免费视频 | 奇米影视888欧美在线观看 | 久久天天躁夜夜躁狠狠 | 四虎国产精品免费久久 | 欧美日韩在线亚洲综合国产人 | 99久久亚洲精品无码毛片 | 亚洲综合在线一区二区三区 | 中文字幕乱码人妻二区三区 | 天堂无码人妻精品一区二区三区 | 无码人妻久久一区二区三区不卡 | 久久久精品国产sm最大网站 | 亚洲成a人一区二区三区 | 国产 浪潮av性色四虎 | 精品偷拍一区二区三区在线看 | 性啪啪chinese东北女人 | 夜精品a片一区二区三区无码白浆 | 亚洲乱码中文字幕在线 | 国产性生交xxxxx无码 | 精品一区二区三区波多野结衣 | 极品尤物被啪到呻吟喷水 | 成熟人妻av无码专区 | 日本熟妇乱子伦xxxx | 综合人妻久久一区二区精品 | 亚洲精品一区三区三区在线观看 | 亚洲色在线无码国产精品不卡 | 熟妇人妻激情偷爽文 | 国产美女极度色诱视频www | 亚洲成av人片天堂网无码】 | 色婷婷av一区二区三区之红樱桃 | 国产麻豆精品精东影业av网站 | 国产午夜福利100集发布 | 国产精品手机免费 | 妺妺窝人体色www在线小说 | 无码国产激情在线观看 | 天堂一区人妻无码 | 四虎影视成人永久免费观看视频 | 中文字幕无码日韩欧毛 | 亚洲欧洲日本无在线码 | 无码福利日韩神码福利片 | 日本va欧美va欧美va精品 | 欧美性猛交内射兽交老熟妇 | 欧美老妇交乱视频在线观看 | 精品日本一区二区三区在线观看 | 中文无码成人免费视频在线观看 | 男人扒开女人内裤强吻桶进去 | 成人无码视频在线观看网站 | 国产精品igao视频网 | 国产精品亚洲五月天高清 | 色欲人妻aaaaaaa无码 | 任你躁国产自任一区二区三区 | 亚洲中文字幕无码中字 | 欧美人与禽zoz0性伦交 | 精品国产福利一区二区 | 成人亚洲精品久久久久 | 未满小14洗澡无码视频网站 | 无码毛片视频一区二区本码 | 最近中文2019字幕第二页 | 一本久道高清无码视频 | 国产成人无码专区 | 日韩av激情在线观看 | 久久无码专区国产精品s | 久久99国产综合精品 | 国产两女互慰高潮视频在线观看 | 国产精品办公室沙发 | 国产精品久久精品三级 | 久久精品成人欧美大片 | 人人妻在人人 | 九九在线中文字幕无码 | 亚洲精品国产a久久久久久 | 国产人妻精品一区二区三区不卡 | 成人三级无码视频在线观看 | 午夜精品久久久久久久 | 欧美日韩久久久精品a片 | 国内揄拍国内精品少妇国语 | 国产精品美女久久久网av | 亚洲 a v无 码免 费 成 人 a v | 国产农村乱对白刺激视频 | 欧美三级a做爰在线观看 | www一区二区www免费 | 亚洲国产欧美国产综合一区 | 欧美成人午夜精品久久久 | 窝窝午夜理论片影院 | 国产精品无码久久av | 国产亚洲精品久久久久久 | 精品一区二区不卡无码av | 国产午夜亚洲精品不卡 | 美女毛片一区二区三区四区 | 欧美性生交xxxxx久久久 | 精品亚洲成av人在线观看 | 亚洲精品www久久久 | 人妻夜夜爽天天爽三区 | 精品国精品国产自在久国产87 | 成人欧美一区二区三区黑人免费 | 久久天天躁夜夜躁狠狠 | 麻豆精品国产精华精华液好用吗 | 成熟妇人a片免费看网站 | 在线亚洲高清揄拍自拍一品区 | 日韩av无码一区二区三区不卡 | 免费国产成人高清在线观看网站 | 亚洲精品一区二区三区大桥未久 | 国产在线精品一区二区高清不卡 | 香蕉久久久久久av成人 | 国产福利视频一区二区 | 国产精品美女久久久网av | 性欧美videos高清精品 | 午夜性刺激在线视频免费 | 久久久久久av无码免费看大片 | 97精品国产97久久久久久免费 | 国产亚洲精品久久久久久久 | 亚洲精品一区二区三区婷婷月 | 国产精华av午夜在线观看 | 18无码粉嫩小泬无套在线观看 | 欧美丰满少妇xxxx性 | 成人精品视频一区二区 | 亚洲呦女专区 | 中文字幕乱码中文乱码51精品 | 久久久www成人免费毛片 | 美女张开腿让人桶 | 国产深夜福利视频在线 | 国产色在线 | 国产 | 天堂亚洲免费视频 | 久久精品视频在线看15 | 欧美人与牲动交xxxx | 天天拍夜夜添久久精品 | 蜜桃无码一区二区三区 | 在线成人www免费观看视频 | 国精品人妻无码一区二区三区蜜柚 | 无码人妻久久一区二区三区不卡 | 成人欧美一区二区三区黑人免费 | 亚洲一区二区三区含羞草 | 久久99精品国产.久久久久 | 狠狠噜狠狠狠狠丁香五月 | 亚洲成av人综合在线观看 | 国产无套粉嫩白浆在线 | 国模大胆一区二区三区 | 国产网红无码精品视频 | 天堂在线观看www | 熟妇人妻中文av无码 | 欧美三级a做爰在线观看 | 欧美国产日产一区二区 | 国内精品一区二区三区不卡 | 99久久亚洲精品无码毛片 | 午夜丰满少妇性开放视频 | 国产麻豆精品一区二区三区v视界 | 好男人社区资源 | 久久国产劲爆∧v内射 | 日日躁夜夜躁狠狠躁 | 无码人中文字幕 | 成人无码视频免费播放 | 久久久中文久久久无码 | 国产精品人人妻人人爽 | 黑人大群体交免费视频 | 国产精品.xx视频.xxtv | 最新版天堂资源中文官网 | 又大又硬又爽免费视频 | 俄罗斯老熟妇色xxxx | 国产超碰人人爽人人做人人添 | 日本大乳高潮视频在线观看 | 中文字幕无码免费久久9一区9 | 国产成人无码午夜视频在线观看 | 国语自产偷拍精品视频偷 | 国产精品人人爽人人做我的可爱 | 伊人久久大香线焦av综合影院 | 少妇愉情理伦片bd | 日本熟妇大屁股人妻 | 成人动漫在线观看 | 亚无码乱人伦一区二区 | 久久国语露脸国产精品电影 | 亚洲成a人片在线观看日本 | 99久久亚洲精品无码毛片 | 国内精品久久毛片一区二区 | 国产精品无套呻吟在线 | 亚无码乱人伦一区二区 | 一本色道婷婷久久欧美 | 色五月丁香五月综合五月 | 国产又爽又黄又刺激的视频 | 亚洲色www成人永久网址 | 免费视频欧美无人区码 | 亚洲一区av无码专区在线观看 | 一二三四在线观看免费视频 | 国产无遮挡又黄又爽又色 | 亚洲国产精品无码久久久久高潮 | 爆乳一区二区三区无码 | 一个人免费观看的www视频 | 永久免费观看国产裸体美女 | 亚洲啪av永久无码精品放毛片 | 俺去俺来也在线www色官网 | 国产女主播喷水视频在线观看 | 亚洲aⅴ无码成人网站国产app | 国产无遮挡又黄又爽免费视频 | 久久亚洲日韩精品一区二区三区 | 色综合久久久久综合一本到桃花网 | 欧美高清在线精品一区 | 日日摸天天摸爽爽狠狠97 | 日韩精品无码一区二区中文字幕 | 玩弄少妇高潮ⅹxxxyw | 国产精品亚洲一区二区三区喷水 | 成在人线av无码免观看麻豆 | 亚洲成av人综合在线观看 | 亚洲精品久久久久中文第一幕 | 国产偷抇久久精品a片69 | 无码午夜成人1000部免费视频 | 欧美精品国产综合久久 | 日本一区二区三区免费播放 | 亚洲无人区午夜福利码高清完整版 | 少妇人妻大乳在线视频 | 亚洲中文字幕久久无码 | 奇米影视7777久久精品人人爽 | 综合人妻久久一区二区精品 | 久久亚洲a片com人成 | 人人妻在人人 | 亚洲一区二区三区国产精华液 | 无码人妻久久一区二区三区不卡 | 国产精品99爱免费视频 | 又粗又大又硬又长又爽 | 亚洲一区二区三区偷拍女厕 | 成人精品视频一区二区 | 免费视频欧美无人区码 | 久久久久99精品国产片 | 欧美阿v高清资源不卡在线播放 | 色诱久久久久综合网ywww | 欧美日韩综合一区二区三区 | 国产av久久久久精东av | 色一情一乱一伦一区二区三欧美 | 国产超级va在线观看视频 | 国产精品毛片一区二区 | √8天堂资源地址中文在线 | 在线精品亚洲一区二区 | 日韩少妇白浆无码系列 | 国产凸凹视频一区二区 | 国产 精品 自在自线 | 亚洲国产精品一区二区美利坚 | 无遮挡国产高潮视频免费观看 | 国产精品人妻一区二区三区四 | 亚洲日韩精品欧美一区二区 | 欧美刺激性大交 | 对白脏话肉麻粗话av | 色情久久久av熟女人妻网站 | 国产精品久久久 | 呦交小u女精品视频 | 熟妇人妻无乱码中文字幕 | 中文字幕精品av一区二区五区 | 波多野结衣 黑人 | av人摸人人人澡人人超碰下载 | 国产成人午夜福利在线播放 | 亚洲综合另类小说色区 | 色欲av亚洲一区无码少妇 | 国精产品一品二品国精品69xx | 久久久久国色av免费观看性色 | 色婷婷综合中文久久一本 | 国产成人无码午夜视频在线观看 | 久久久久免费精品国产 | 自拍偷自拍亚洲精品被多人伦好爽 | 300部国产真实乱 | 精品乱码久久久久久久 | 久久精品99久久香蕉国产色戒 | 丰满妇女强制高潮18xxxx | 人人爽人人爽人人片av亚洲 | 国产精品国产三级国产专播 | 夜夜夜高潮夜夜爽夜夜爰爰 | 人人妻人人澡人人爽欧美一区 | 亚洲娇小与黑人巨大交 | 水蜜桃av无码 | 中文字幕无码av激情不卡 | 色欲av亚洲一区无码少妇 | 免费无码午夜福利片69 | 夜精品a片一区二区三区无码白浆 | 亚洲精品鲁一鲁一区二区三区 | 成熟女人特级毛片www免费 | 97夜夜澡人人双人人人喊 | 亚洲国产精品成人久久蜜臀 | 欧美第一黄网免费网站 | 日本爽爽爽爽爽爽在线观看免 | 天天爽夜夜爽夜夜爽 | 国色天香社区在线视频 | 亚洲中文字幕成人无码 | 成人精品天堂一区二区三区 | 亚洲精品国产a久久久久久 | 国产成人综合美国十次 | 无码一区二区三区在线 | 精品久久久无码人妻字幂 | 亚洲中文字幕乱码av波多ji | 亚洲日韩中文字幕在线播放 | 精品无人区无码乱码毛片国产 | 精品无人国产偷自产在线 | 国产精品久久久久久亚洲毛片 | 天堂久久天堂av色综合 | 性做久久久久久久久 | 日本熟妇人妻xxxxx人hd | 国产精品无码一区二区桃花视频 | 亚洲熟妇自偷自拍另类 | 国产麻豆精品一区二区三区v视界 | 色妞www精品免费视频 | 色老头在线一区二区三区 | 未满小14洗澡无码视频网站 | 免费无码午夜福利片69 | 99久久婷婷国产综合精品青草免费 | 熟妇人妻无码xxx视频 | 在线a亚洲视频播放在线观看 | 性生交大片免费看女人按摩摩 | 国产成人精品一区二区在线小狼 | 亚洲精品www久久久 | 国产午夜手机精彩视频 | 国产亚洲精品久久久久久国模美 | 日本xxxx色视频在线观看免费 | 国产精品18久久久久久麻辣 | 欧美人与禽zoz0性伦交 | 狠狠色噜噜狠狠狠狠7777米奇 | 无码帝国www无码专区色综合 | 中文字幕无码免费久久99 | 天堂亚洲免费视频 | 欧美野外疯狂做受xxxx高潮 | 少妇高潮喷潮久久久影院 | www国产亚洲精品久久久日本 | 中文字幕无码日韩欧毛 | 天天爽夜夜爽夜夜爽 | 国产成人无码av在线影院 | 亚洲 日韩 欧美 成人 在线观看 | 国产亚洲人成a在线v网站 | 精品偷自拍另类在线观看 | 国产精品美女久久久 | 国产97色在线 | 免 | 激情内射亚州一区二区三区爱妻 | 日韩亚洲欧美中文高清在线 | 纯爱无遮挡h肉动漫在线播放 | 美女黄网站人色视频免费国产 | 日本饥渴人妻欲求不满 | 国产精品怡红院永久免费 | 好爽又高潮了毛片免费下载 | 精品少妇爆乳无码av无码专区 | 亚洲精品成a人在线观看 | 无码国模国产在线观看 | www国产亚洲精品久久久日本 | 我要看www免费看插插视频 | 狠狠噜狠狠狠狠丁香五月 | 亚洲精品欧美二区三区中文字幕 | 精品午夜福利在线观看 | 国精品人妻无码一区二区三区蜜柚 | 国产特级毛片aaaaaaa高清 | 中文字幕+乱码+中文字幕一区 | 丰满少妇人妻久久久久久 | 久久99精品国产麻豆 | 搡女人真爽免费视频大全 | 初尝人妻少妇中文字幕 | 狠狠色噜噜狠狠狠7777奇米 | 一本久道久久综合狠狠爱 | 人人妻人人澡人人爽欧美一区 | www国产精品内射老师 | 日韩精品久久久肉伦网站 | 亚洲日韩乱码中文无码蜜桃臀网站 | 天干天干啦夜天干天2017 | 欧美freesex黑人又粗又大 | 天堂亚洲2017在线观看 | 国产av剧情md精品麻豆 | 在线观看国产一区二区三区 | 国产情侣作爱视频免费观看 | 久久国产精品精品国产色婷婷 | 国产人妻人伦精品1国产丝袜 | 免费无码av一区二区 | 成熟女人特级毛片www免费 | 国产莉萝无码av在线播放 | 欧美精品无码一区二区三区 | 亚洲成熟女人毛毛耸耸多 | 无码国模国产在线观看 | 国产精品18久久久久久麻辣 | 精品夜夜澡人妻无码av蜜桃 | 2019nv天堂香蕉在线观看 | 熟女体下毛毛黑森林 | 1000部啪啪未满十八勿入下载 | 亚洲а∨天堂久久精品2021 | 四虎影视成人永久免费观看视频 | 久久国产精品_国产精品 | 国产精品亚洲综合色区韩国 | 宝宝好涨水快流出来免费视频 | 国产成人综合美国十次 | 亚洲色www成人永久网址 | 国产高清av在线播放 | 中文字幕日韩精品一区二区三区 | 亚洲第一无码av无码专区 | 最新国产乱人伦偷精品免费网站 | 粗大的内捧猛烈进出视频 | 一本久久a久久精品亚洲 | 青青久在线视频免费观看 | 欧美国产亚洲日韩在线二区 | 成人综合网亚洲伊人 | 精品久久久无码人妻字幂 | 精品无码成人片一区二区98 | 无码人妻精品一区二区三区下载 | 欧美人与物videos另类 | 久久99热只有频精品8 | 日本护士毛茸茸高潮 | 精品aⅴ一区二区三区 | 人人超人人超碰超国产 | 曰韩无码二三区中文字幕 | 国产精品高潮呻吟av久久 | 东京无码熟妇人妻av在线网址 | 蜜桃臀无码内射一区二区三区 | 精品国偷自产在线 | 一本无码人妻在中文字幕免费 | 日韩成人一区二区三区在线观看 | 无码一区二区三区在线 | 中文无码精品a∨在线观看不卡 | 日产国产精品亚洲系列 | 国产无遮挡吃胸膜奶免费看 | 精品国产一区二区三区四区 | 日韩欧美中文字幕公布 | 久久精品无码一区二区三区 | 暴力强奷在线播放无码 | 国产乱码精品一品二品 | 亲嘴扒胸摸屁股激烈网站 | 国产精品无码一区二区桃花视频 | 成人亚洲精品久久久久 | 日日鲁鲁鲁夜夜爽爽狠狠 | 激情亚洲一区国产精品 | 久久精品99久久香蕉国产色戒 | 亚洲色大成网站www | 日韩无码专区 | 日本一卡二卡不卡视频查询 | 天海翼激烈高潮到腰振不止 | 国内揄拍国内精品少妇国语 | 欧美性黑人极品hd | 欧美性黑人极品hd | 人人妻在人人 | 午夜理论片yy44880影院 | 成人一区二区免费视频 | 亚洲精品美女久久久久久久 | 亚洲中文字幕在线观看 | 搡女人真爽免费视频大全 | 久久国产精品精品国产色婷婷 | 国产精品多人p群无码 | 亚洲精品午夜国产va久久成人 | 131美女爱做视频 | 欧美人与禽猛交狂配 | 亚洲乱码国产乱码精品精 | 蜜桃视频韩日免费播放 | 精品欧美一区二区三区久久久 | 久久精品无码一区二区三区 | 亚洲精品一区二区三区四区五区 | 精品国产一区二区三区av 性色 | 任你躁国产自任一区二区三区 | 日欧一片内射va在线影院 | 伊人久久大香线蕉av一区二区 | 亚洲精品无码人妻无码 | 狠狠色噜噜狠狠狠7777奇米 | 欧美人与牲动交xxxx | 人妻少妇精品无码专区二区 | 国産精品久久久久久久 | 国产9 9在线 | 中文 | 99久久婷婷国产综合精品青草免费 | 国产在线无码精品电影网 | 人人妻人人澡人人爽精品欧美 | 欧美一区二区三区 | 双乳奶水饱满少妇呻吟 | 18精品久久久无码午夜福利 | 亚洲爆乳精品无码一区二区三区 | 国产超碰人人爽人人做人人添 | 人妻人人添人妻人人爱 | 曰韩少妇内射免费播放 | 国产凸凹视频一区二区 | 学生妹亚洲一区二区 | 熟女俱乐部五十路六十路av | 中文字幕无码av波多野吉衣 | 国内精品一区二区三区不卡 | 成人精品一区二区三区中文字幕 | 伊人久久大香线蕉亚洲 | 午夜成人1000部免费视频 | 亚洲精品午夜无码电影网 | 久久午夜无码鲁丝片午夜精品 | 欧美日韩一区二区免费视频 | 又黄又爽又色的视频 | 女人色极品影院 | 扒开双腿疯狂进出爽爽爽视频 | 在线精品亚洲一区二区 | 丰满少妇弄高潮了www | www国产亚洲精品久久久日本 | 日本护士xxxxhd少妇 | 久久这里只有精品视频9 | 青青青爽视频在线观看 | 国内精品九九久久久精品 | 国产在线精品一区二区三区直播 | 黑人粗大猛烈进出高潮视频 | 老子影院午夜伦不卡 | 亚洲国产精品毛片av不卡在线 | 日本精品高清一区二区 | 99久久婷婷国产综合精品青草免费 | 久久综合给合久久狠狠狠97色 | 野外少妇愉情中文字幕 | 欧美老妇与禽交 | 黑人巨大精品欧美黑寡妇 | 亚洲人成人无码网www国产 | 亚洲国产av精品一区二区蜜芽 | 欧美精品在线观看 | 两性色午夜视频免费播放 | 日本爽爽爽爽爽爽在线观看免 | 精品人妻人人做人人爽夜夜爽 | 欧美人与善在线com | 免费观看又污又黄的网站 | 男女猛烈xx00免费视频试看 | 午夜精品一区二区三区的区别 | 国产人妖乱国产精品人妖 | 国产超碰人人爽人人做人人添 | 精品乱子伦一区二区三区 | 国产精品无码久久av | 无码人妻黑人中文字幕 | 青草视频在线播放 | 午夜精品一区二区三区的区别 | 97se亚洲精品一区 | 亚洲一区二区三区偷拍女厕 | 国产婷婷色一区二区三区在线 | 人妻少妇精品无码专区二区 | 欧美xxxx黑人又粗又长 | 特大黑人娇小亚洲女 | 国产人妻精品午夜福利免费 | 日本精品少妇一区二区三区 | 人人妻人人澡人人爽欧美一区九九 | 久久99精品久久久久久动态图 | 日韩在线不卡免费视频一区 | 亚洲中文字幕成人无码 | 国产亚洲tv在线观看 | 欧美色就是色 | 成人精品天堂一区二区三区 | 无码人妻精品一区二区三区不卡 | 免费播放一区二区三区 | 中文字幕+乱码+中文字幕一区 | 伊人久久大香线蕉av一区二区 | 午夜精品一区二区三区的区别 | 亚洲区欧美区综合区自拍区 | 国产一精品一av一免费 | 久久99精品国产麻豆蜜芽 | 亚洲国产高清在线观看视频 | 国产亚洲视频中文字幕97精品 | 18无码粉嫩小泬无套在线观看 | 色狠狠av一区二区三区 | 久久人人爽人人爽人人片av高清 | 亚洲熟妇色xxxxx亚洲 | 国产小呦泬泬99精品 | 色一情一乱一伦 | 国产乱子伦视频在线播放 | 国产精品香蕉在线观看 | 强伦人妻一区二区三区视频18 | 麻花豆传媒剧国产免费mv在线 | 国产真实伦对白全集 | 亚洲午夜久久久影院 | 狠狠色噜噜狠狠狠狠7777米奇 | 免费观看黄网站 | 人妻aⅴ无码一区二区三区 | 国产一区二区三区日韩精品 | 成人无码精品一区二区三区 | 一本色道久久综合亚洲精品不卡 | 日日碰狠狠躁久久躁蜜桃 | 亚洲综合无码一区二区三区 | 欧美日本日韩 | 曰韩少妇内射免费播放 | 久久综合九色综合欧美狠狠 | av小次郎收藏 | 性欧美videos高清精品 | 亚洲国产一区二区三区在线观看 | 国产区女主播在线观看 | 国产精品久久久久久无码 | 国内精品久久毛片一区二区 | 又色又爽又黄的美女裸体网站 | 日本va欧美va欧美va精品 | 亚洲午夜福利在线观看 | 无码人妻丰满熟妇区毛片18 | 精品国产一区二区三区四区 | 亚洲色无码一区二区三区 | 国产亚洲美女精品久久久2020 | 国产人妻精品午夜福利免费 | 一个人看的www免费视频在线观看 | 无码任你躁久久久久久久 | 无码国产激情在线观看 | 青青草原综合久久大伊人精品 | 国产亚洲欧美在线专区 | 久久综合给合久久狠狠狠97色 | 欧美国产日韩亚洲中文 | 亚洲一区二区三区四区 | 人妻体内射精一区二区三四 | 日韩亚洲欧美中文高清在线 | 少妇无码av无码专区在线观看 | 亚洲一区二区三区国产精华液 | 精品国产乱码久久久久乱码 | 久久综合色之久久综合 | 成人无码精品一区二区三区 | 中文字幕无码日韩欧毛 | 国产偷抇久久精品a片69 | 亚洲精品国偷拍自产在线麻豆 | 久久国内精品自在自线 | 久久精品女人的天堂av | 少妇邻居内射在线 | 亚洲无人区一区二区三区 | 99久久人妻精品免费一区 | 在线 国产 欧美 亚洲 天堂 | 免费视频欧美无人区码 | 欧美精品国产综合久久 | 中文字幕日产无线码一区 | 内射欧美老妇wbb | www国产亚洲精品久久久日本 | 亚洲国产av精品一区二区蜜芽 | 亚洲精品一区二区三区婷婷月 | 无码帝国www无码专区色综合 | 国产av剧情md精品麻豆 | 国内精品久久毛片一区二区 | 亚洲人交乣女bbw | 亚洲成av人综合在线观看 | 久久无码专区国产精品s | 国产后入清纯学生妹 | 久久熟妇人妻午夜寂寞影院 | 狂野欧美性猛交免费视频 | 高清国产亚洲精品自在久久 | 美女黄网站人色视频免费国产 | 欧美国产日产一区二区 | 国产综合久久久久鬼色 | 中文字幕+乱码+中文字幕一区 | 国产特级毛片aaaaaaa高清 | 丰满护士巨好爽好大乳 | 欧美喷潮久久久xxxxx | 国产亚洲人成a在线v网站 | 久久久精品欧美一区二区免费 | 丰满少妇高潮惨叫视频 | 精品一二三区久久aaa片 | 欧美freesex黑人又粗又大 | 一个人免费观看的www视频 | 国产网红无码精品视频 | 女人和拘做爰正片视频 | 国产美女极度色诱视频www | 国产一区二区三区精品视频 | 国产又爽又猛又粗的视频a片 | 日本肉体xxxx裸交 | 高清不卡一区二区三区 | 色婷婷av一区二区三区之红樱桃 | 蜜桃视频插满18在线观看 | 人妻插b视频一区二区三区 | 国产精品办公室沙发 | 亚洲一区二区观看播放 | 亚洲精品综合五月久久小说 | 久久伊人色av天堂九九小黄鸭 | 牛和人交xxxx欧美 | 久久午夜无码鲁丝片秋霞 | 人妻插b视频一区二区三区 | 国产精品人人爽人人做我的可爱 | 国产午夜福利100集发布 | 国产偷抇久久精品a片69 | 青青草原综合久久大伊人精品 | 亚洲综合在线一区二区三区 | 中文字幕乱码中文乱码51精品 | 久久www免费人成人片 | 久久久久久a亚洲欧洲av冫 | 国产亚av手机在线观看 | 丝袜人妻一区二区三区 | 大乳丰满人妻中文字幕日本 | 成人无码精品一区二区三区 | 最近中文2019字幕第二页 | 天海翼激烈高潮到腰振不止 | 国产精品理论片在线观看 | 久久综合激激的五月天 | 成人女人看片免费视频放人 | 精品亚洲成av人在线观看 | 日韩在线不卡免费视频一区 | 无码播放一区二区三区 | 成人av无码一区二区三区 | 18禁黄网站男男禁片免费观看 | 亚洲一区二区三区 | 四虎永久在线精品免费网址 | 国产精品亚洲lv粉色 |