




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第七章 內容提供者7.1 內容提供者簡介7.5 小結7.3 訪問其他程序中的數據7.2 運行時權限7.4 自定義內容提供者7.1 內容提供者簡介Android程序中有時也需要通過其他應用程序訪問程序。微信程序需要獲取手機聯系人信息,支付寶程序進行收款人電話號碼填寫的時候也需要獲取通訊錄信息。為了實現跨程序共享數據的功能,Android系統提供了一個組件ContentProvider(內容提供者)。ContentProvider(內容提供者)是Android系統四大組件之一,主要用于在不同應用程序之間實現數據共享功能。Android系統中應用程序之間相互獨立,分別運行在自己的進程中,如果一個應用
2、程序要訪問另一個程序中的數據且同時保證被訪數據的安全性,就需要用到ContentProvider,它也是Android實現跨程序共享數據的標準方式。7.2 運行時權限Android開發團隊在Android 6.0之后的系統中引入了運行時權限這個功能,更加嚴格的保護用戶安全及隱私。接下來我們學習一下Android 6.0只有引入的運行時權限。7.2.1 Android權限機制介紹在Android 6.0之前,權限機制非常簡單,只需要在清單文件AndroidMenifest.xml文件中將自己需要的權限進行聲明就可以。Android 6.0 之后加入了運行時權限這一概念對于危險權限,應用必須在使用
3、的時候進行申請,用戶可以自主選擇是否授予這些權限。如果拒絕授予權限,應用也不會崩潰,只是用戶無法使用這一部分功能罷了。7.2 運行時權限Android現在將所有的權限劃分為兩類,一類是普通權限,一類是危險權限。權限組名權限名CALENDARREAD_CALENDARWRITE_CALENDARCAMERACAMERACONTACTSREAD_CONTACTSWRITE_CONTACTSGET_ACCOUNTSLOCATIONACCESS_FINE_LOCATIONACCESS_COARSE_LOCATIONMICROPHONERECORD_AUDIOPHONEREAD_PHONE_STATEC
4、ALL_PHONEREAD_CALL_LOGWRITE_CALL_LOGADD_VOICEMALLUSE_SIPPROCESS_OUTGOING_CALLSSENSORSBODY_SENSORSSMSSEND_SMSRECEIVE_SMSREAD_SMSRECEIVE_WAP_PUSHRECEIVE_MMSSTORAGEREAD_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE7.2 運行時權限 普通權限指不會直接威脅到用戶的安全隱私的權限,這類權限系統會自動幫我們授權;而危險權限則表示會觸及用戶隱私對設備安全性造成影響的權限,例如聯系人信息或地理定位等,這部分權限
5、的授權,必須由用戶手動點擊授權才可以,否則程序無法使用相應功能。7.2 運行時權限7.2.2 申請運行時權限首先在點擊事件中借助ContextCompat.checkSelfPermission()方法來檢查授權情況。 public void onClick(View v) /判斷用戶是否授權if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED) ActivityCompat.requestPermissi
6、ons(MainActivity.this,new StringManifest.permission.CALL_PHONE,1); else call(); 7.2 運行時權限然后使用方法的返回值和授權組PackgeManager.PERMISSION_GRANTED比較是否授權 /重寫方法用來彈出權限申請對話框向用戶申請授權 Override public void onRequestPermissionsResult(int requestCode, NonNull String permissions, NonNull int grantResults) switch (request
7、Code) case 1: if(grantResults.length0&grantResults0=PackageManager.PERMISSION_GRANTED) call(); else Toast.makeText(this,You denied the permission,Toast.LENGTH_SHORT).show(); break; default: 7.3 訪問其他程序中的數據ContentProvider是不同應用程序之間數據共享的標準API,如果想要訪問ContentProvider中共享的數據,一定要借助ContentResolver類A程序需要使用Conte
8、ntProvider共享數據,太能被其他程序操作。B程序必須通過ContentResolver操作A程序共享出來的數據,而A程序會將操作結果返回給ContentResolver,然后ContentResolver再將操作結果返回給程序B。A程序Content Provider共享的數據ContentResolverB程序操作共享數據返回操作結果操作A中數據返回操作結果7.3.1 ContentResolver的使用對于應用程序來說,想要訪問內容提供者中共享的數據需要借助ContentResolver類,通過Context中的getContentResolver()方法獲取實例ContentRe
9、solver中提供了一系列與SQLiteDatabase相似的方法用于對數據進行增、刪、改、查操作解析方法如下所示:7.3 訪問其他程序中的數據Uri uri = Uri.parse(“content:/com.example.mycontentprovider/student”)通過調用Uri.parse()方法,將內容Uri字符串解析成Uri對象,ContentResolver就可以通過使用這個Uri對象來查詢student表中的數據,通過下面的示例進行查詢:通過下表對這部分參數進行對比Cursor cursor = getContentResolver().query(uri , pro
10、jection , selection , selectionArgs , sortorder );query()方法參數對應SQL部分描述urifrom table_name查詢某個應用程序下某張表projectionselect column1查詢的列名selectionwhere column = valuewhere的約束條件selectionArgs為where中的占位符提供具體值orderByorder by column1查詢結果排序方式7.3 訪問其他程序中的數據7.3.2 實戰演練23功能描述:技術要點:編輯布局編輯邏輯代碼,使用ContentResolver使用Conten
11、tResolver獲取系統通訊錄數據案例代碼(詳見教材P163P165)實現步驟: 讀取聯系人信息 使用ContentResolver操作Android系統中通訊錄中共享的數據17.3 訪問其他程序中的數據7.4 自定義內容提供者7.4.1 內容提供者創建ContentProvider的創建方式與廣播接收者類似。在程序包名處單擊右鍵,選擇【New】【Other】【Content Provider】選項,在彈出窗口輸入內容提供者的Class Name和唯一標識,完成后單擊【Finish】按鈕。、包含6個方法onCreate()query()insert()update() delete()get
12、Type()7.4 自定義內容提供者通過上述方法創建好內容提供者后,Android Studio會自動在AndroidMenifest.xml中對內容提供者進行注冊 application 7.4 自定義內容提供者7.4.2 訪問內容提供者需要借助UriMatcher類實現匹配內容Uri的功能。UriMarcher中提供的addURI()方法可以接收3個參數,分別對應前面我們學習的內容Uri中的authority和path部分 /創建自定義代碼 public static final int TABLE_1_LS = 0; public static final int TABLE_1_ITE
13、M = 1; public static final int TABLE_2_LS = 2; public static final int TABLE_2_ITEM = 3; /創建UriMatcher實例 private static UriMatcher uriMatcher; static uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.addURI(com.example.myprovidertest,table_1,TABLE_1_LS); uriMatcher.addURI(com.example.myprovidertest,table_1/#,TABLE_1_ITEM); uriMatcher.addURI(com.example.myprovidertest,table_2,TABLE_2_LS); uriMatcher.addURI(com.example.myprovidertest,table_2/#,TABLE_2_LS); 7.4.3 實戰演練23功能描述:技術要點:編輯布局編輯邏輯代碼,創建ContentProvider暴露數據創建匹配器并使用ContentRe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年機械專業面試真題及答案
- 2025年玻璃窯爐考試題及答案
- 寶馬元宵活動方案
- 公益新篇章模版
- 寵物比賽展會活動方案
- 2025至2030全球及中國即食送餐服務行業產業運行態勢及投資規劃深度研究報告
- 定置定位活動方案
- 2025至2030先進的汽車材料行業產業運行態勢及投資規劃深度研究報告
- 吉林職業技術學院《古今數學》2023-2024學年第一學期期末試卷
- excel考試題筆試及答案
- GB 29837-2013火災探測報警產品的維修保養與報廢
- 一例慢阻肺病人護理個案
- 建平中學自招真題解析
- DB50-T 1293-2022 松材線蟲病疫木除治技術規范(標準文本)
- 微電子工藝實驗報告
- 金屬材料檢驗的標準課件
- 動物疫病流行病學調查表診斷送檢用
- 模具技術要求
- 廣東省公務員錄用審批表
- 士兵提干考軍校(適用全國各地)2025年考試試題
- 鉆孔灌注樁灌注旁站記錄
評論
0/150
提交評論