您的位置:  首頁 > 技術 > 前端 > 正文

安卓開發整理

2022-08-25 17:00 https://my.oschina.net/u/3768341/blog/5569275 算法之名 次閱讀 條評論

先來一個HelloWorld.

XML布局文件

<?xml?version="1.0"?encoding="utf-8"?><!--線性布局--><LinearLayout????xmlns:android="http://schemas.android.com/apk/res/android"????android:layout_width="match_parent"????android:layout_height="match_parent"????android:orientation="vertical"????android:gravity="center">????<TextView????????android:id="@+id/tv"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="Hello?World"?/>????</LinearLayout>

事件響應代碼為將英文修改成中文。

public?class?MainActivity?extends?AppCompatActivity?{????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);//????????設置屏幕組件需要用的布局????????setContentView(R.layout.activity_main);????????TextView?tv?=?findViewById(R.id.tv);//????????修改文本控件的文字????????tv.setText("你好,世界");????}

}

最后在手機上顯示的畫面如下

創建第二個頁面

在res/layout文件夾下面新建一個xml文件

在res/values的strings.xml文件中添加內容

<resources>????<string?name="app_name">OCR</string>????<string?name="text2">Activity?Main2</string></resources>

activity_main2.xml的布局內容如下

<?xml?version="1.0"?encoding="utf-8"?><LinearLayout????xmlns:android="http://schemas.android.com/apk/res/android"????android:layout_width="match_parent"????android:layout_height="match_parent"????android:orientation="vertical"????android:gravity="center">????<TextView????????android:id="@+id/tv2"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="@string/text2"?/></LinearLayout>

在清單文件AndroidManifest.xml文件中添加activity_main2的配置。

<?xml?version="1.0"?encoding="utf-8"?><manifest?xmlns:android="http://schemas.android.com/apk/res/android"????package="com.guanjian.ocr">????<application????????android:allowBackup="true"????????android:icon="@mipmap/ic_launcher"????????android:label="@string/app_name"????????android:roundIcon="@mipmap/ic_launcher_round"????????android:supportsRtl="true"????????android:theme="@style/Theme.OCR">????????<activity????????????android:name=".MainActivity"????????????android:exported="true"????????????android:label="@string/app_name">????????????<intent-filter>????????????????<action?android:name="android.intent.action.MAIN"?/>????????????????<category?android:name="android.intent.category.LAUNCHER"?/>????????????</intent-filter>????????</activity>????????<activity?android:name=".MainActivity2"?/>????</application></manifest>

在Activity1中添加一個按鈕來跳轉到Activity2。

<?xml?version="1.0"?encoding="utf-8"?><!--線性布局--><LinearLayout????xmlns:android="http://schemas.android.com/apk/res/android"????android:layout_width="match_parent"????android:layout_height="match_parent"????android:orientation="vertical"????android:gravity="center">????<TextView????????android:id="@+id/tv"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="Hello?World"?/>????<Button????????android:id="@+id/button"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="跳轉"?/></LinearLayout>

修改MainActivity的Java代碼

public?class?MainActivity?extends?AppCompatActivity?{????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);//????????設置屏幕組件需要用的布局????????setContentView(R.layout.activity_main);????????TextView?tv?=?findViewById(R.id.tv);//????????修改文本控件的文字????????tv.setText("你好,世界");????????Button?button?=?findViewById(R.id.button);//????????給button設定點擊事件的偵聽????????button.setOnClickListener(new?View.OnClickListener()?{????????????@Override????????????public?void?onClick(View?view)?{//????????????????創建一個意圖對象????????????????Intent?intent?=?new?Intent();????????????????intent.setClass(MainActivity.this,MainActivity2.class);//????????????????實現跳轉????????????????startActivity(intent);????????????}
????????});????}

}

在Java主目錄中創建MainActivity2的響應類。

public?class?MainActivity2?extends?AppCompatActivity?{????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);????????setContentView(R.layout.activity_main2);????}
}

在手機上的運行效果如下

Activity生命周期

上圖的說明可以見以下代碼

