Android應(yīng)用開發(fā)_第1頁
Android應(yīng)用開發(fā)_第2頁
Android應(yīng)用開發(fā)_第3頁
Android應(yīng)用開發(fā)_第4頁
Android應(yīng)用開發(fā)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Android應(yīng)用開發(fā)AndroidAndroidAndroid環(huán)境配置和開發(fā)Android應(yīng)用程序構(gòu)成如何開發(fā)一個(gè)例子目錄Android應(yīng)用開發(fā)AndroidAndroid平臺(tái)架構(gòu)平臺(tái)架構(gòu)JNIJAVAC/匯編Android應(yīng)用開發(fā)簡介 LinuxLinux核心核心:Android依賴來提供核心的服務(wù),例如存儲(chǔ)管理、進(jìn)程(Process)管理等 Android RuntimeAndroid Runtime:Java語言層級(jí)的Virtual Machine LibrariesLibraries:Android里已經(jīng)提供的C/C+組件。例如,SQLite、OpenGL 3D等。 應(yīng)用應(yīng)用框架框架

2、(Application Framework,)(Application Framework,):這是結(jié)合Applications和Libraries的主架構(gòu),讓Libraries組件能不斷地為Applications所重復(fù)使用 應(yīng)用程序應(yīng)用程序(Applications)(Applications):根據(jù)用戶的期望而將AF的組件及Libraries組件組合而成的服務(wù)。Android應(yīng)用開發(fā)用漢堡比喻用漢堡比喻Android 平臺(tái)架構(gòu)平臺(tái)架構(gòu)Android應(yīng)用開發(fā)Android環(huán)境配置和開發(fā)Android平臺(tái)架構(gòu)Android應(yīng)用程序構(gòu)成如何開發(fā)一個(gè)例子目錄Android應(yīng)用開發(fā)如何安裝 An

3、droid SDK 和Eclipse 插件所需開發(fā)環(huán)境所需開發(fā)環(huán)境:JDK 5 或 JDK 6 (僅有JRE不夠) Eclipse 3.5 (galileo)下載下載ADT 的的Eclipse 插件插件 安裝安裝 Eclipse 插件插件 (ADT)啟動(dòng) Eclipse,選擇 Help Install New Software,在出現(xiàn)的對(duì)話框里,點(diǎn)擊Add按鈕,在對(duì)話框的name一欄輸入“ADT”, 然后點(diǎn)擊Archive.,瀏覽和選擇已經(jīng)下載的ADT插件插件壓縮文件。 點(diǎn)擊 OK.。返回可用軟件的視圖,你會(huì)看到這個(gè)插件,然后選擇Developer Tools (會(huì)選中下面的“Android

4、Developer Tools”和 “Android Editors“),點(diǎn)擊 Next,最后重啟 Eclipse。下載下載Android SDK:下載完SDK后,把.zip文件解壓到你電腦上合適位置。啟動(dòng) Eclipse,選擇window-preferences,在打開的視圖左邊點(diǎn)擊android,在右邊的SDK Location中選擇Android SDK所在位置。Android應(yīng)用開發(fā)開發(fā)第一個(gè)Android應(yīng)用打開Eclipse,新建項(xiàng)目(點(diǎn)擊FileNewProject),在項(xiàng)目列表中展開Android目錄,選擇Android Project,如下圖:Android應(yīng)用開發(fā)開發(fā)第一個(gè)