public?class?MainActivity?extends?AppCompatActivity?{????private?static?final?String?TAG?=?"ning";????/**?????*?在頁面載入的時候最先觸發?????*?@param?savedInstanceState?????*/????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);????????Log.d(TAG,"Activity?onCreate");//????????設置屏幕組件需要用的布局????????setContentView(R.layout.activity_main);????????TextView?tv?=?findViewById(R.id.tv);//????????修改文本控件的文字????????tv.setText("你好,世界");????????Button?button?=?findViewById(R.id.button);//????????給button設定點擊事件的偵聽????????button.setOnClickListener(new?View.OnClickListener()?{????????????@Override????????????public?void?onClick(View?view)?{//????????????????創建一個意圖對象????????????????Intent?intent?=?new?Intent();????????????????intent.setClass(MainActivity.this,MainActivity2.class);//????????????????實現跳轉????????????????startActivity(intent);????????????}
????????});????}????/**?????*?在頁面載入的時候第二個觸發?????*/????@Override????protected?void?onStart()?{????????super.onStart();????????Log.d(TAG,"Activity?onStart");????}????/**?????*?在頁面載入的時候第三個觸發,結束時頁面可見?????*/????@Override????protected?void?onResume()?{????????super.onResume();????????Log.d(TAG,"Activity?onResume");????}????/**?????*?在頁面跳轉離開的時候觸發?????*/????@Override????protected?void?onPause()?{????????super.onPause();????????Log.d(TAG,"Activity?onPause");????}????/**?????*?在頁面完全消失的時候觸發?????*/????@Override????protected?void?onStop()?{????????super.onStop();????????Log.d(TAG,"Activity?onStop");????}????/**?????*?從其他頁面返回該頁面時首次執行?????*?然后執行onStart和onResume?????*/????@Override????protected?void?onRestart()?{????????super.onRestart();????????Log.d(TAG,"Activity?onRestart");????}????/**?????*?從主界面返回安卓桌面的時候觸發?????*/????@Override????protected?void?onDestroy()?{????????super.onDestroy();????????Log.d(TAG,"Activity?onDestroy");????}
}

當我們打開安卓app的時候會顯示日志

D/ning:?Activity?onCreate
D/ning:?Activity?onStart
D/ning:?Activity?onResume

當我們點擊跳轉按鈕會顯示日志

D/ning:?Activity?onPause
D/ning:?Activity?onStop

當我們從跳轉頁面返回主界面時會顯示日志

D/ning:?Activity?onRestart
D/ning:?Activity?onStart
D/ning:?Activity?onResume

當我們從主界面返回安卓桌面時會顯示日志

D/ning:?Activity?onPause
D/ning:?Activity?onStop
D/ning:?Activity?onDestroy

當我們點擊了跳轉按鈕立刻返回主界面時會顯示日志

D/ning:?Activity?onPause
D/ning:?Activity?onResume

這里有一個值得說明的地方,當App隱藏于后臺的時候,我們啟動了非常占用內存的App,比如游戲,此時安卓系統會將該進程殺死釋放內存給游戲使用。當我們再次進入該App的時候會顯示D/ning: Activity onCreate而不是D/ning: Activity onRestart。這幾個觸發動作的具體應用如下

  1. onCreate:創建活動,把頁面布局加載進內存,進入初始狀態。
  2. onStart:開始活動,把活動頁面顯示在屏幕上,進入了就緒狀態。
  3. onResume:恢復活動,活動頁面進入活躍狀態,能夠與用戶正常交互,例如允許響應用戶的點擊動作;允許用戶輸入文字等等。
  4. onPause:暫?;顒?#xff0c;頁面進入暫停狀態,無法與用戶進行正常交互。
  5. onStop:停止活動,頁面將不在屏幕上顯示。
  6. onDestroy:銷毀活動,回收活動占用的系統資源,把頁面從內存中清除。
  7. onRestart:重啟活動,重新加載內存中的頁面數據。
  8. onNewIntent:重用已有的活動實例。

Intent