5、Android應(yīng)用Android應(yīng)用開發(fā)開發(fā)第一個(gè)Android應(yīng)用點(diǎn)擊”finish”即可完成項(xiàng)目的創(chuàng)建,創(chuàng)建后的項(xiàng)目已經(jīng)是一個(gè)可運(yùn)行的Android應(yīng)用,我們可以通過下面方式運(yùn)行此應(yīng)用:點(diǎn)擊工具欄上手機(jī)形狀的虛擬設(shè)備管理器(簡稱“AVD“),如下:Android應(yīng)用開發(fā)開發(fā)第一個(gè)Android應(yīng)用在打開的虛擬設(shè)備管理器中創(chuàng)建一個(gè)虛擬手機(jī):Android應(yīng)用開發(fā)開發(fā)第一個(gè)Android應(yīng)用在項(xiàng)目上右鍵點(diǎn)擊run as Android application,如下圖:Android應(yīng)用開發(fā)Android應(yīng)用程序架構(gòu)src/ java原代碼存放目錄原代碼存放目錄gen/ 自動(dòng)生成目錄自動(dòng)生成目錄

6、gen 目錄中存放所有由目錄中存放所有由Android開發(fā)工具自動(dòng)生成的文件。目錄中最重要的就是文件。開發(fā)工具自動(dòng)生成的文件。目錄中最重要的就是文件。 這個(gè)文件這個(gè)文件由由Android開發(fā)工具自動(dòng)產(chǎn)生的。開發(fā)工具自動(dòng)產(chǎn)生的。Android開發(fā)工具會(huì)自動(dòng)根據(jù)你放入開發(fā)工具會(huì)自動(dòng)根據(jù)你放入res目錄的目錄的xml界面文界面文件、圖標(biāo)與常量,同步更新修改文件。正因?yàn)槲募怯砷_發(fā)工具自動(dòng)生成的,所以我們應(yīng)避件、圖標(biāo)與常量,同步更新修改文件。正因?yàn)槲募怯砷_發(fā)工具自動(dòng)生成的,所以我們應(yīng)避免手工修改。在應(yīng)用中起到了字典的作用,它包含了界面、圖標(biāo)、常量等各種資源的免手工修改。在應(yīng)用中起到了字典的作用,它包

7、含了界面、圖標(biāo)、常量等各種資源的id,通,通過,應(yīng)用可以很方便地找到對(duì)應(yīng)資源。另外編繹器也會(huì)檢查列表中的資源是否被使用到,沒過,應(yīng)用可以很方便地找到對(duì)應(yīng)資源。另外編繹器也會(huì)檢查列表中的資源是否被使用到,沒有被使用到的資源不會(huì)編繹進(jìn)軟件中,這樣可以減少應(yīng)用在手機(jī)占用的空間。有被使用到的資源不會(huì)編繹進(jìn)軟件中,這樣可以減少應(yīng)用在手機(jī)占用的空間。res/ 資源資源(Resource)目錄目錄在這個(gè)目錄中我們可以存放應(yīng)用使用到的各種資源,如在這個(gè)目錄中我們可以存放應(yīng)用使用到的各種資源,如xml界面文件,圖片或數(shù)據(jù)。具體請(qǐng)看界面文件,圖片或數(shù)據(jù)。具體請(qǐng)看ppt下方備注欄。下方備注欄。AndroidMani

8、fest.xml 功能清單文件功能清單文件 這個(gè)文件列出了應(yīng)用程序所提供的功能,在這個(gè)文件中,你可以指定應(yīng)用程序使用到的服務(wù)這個(gè)文件列出了應(yīng)用程序所提供的功能,在這個(gè)文件中,你可以指定應(yīng)用程序使用到的服務(wù)(如如 服務(wù)、互聯(lián)網(wǎng)服務(wù)、短信服務(wù)、服務(wù)、互聯(lián)網(wǎng)服務(wù)、短信服務(wù)、GPS服務(wù)等等服務(wù)等等)。另外當(dāng)你新添加一個(gè)。另外當(dāng)你新添加一個(gè)Activity的時(shí)候,也需的時(shí)候,也需要在這個(gè)文件中進(jìn)行相應(yīng)配置,只有配置好后,才能調(diào)用此要在這個(gè)文件中進(jìn)行相應(yīng)配置,只有配置好后,才能調(diào)用此Aperties 項(xiàng)目環(huán)境信息,一般是不需要修改此文件項(xiàng)目環(huán)境信息,一般是不需要修改此

9、文件Android應(yīng)用開發(fā)目錄Android環(huán)境配置和開發(fā)Android平臺(tái)架構(gòu)Android應(yīng)用程序構(gòu)成如何開發(fā)一個(gè)例子Android應(yīng)用開發(fā)Android應(yīng)用程序構(gòu)成ActivityServiceBroadcast ReceiverContent ProviderIntentAndroid應(yīng)用開發(fā)ActivityA visual user interface通過view管理UI每一個(gè)有用戶界面的應(yīng)用至少包含一個(gè)activity一個(gè)應(yīng)用可以有多個(gè)activity,其中一個(gè)作為main activity用于啟動(dòng)顯示Activity通過startActivity或startActivityFor

10、Result啟動(dòng)另外的activityAndroid應(yīng)用開發(fā)Activity生命周期 Activity通過onCreate被創(chuàng)建 當(dāng)一個(gè)activity失去焦點(diǎn),該activity將進(jìn)入pause狀態(tài),系統(tǒng)在內(nèi)存不足時(shí)會(huì)將其終止 當(dāng)一個(gè)activity被另一個(gè)activity覆蓋,該activity將進(jìn)入stop狀態(tài),系統(tǒng)在需要內(nèi)存的時(shí)候會(huì)將其終止Android應(yīng)用開發(fā)Intent類似于消息、事件通知Intent構(gòu)成:action、category、dataActivity、Service、broadcast receiver之間的橋梁IntentactivityserviceBroadcas