Intent是各個組件之間信息溝通的橋梁,它用于Android各組件之間的通信,主要完成下列工作:

  1. 標明本次通信請求從哪里來,到哪里去,要怎么走。
  2. 發起方攜帶本次通信需要的數據內容,接收方從收到的意圖中解析數據。
  3. 發起方若想判斷接收方的處理結果,意圖就要負責接收方傳回應答的數據內容。
  • 顯式Intent:直接指定來源活動與目標活動,屬于精確匹配。它有3種構建方式
  1. 在Intent的構造函數中指定。
  2. 調用意圖對象的setClass方法指定。
  3. 調用意圖對象的setComponent方法指定。
????????????@Override????????????public?void?onClick(View?view)?{//????????????????創建一個意圖對象,第一種方式//????????????????Intent?intent?=?new?Intent(MainActivity.this,MainActivity2.class);//????????????????第二種方式????????????????Intent?intent?=?new?Intent();????????????????intent.setClass(MainActivity.this,MainActivity2.class);//????????????????第三種方式//????????????????Intent?intent?=?new?Intent();//????????????????它可以調用第三方的控件,使用包名(字符串)和類名(字符串)來調用//????????????????ComponentName?component?=?new?ComponentName(MainActivity.this,MainActivity2.class);//????????????????intent.setComponent(component);//????????????????實現跳轉????????????????startActivity(intent);????????????}

  • 隱式Intent:沒有明確指定要跳轉的目標活動,只給出一個動作字符串讓系統自動匹配,屬于模糊匹配。

現在我們在Activity2的頁面中添加如下的布局

<?xml?version="1.0"?encoding="utf-8"?><LinearLayout????xmlns:android="http://schemas.android.com/apk/res/android"????android:layout_width="match_parent"????android:layout_height="match_parent"????android:orientation="vertical"????android:gravity="center">????<TextView????????android:id="@+id/tv2"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="@string/text2"?/>????<TextView????????android:id="@+id/tv3"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:padding="5dp"????????android:text="點擊以下按鈕將向號碼12345發起請求"?/>????<Button????????android:id="@+id/btn_dial"????????android:layout_width="match_parent"????????android:layout_height="wrap_content"????????android:text="跳到撥號頁面"?/></LinearLayout>

在Activity2的Java代碼中添加

public?class?MainActivity2?extends?AppCompatActivity?implements?View.OnClickListener?{????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);????????setContentView(R.layout.activity_main2);????????findViewById(R.id.btn_dial).setOnClickListener(this);????}????@Override????public?void?onClick(View?view)?{????????switch?(view.getId())?{????????????case?R.id.btn_dial:
????????????????Intent?intent?=?new?Intent();//????????????????隱式跳轉到撥號界面????????????????intent.setAction(Intent.ACTION_DIAL);????????????????Uri?uri?=?Uri.parse("tel:12345");????????????????intent.setData(uri);????????????????startActivity(intent);????????????????break;????????????default:????????????????break;????????}
????}
}

運行結果

  • 向下一個Activity傳遞數據

我們在Activity的主界面的布局文件中添加如下代碼

<?xml?version="1.0"?encoding="utf-8"?><!--線性布局--><LinearLayout????xmlns:android="http://schemas.android.com/apk/res/android"????android:layout_width="match_parent"????android:layout_height="match_parent"????android:orientation="vertical"????android:gravity="center">????<TextView????????android:id="@+id/tv"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="Hello?World"?/>????<Button????????android:id="@+id/button"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="跳轉"?/>????<TextView????????android:id="@+id/tv_send"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="今天天氣很晴朗"?/>????<Button????????android:id="@+id/button_send"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="發送信息"?/></LinearLayout>

在Activity的Java代碼中添加

public?class?MainActivity?extends?AppCompatActivity?{????private?static?final?String?TAG?=?"ning";????private?TextView?tvSend;????/**?????*?在頁面載入的時候最先觸發?????*?@param?savedInstanceState?????*/????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);????????Log.d(TAG,"Activity?onCreate");//????????設置屏幕組件需要用的布局????????setContentView(R.layout.activity_main);????????TextView?tv?=?findViewById(R.id.tv);//????????修改文本控件的文字????????tv.setText("你好,世界");????????Button?button?=?findViewById(R.id.button);//????????給button設定點擊事件的偵聽????????button.setOnClickListener(new?View.OnClickListener()?{????????????@Override????????????public?void?onClick(View?view)?{//????????????????創建一個意圖對象,第一種方式//????????????????Intent?intent?=?new?Intent(MainActivity.this,MainActivity2.class);//????????????????第二種方式????????????????Intent?intent?=?new?Intent();????????????????intent.setClass(MainActivity.this,MainActivity2.class);//????????????????第三種方式//????????????????Intent?intent?=?new?Intent();//????????????????它可以調用第三方的控件,使用包名(字符串)和類名(字符串)來調用//????????????????ComponentName?component?=?new?ComponentName(MainActivity.this,MainActivity2.class);//????????????????intent.setComponent(component);//????????????????實現跳轉????????????????startActivity(intent);????????????}
????????});????????tvSend?=?findViewById(R.id.tv_send);????????findViewById(R.id.button_send).setOnClickListener(new?View.OnClickListener()?{????????????@Override????????????public?void?onClick(View?view)?{
????????????????Intent?intent?=?new?Intent(MainActivity.this,MainActivity2.class);//????????????????創建一個包裹對象????????????????Bundle?bundle?=?new?Bundle();????????????????bundle.putString("request_time",?new?Date().toString());????????????????bundle.putString("request_context",tvSend.getText().toString());????????????????intent.putExtras(bundle);????????????????startActivity(intent);????????????}
????????});????}????/**?????*?在頁面載入的時候第二個觸發?????*/????@Override????protected?void?onStart()?{????????super.onStart();????????Log.d(TAG,"Activity?onStart");????}????/**?????*?在頁面載入的時候第三個觸發,結束時頁面可見?????*/????@Override????protected?void?onResume()?{????????super.onResume();????????Log.d(TAG,"Activity?onResume");????}????/**?????*?在頁面跳轉離開的時候觸發?????*/????@Override????protected?void?onPause()?{????????super.onPause();????????Log.d(TAG,"Activity?onPause");????}????/**?????*?在頁面完全消失的時候觸發?????*/????@Override????protected?void?onStop()?{????????super.onStop();????????Log.d(TAG,"Activity?onStop");????}????/**?????*?從其他頁面返回該頁面時首次執行?????*?然后執行onStart和onResume?????*/????@Override????protected?void?onRestart()?{????????super.onRestart();????????Log.d(TAG,"Activity?onRestart");????}????/**?????*?從主界面返回安卓桌面的時候觸發?????*/????@Override????protected?void?onDestroy()?{????????super.onDestroy();????????Log.d(TAG,"Activity?onDestroy");????}
}

在Activity2中獲取意圖中的數據放入tv2中。

public?class?MainActivity2?extends?AppCompatActivity?implements?View.OnClickListener?{????private?TextView?tv2;????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);????????setContentView(R.layout.activity_main2);????????findViewById(R.id.btn_dial).setOnClickListener(this);????????tv2?=?findViewById(R.id.tv2);//????????從上一個頁面的意圖中獲取包裹????????Bundle?bundle?=?getIntent().getExtras();????????String?requestTime?=?bundle.getString("request_time");????????String?requestContext?=?bundle.getString("request_context");????????String?desc?=?String.format("收到請求消息:\n請求時間:%s\n請求內容:%s",????????????????requestTime,requestContext);????????tv2.setText(desc);????}????@Override????public?void?onClick(View?view)?{????????switch?(view.getId())?{????????????case?R.id.btn_dial:
????????????????Intent?intent?=?new?Intent();//????????????????隱式跳轉到撥號界面????????????????intent.setAction(Intent.ACTION_DIAL);????????????????Uri?uri?=?Uri.parse("tel:12345");????????????????intent.setData(uri);????????????????startActivity(intent);????????????????break;????????????default:????????????????break;????????}
????}
}

運行結果

  • 向上一個Activity返回數據