11、t receiverAndroid應(yīng)用開發(fā)Intent 兩類intent: 顯式:指定具體的目標(biāo)組件處理 startActivity(new Intent(ActivityLifecycle.this, AnotherActivity.class); 隱式:由系統(tǒng)接受并決定如何處理 startActivity(new Intent(Intent.ACTION_DIAL); 在中定義activity、service、broadcast receiver接受的intentAndroid應(yīng)用開發(fā)IntentIntent filter: action、category、dataframeworkCom

12、ponent nameActionDataCategoryintentcomponentactivityserviceBroadcast receiverAndroid應(yīng)用開發(fā)實(shí)例action - DIALdata - tel:action - VIEWdata - Android應(yīng)用開發(fā)Service沒有UI,啟動(dòng)之后一直運(yùn)行于后臺(tái)例子:音樂播放器與應(yīng)用程序的其他模塊(例如activity)一同運(yùn)行于主線程中通過startService或bindService創(chuàng)建Service通過stopService或stopSelf終止Service一般的,在activity中啟動(dòng)和終止serviceA

13、ndroid應(yīng)用開發(fā)Service生命周期Context.stopService()Serivce.stopSelf()Context.startService()Context.bindService()Android應(yīng)用開發(fā)服務(wù)服務(wù)-Service-ServiceAndroid中的服務(wù)和windows中的服務(wù)是類似的東西,服務(wù)一般沒有用戶操作界面,它運(yùn)行于系統(tǒng)中不容易被用戶發(fā)覺,可以使用它開發(fā)如監(jiān)控之類的程序。服務(wù)的開發(fā)比較簡單,如下:第一步:繼承Service類public class SMSService extends Service Android應(yīng)用開發(fā)服務(wù)服務(wù)-Service-

14、Service第二步:在文件中的節(jié)點(diǎn)里對(duì)服務(wù)進(jìn)行配置:服務(wù)不能自己運(yùn)行,需要通過調(diào)用Context.startService()或Context.bindService()方法啟動(dòng)服務(wù)。這兩個(gè)方法都可以啟動(dòng)Service,但是它們的使用場(chǎng)合有所不同。使用startService()方法啟用服務(wù),調(diào)用者與服務(wù)之間沒有關(guān)連,即使調(diào)用者退出了,服務(wù)仍然運(yùn)行。使用bindService()方法啟用服務(wù),調(diào)用者與服務(wù)綁定在了一起,調(diào)用者一旦退出,服務(wù)也就終止。如果打算采用Context.startService()Context.startService()方法啟動(dòng)服務(wù)方法啟動(dòng)服務(wù),在服務(wù)未被創(chuàng)建時(shí),系

15、統(tǒng)會(huì)先調(diào)用服務(wù)的onCreate()方法,接著調(diào)用onStart()方法。如果調(diào)用startService()方法前服務(wù)已經(jīng)被創(chuàng)建,多次調(diào)用startService()方法并不會(huì)導(dǎo)致多次創(chuàng)建服務(wù),。采用startService()方法啟動(dòng)的服務(wù),只能調(diào)用Context.stopService()方法結(jié)束服務(wù),服務(wù)結(jié)束時(shí)會(huì)調(diào)用onDestroy()方法。Android應(yīng)用開發(fā)服務(wù)服務(wù)-Service-Service如果打算采用Context.bindService()Context.bindService()方法啟動(dòng)服務(wù)方法啟動(dòng)服務(wù),在服務(wù)未被創(chuàng)建時(shí),系統(tǒng)會(huì)先調(diào)用服務(wù)的onCreate()方法,

16、接著調(diào)用onBind()方法。這個(gè)時(shí)候調(diào)用者和服務(wù)綁定在一起,調(diào)用者退出了,系統(tǒng)就會(huì)先調(diào)用服務(wù)的onUnbind()方法,接著調(diào)用onDestroy()方法。如果調(diào)用bindService()方法前服務(wù)已經(jīng)被綁定,多次調(diào)用bindService()方法并不會(huì)導(dǎo)致多次創(chuàng)建服務(wù)及綁定(也就是說onCreate()和onBind()方法并不會(huì)被多次調(diào)用)。如果調(diào)用者希望與正在綁定的服務(wù)解除綁定,可以調(diào)用unbindService()方法,調(diào)用該方法也會(huì)導(dǎo)致系統(tǒng)調(diào)用服務(wù)的onUnbind()-onDestroy()方法。Android應(yīng)用開發(fā)服務(wù)服務(wù)-Service-Service服務(wù)常用生命周期回調(diào)

17、方法如下:onCreate() 該方法在服務(wù)被創(chuàng)建時(shí)調(diào)用,該方法只會(huì)被調(diào)用一次,無論調(diào)用多少次startService()或bindService()方法,服務(wù)也只被創(chuàng)建一次。onDestroy()該方法在服務(wù)被終止時(shí)調(diào)用。l 與采用Context.startService()方法啟動(dòng)服務(wù)有關(guān)的生命周期方法onStart() 只有采用Context.startService()方法啟動(dòng)服務(wù)時(shí)才會(huì)回調(diào)該方法。該方法在服務(wù)開始運(yùn)行時(shí)被調(diào)用。多次調(diào)用startService()方法盡管不會(huì)多次創(chuàng)建服務(wù),但onStart() 方法會(huì)被多次調(diào)用。l 與采用Context.bindService()方法啟

18、動(dòng)服務(wù)有關(guān)的生命周期方法onBind()只有采用Context.bindService()方法啟動(dòng)服務(wù)時(shí)才會(huì)回調(diào)該方法。該方法在調(diào)用者與服務(wù)綁定時(shí)被調(diào)用,當(dāng)調(diào)用者與服務(wù)已經(jīng)綁定,多次調(diào)用Context.bindService()方法并不會(huì)導(dǎo)致該方法被多次調(diào)用。onUnbind()只有采用Context.bindService()方法啟動(dòng)服務(wù)時(shí)才會(huì)回調(diào)該方法。該方法在調(diào)用者與服務(wù)解除綁定時(shí)被調(diào)用。Android應(yīng)用開發(fā)采用采用startService()startService()啟動(dòng)服務(wù)啟動(dòng)服務(wù)采用Context.startService()方法啟動(dòng)服務(wù)的代碼如下:public class H

19、elloActivity extends Activity Override public void onCreate(Bundle savedInstanceState) . Button button =(Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent(HelloActivity.this, SMSService.class);startServi

20、ce(intent);); Android應(yīng)用開發(fā)采用采用bindService()()啟動(dòng)服務(wù)啟動(dòng)服務(wù)采用Context.startService()方法啟動(dòng)服務(wù)的代碼如下:public class HelloActivity extends Activity ServiceConnection conn = new ServiceConnection() public void onServiceConnected(ComponentName name, IBinder service) public void onServiceDisconnected(ComponentName nam

21、e) ; Override public void onCreate(Bundle savedInstanceState) Button button =(Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent(HelloActivity.this, SMSService.class);bindService(intent, conn, Context.BIN

22、D_AUTO_CREATE);/unbindService(conn);/解除綁定); Android應(yīng)用開發(fā)何為Content provider什么是Content provider?Content Provider 是Android應(yīng)用程序的四大組成部分之一是android中的跨應(yīng)用訪問數(shù)據(jù)機(jī)制為何需要content provider?Android中每一個(gè)app的資源是私有的app通過content provider和其他app共享私有數(shù)據(jù)Android應(yīng)用開發(fā)如何使用content provider通過content resolver訪問Context.getContentResolv

23、er()appContentResolverContentProvider AContentProvider BContentResolverContentResolverappappAndroid應(yīng)用開發(fā)如何使用content provider URI定位資源 content:/contacts/people 類似關(guān)系數(shù)據(jù)庫的訪問方式 以二維數(shù)據(jù)表的格式暴露數(shù)據(jù),缺省都包含_id字段delete(Uri url, String where, String selectionArgs)insert(Uri url, ContentValues values)query(Uri uri, Str

24、ing projection, String selection, String selectionArgs, String sortOrder)update(Uri uri, ContentValues values, String where, String selectionArgs)Android應(yīng)用開發(fā)定義自己的content providerAndroid應(yīng)用開發(fā)Android的存儲(chǔ)一般的,應(yīng)用程序的數(shù)據(jù)(包括文件)都是私有的四種持久存儲(chǔ)方式Preferences類似properties,xml文件FilesDatabaseSQLiteNetworkAndroid應(yīng)用開發(fā)Broad

25、cast receiver接收和處理android的廣播消息Android的廣播機(jī)制系統(tǒng)事件例如變換時(shí)區(qū)、電量低等應(yīng)用程序發(fā)出廣播消息:sendBroadCast廣播消息:intentandroidappBroadcast receiverSend Send broadcastbroadcastAndroid應(yīng)用開發(fā)創(chuàng)建Broadcast Receiver 實(shí)現(xiàn)一個(gè)BroadcastReceiver public class MyAndroidReceiver extends BroadcastReceiver override onReceive(Context context, Inten

26、ts Intents) 注冊(cè)BroadcastReceiver 在文件當(dāng)中進(jìn)行注冊(cè) 在代碼當(dāng)中直接進(jìn)行注冊(cè) IntentsFilter filter = new IntentsFilter(NEW_BROADCAST );MyAndroidReceiver MyAndroidReceiver = new MyAndroidReceiver();registerReceiver(MyAndroidReceiver , filter);Android應(yīng)用開發(fā)Broadcast receiver生命周期Broadcast receiver對(duì)象在onReceive返回后被銷毀onReceive中不適合

27、處理異步過程。例如彈出對(duì)話框與用戶交互,可使用消息欄替代。Android應(yīng)用開發(fā)Android權(quán)限控制 在中描述一個(gè)app的權(quán)限 例如: 權(quán)限舉例(參考android. Manifest.permission) Manifest.permission)權(quán)限名稱權(quán)限名稱權(quán)限描述權(quán)限描述接收短信android.permission.RECEIVE_SMS撥打電話android.permission.CALL_PHONE系統(tǒng)啟動(dòng)完畢通知android.permission.RECEIVE_BOOT_COMPLETED讀取聯(lián)系人信息android.permission.READ_CONTACTS修改聯(lián)

28、系人信息android.permission.WRITE_CONTACTSAndroid應(yīng)用開發(fā)目錄Android環(huán)境配置和開發(fā)Android平臺(tái)架構(gòu)Android應(yīng)用程序構(gòu)成如何開發(fā)一個(gè)例子Android應(yīng)用開發(fā)從從InternetInternet獲取數(shù)據(jù)獲取數(shù)據(jù)利用HttpURLConnection對(duì)象,我們可以從網(wǎng)絡(luò)中獲取網(wǎng)頁數(shù)據(jù).URL url = new URL();HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(6* 1000);/設(shè)置連接超時(shí)if (c

29、onn.getResponseCode() != 200) throw new RuntimeException(請(qǐng)求url失敗);InputStream is = conn.getInputStream();/得到網(wǎng)絡(luò)返回的輸入流String result = readData(is, GBK);conn.disconnect();System.out.println(result);/第一個(gè)參數(shù)為輸入流,第二個(gè)參數(shù)為字符集編碼public static String readData(InputStream inSream, String charsetName) throws Excep

30、tionByteArrayOutputStream outStream = new ByteArrayOutputStream();byte buffer = new byte1024;int len = -1;while( (len = inSream.read(buffer) != -1 )outStream.write(buffer, 0, len);byte data = outStream.toByteArray();outStream.close();inSream.close();return new String(data, charsetName);Android應(yīng)用開發(fā)從從

31、InternetInternet獲取數(shù)據(jù)獲取數(shù)據(jù)利用HttpURLConnection對(duì)象,我們可以從網(wǎng)絡(luò)中獲取文件數(shù)據(jù).URL url = new URL();HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(6* 1000);if (conn.getResponseCode() != 200) throw new RuntimeException(請(qǐng)求url失敗);InputStream is = conn.getInputStream();readAs, Img

32、269812337.jpg); public static void readAs inSream, ) throws Exception outStream = new (file);byte buffer = new byte1024;int len = -1;while( (len = inSream.read(buffer) != -1 )outStream.write(buffer, 0, len); outStream.close();inSream.close();Android應(yīng)用開發(fā)向向InternetInternet發(fā)送請(qǐng)求參數(shù)發(fā)送請(qǐng)求參數(shù)利用HttpURLConnecti

33、on對(duì)象,我們可以向網(wǎng)絡(luò)發(fā)送請(qǐng)求參數(shù).String requestUrl = ;Map requestParams = new HashMap();requestParams.put(age, 12);requestParams.put(name, 中國); StringBuilder params = new StringBuilder();for(Map.Entry entry : requestParams.entrySet()params.append(entry.getKey();params.append(=);params.append(URLEncoder.encode(ent

34、ry.getValue(), UTF-8);params.append(&);if (params.length() 0) params.deleteCharAt(params.length() - 1);byte data = params.toString().getBytes();URL realUrl = new URL(requestUrl);HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();Android應(yīng)用開發(fā)向向InternetInternet發(fā)送請(qǐng)求參數(shù)發(fā)送請(qǐng)求參數(shù)conn.se

35、tDoOutput(true);/發(fā)送POST請(qǐng)求必須設(shè)置允許輸出conn.setUseCaches(false);/不使用Cacheconn.setRequestMethod(POST); conn.setRequestProperty(Connection, Keep-Alive);/維持長連接conn.setRequestProperty(Charset, UTF-8);conn.setRequestProperty(Content-Length, String.valueOf(data.length);conn.setRequestProperty(Content-Type,application/x-);DataOutputStream outStream = new DataOutputStream(conn.getOutputStream();outStream.write(data);outStream.flush();if( conn.getResponseCode() = 200 ) String result = readAsString(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論