現在我們要回一個信息給到主界面,說今天天氣很熱。

在Activity2中增加一個按鈕,布局文件如下

<?xml?version="1.0"?encoding="utf-8"?><LinearLayout????xmlns:android="http://schemas.android.com/apk/res/android"????android:layout_width="match_parent"????android:layout_height="match_parent"????android:orientation="vertical"????android:gravity="center">????<TextView????????android:id="@+id/tv2"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="@string/text2"?/>????<TextView????????android:id="@+id/tv_response"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:text="待返回的消息為:今天天氣很熱"?/>????<Button????????android:id="@+id/btn_response"????????android:layout_width="match_parent"????????android:layout_height="wrap_content"????????android:text="發送返回信息"?/>????<TextView????????android:id="@+id/tv3"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:padding="5dp"????????android:text="點擊以下按鈕將向號碼12345發起請求"?/>????<Button????????android:id="@+id/btn_dial"????????android:layout_width="match_parent"????????android:layout_height="wrap_content"????????android:text="跳到撥號頁面"?/></LinearLayout>

現在我們在Activity的主界面的Java代碼中就不僅僅是普通的跳轉到Activity2了,而是需要注冊一個可以等待返回的ActivityResult。跳轉的方式也不再是startActivity(intent);注意,以下代碼都改成了Lambda表達式的形式,關于lambda表達式的內容可以參考Java函數式編程整理 。

public?class?MainActivity?extends?AppCompatActivity?{????private?static?final?String?TAG?=?"ning";????private?TextView?tvSend;????private?ActivityResultLauncher<Intent>?register;????/**?????*?在頁面載入的時候最先觸發?????*?@param?savedInstanceState?????*/????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);????????Log.d(TAG,"Activity?onCreate");//????????設置屏幕組件需要用的布局????????setContentView(R.layout.activity_main);????????TextView?tv?=?findViewById(R.id.tv);//????????修改文本控件的文字????????tv.setText("你好,世界");????????Button?button?=?findViewById(R.id.button);//????????給button設定點擊事件的偵聽????????button.setOnClickListener(view?->??{//????????????創建一個意圖對象,第一種方式//????????????Intent?intent?=?new?Intent(MainActivity.this,MainActivity2.class);//????????????第二種方式????????????Intent?intent?=?new?Intent();????????????intent.setClass(MainActivity.this,MainActivity2.class);//????????????第三種方式//????????????Intent?intent?=?new?Intent();//????????????它可以調用第三方的控件,使用包名(字符串)和類名(字符串)來調用//????????????ComponentName?component?=?new?ComponentName(MainActivity.this,MainActivity2.class);//????????????intent.setComponent(component);//????????????實現跳轉????????????startActivity(intent);????????});????????tvSend?=?findViewById(R.id.tv_send);//????????注冊ActivityResult,并通過回調函數獲取返回的信息????????register?=?registerForActivityResult(new?StartActivityForResult(),?result?->??{????????????if?(result?!=?null)?{
????????????????Intent?intent?=?result.getData();????????????????if?(intent?!=?null?&&?result.getResultCode()?==?Activity.RESULT_OK)?{
????????????????????Bundle?bundle?=?intent.getExtras();????????????????????String?responseTime?=?bundle.getString("response_time");????????????????????String?responseContext?=?bundle.getString("response_context");????????????????????String?desc?=?String.format("收到返回消息:\n返回時間:%s\n返回內容:%s",????????????????????????????responseTime,responseContext);????????????????????tv.setText(desc);????????????????}
????????????}
????????});????????findViewById(R.id.button_send).setOnClickListener(view?->??{
????????????Intent?intent?=?new?Intent(MainActivity.this,MainActivity2.class);//????????????????創建一個包裹對象????????????Bundle?bundle?=?new?Bundle();????????????bundle.putString("request_time",?new?Date().toString());????????????bundle.putString("request_context",tvSend.getText().toString());????????????intent.putExtras(bundle);????????????register.launch(intent);????????});????}????/**?????*?在頁面載入的時候第二個觸發?????*/????@Override????protected?void?onStart()?{????????super.onStart();????????Log.d(TAG,"Activity?onStart");????}????/**?????*?在頁面載入的時候第三個觸發,結束時頁面可見?????*/????@Override????protected?void?onResume()?{????????super.onResume();????????Log.d(TAG,"Activity?onResume");????}????/**?????*?在頁面跳轉離開的時候觸發?????*/????@Override????protected?void?onPause()?{????????super.onPause();????????Log.d(TAG,"Activity?onPause");????}????/**?????*?在頁面完全消失的時候觸發?????*/????@Override????protected?void?onStop()?{????????super.onStop();????????Log.d(TAG,"Activity?onStop");????}????/**?????*?從其他頁面返回該頁面時首次執行?????*?然后執行onStart和onResume?????*/????@Override????protected?void?onRestart()?{????????super.onRestart();????????Log.d(TAG,"Activity?onRestart");????}????/**?????*?從主界面返回安卓桌面的時候觸發?????*/????@Override????protected?void?onDestroy()?{????????super.onDestroy();????????Log.d(TAG,"Activity?onDestroy");????}
}

Activity2中的返回信息的代碼如下

public?class?MainActivity2?extends?AppCompatActivity?implements?View.OnClickListener?{????private?TextView?tv2;????private?final?String?msg?=?"今天天氣很熱";????@Override????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);????????setContentView(R.layout.activity_main2);????????findViewById(R.id.btn_dial).setOnClickListener(this);????????tv2?=?findViewById(R.id.tv2);//????????從上一個頁面的意圖中獲取包裹????????Bundle?bundle?=?getIntent().getExtras();????????String?requestTime?=?bundle.getString("request_time");????????String?requestContext?=?bundle.getString("request_context");????????String?desc?=?String.format("收到請求消息:\n請求時間:%s\n請求內容:%s",????????????????requestTime,requestContext);????????tv2.setText(desc);????????findViewById(R.id.btn_response).setOnClickListener(this);????}????@Override????public?void?onClick(View?view)?{
????????Intent?intent?=?new?Intent();????????switch?(view.getId())?{????????????case?R.id.btn_dial://????????????????隱式跳轉到撥號界面????????????????intent.setAction(Intent.ACTION_DIAL);????????????????Uri?uri?=?Uri.parse("tel:12345");????????????????intent.setData(uri);????????????????startActivity(intent);????????????????break;????????????case?R.id.btn_response:
????????????????Bundle?bundle?=?new?Bundle();????????????????bundle.putString("response_time",new?Date().toString());????????????????bundle.putString("response_context",msg);????????????????intent.putExtras(bundle);????????????????setResult(Activity.RESULT_OK,intent);//????????????????頁面返回跳轉????????????????finish();????????????????break;????????????default:????????????????break;????????}
????}
}

運行結果

運行時動態申請權限

展開閱讀全文 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  • 0
    感動
  • 0
    路過
  • 0
    高興
  • 0
    難過
  • 0
    搞笑
  • 0
    無聊
  • 0
    憤怒
  • 0
    同情
熱度排行
友情鏈接
18禁高潮出水呻吟娇喘mp3,日本熟妇乱人伦A片免费高清,成人午夜精品无码区,狠狠色噜噜色狠狠狠综合久久,麻豆一区二区99久久久久,年轻的妈妈4,少妇被又大又粗又爽毛片,护士张开腿让我爽了一夜,男男互攻互受h啪肉np文,你好神枪手电视剧免费观看啊,97人妻一区二区精品免费,久久久婷婷五月亚洲97号色,freegaysexvideos男男中国,国产精品国产三级国av麻豆,国产精品又黄又爽又色无遮挡网站,亚洲av无码一区二区三区网站,亚洲国产精品久久久久蜜桃,国产真人无码作爱视频免费,国产成人精品亚洲一区二区三区,亚洲欧洲日产最新,老司机带带我精彩免费,国产成人久久精品激情,日本最新av免费一区二区三区,边摸边吃奶又黄又激烈视频
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>