• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 安卓學習筆記——URI

    標簽: java  android

    一、URI:統一資源定位符,Universal Resource Identifier的簡稱

    每一個ContentProvider都擁有一個公共的URI,這個URI用于表示ContentProvider提供的數據

    二、URI的組成:

    在這里插入圖片描述
    例:

    content://com.example.codelab.transportationprovider/train:要操作train數據資源所有的記錄(如train表)
    content://com.example.codelab.transportationprovider/train/10:要操作train數據資源中id為10的記錄(如train表中id為10的記錄)
    content://com.example.codelab.transportationprovider/train/10/name:要操作train數據資源中id為10的記錄的name字段
    content://com.example.codelab.transportationprovider/train/international:要操作train表下的子表international
    content://media/external:這個Uri將返回設備上存儲的所有圖片;
    content://media/external/images/media/4:某個圖片的Uri
    content://contacts/people:這個Uri將返回設備上的所有聯系人信息
    

    三、URI 常用方法:

    1、static Uri parse(String UriString):將一個字符串轉換為Uri

    例如:

    Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/2")
    

    2、 List getPathSegments():獲取uri中path路徑部分存入一個List中

    例如:

    uri.getPathSegments().get(1)
    content://mars.cp.FirstContentProvider/users/1
    

    四、UriMatcher類與ContentUris類的引入

    因為Uri代表了要操作的數據,所以我們經常需要解析Uri,并從Uri中獲取數據。

    Android系統提供了兩個用于操作Uri的工具類

    UriMatcher
    ContentUris
    

    五、UriMatcher類

    UriMatcher用于匹配Uri,當應用程序通過URI訪問ContentProvider時,UriMatcher則檢查該Uri是否符合標準,如果符合標準,則使用該URI

    1、UriMatcher檢查URI是否合法的原理:

    對于一個URI的規則起一個編號,如果該Uri符合該原則,則返回該編號,否則則不返回編號即沒有這個規則。從而判定URI是否合法

    2、UriMatcher類的使用步驟:

    ①、初始化UriMatcher類
    ②、設置所需的Uri規則
    ③、與已經注冊的Uri進行匹配

    3、UriMatcher類的具體使用:

    ①、第一步:初始化

    構造函數:創建URI樹的根節點
    1. public UriMatcher():默認根節點編碼為-1;
    2. public UriMatcher(int code):code參數指定根節點的編碼。
    UriMatcher  sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    //常量UriMatcher.NO_MATCH表示Uri不匹配時的返回碼
    

    ②、第二步設置需要匹配Uri路徑規則

    在這里插入圖片描述

    sMatcher.addURI(“cn.itcast.provider.personprovider”, “person”, 1);//添加需要匹配uri(content://cn.itcast.provider.personprovider/person),如果匹配成功就會給該Uri一個匹配碼1
    sMatcher.addURI(“cn.itcast.provider.personprovider”, “person/#”, 2);//#號為數字通配符,用了匹配任何數字,*匹配任何字符
    

    匹配碼的值需要大于0,否則拋出IllegalArgument異常

    ③、第三步:用match()方法匹配Uri,返回匹配碼。

    switch (sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10"))) { 
       case 1:。。。。。。
        break;
       case 2:。。。。。。。
        break;
       default://不匹配
        break;
    }
    

    六:ContentUris類

    ContentUris類用于操作Uri路徑后面的ID部分。該類下的方法都為靜態方法。

    它有兩個比較實用的方法:

    1、public static Uri withAppendedId (Uri contentUri, long id)

    該方法用于為路徑加上ID部分。

    Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person")
    Uri resultUri = ContentUris.withAppendedId(uri, 10); 
    //生成后的Uri為:content://cn.itcast.provider.personprovider/person/10
    

    2、public static long parseId (Uri contentUri)

    該方法用于從路徑中獲取ID部分。
    (id是指數據庫中每條記錄的唯一標識,即id號。)

    Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/10")
    long personid = ContentUris.parseId(uri);//獲取的結果為:10
    
    版權聲明:本文為fuzhijieabc原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/fuzhijieabc/article/details/110959050

    智能推薦

    安卓學習筆記之Handler

    UI線程 當系統啟動的時候,就會創建一個主線程(Main Thread),然后這個主線程向UI組件分發事件,主線程和UI的組件進行交互,故稱UI線程。 線程安全 Android的UI線程是不安全的。引用一下,百度百科的解釋 線程安全就是多線程訪問時,采用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其他線程不能進行訪問直到該線程讀取完,其他線程才可使用。不會出現數據不一致或者數據污染。 線...

    安卓學習筆記之Okhttp

    什么是okhttp? 我們如果原生的去寫一個網絡請求,需要用到的是HttpConnection等相關類去實現的,但是編寫原生的網絡請求,需要我們來實現更多復雜的功能,比如斷點續傳,都需要花費很長的時間去寫。效率也不高。所以我們為了方便在開發過程中能夠省電精力,需要運用到第三方網絡框架,那就是Okhttp。 Okhttp的使用 manifest添加網絡權限 < uses-permission ...

    安卓學習筆記之IntentService

    什么是IntentService 它會創建一個獨立的子線程來處理所有的Intent請求,創建的子線程來處理onHandleIntent()實現的代碼,無需處理多線程的問題。默認實現onBind()方法,返回為null;默認實現onStartCommand()方法,將請求的Intent添加到隊列中。這個類實際上是繼承自service,內部是封裝了HandlerThread和Handler類。 代碼實...

    安卓學習筆記之Activity(一)

    ** 安卓四大組件之Activity ** 1.介紹 ** Activity的出現無處不在,從手機開始啟動的第一個頁面的都是Activity。主要用于可見的狀態與用戶進行交互。好比一張紙,我們需要用代碼這只“筆”來描繪一些信息告訴讀者,這張紙里面有些什么內容和需要操作什么東西。總的來說就是能看到的基本上和Activity。如果有什么錯誤的地方,希望大家指出。感激不盡。 既然...

    安卓學習筆記之service(一)

    安卓四大組件之Service 今天來入門一下service這個組件,這玩意是在你后臺做一些必要的工作。 ** 1.什么是service? ** 從google官網看的,官方的描述是這樣的。 A Service is an application component representing either an application’s desire to perform a long...

    猜你喜歡

    安卓學習筆記10:相對布局

    文章目錄 零、學習目標 一、相對布局 1、布局特點 2、繼承關系圖 3、常用屬性 (1)相對于父容器居中 (2)相對于其它控件的位置 (3)相對于其它控件對齊 (4)相對于父容器對齊 (5)標識符問題 二、教學案例 —— 相對布局演示 (一)運行效果 (二)實現步驟 1、創建安卓應用【RelativeLayoutDemo】 2、主布局資源文件activity_main.xm...

    安卓學習筆記08:線性布局

    文章目錄 零、學習目標 一、界面與布局概述 (一)界面 (二)布局 1、視圖層次結構圖 2、UI容器 (Container) 3、UI控件 (Control) 4、兩種方式聲明布局 二、線性布局 (一)繼承關系圖 (二)常用屬性 (三)案例演示 —— 線性布局屬性 1、創建安卓應用【LinearLayoutDemo】 2、主布局資源文件activity_main.xml (...

    安卓學習筆記——服務(Service)

    目錄 安卓實驗(Service) 1. 創建兩個按鈕控件 2. 創建用于計時的服務(Service) 3. 注冊TimerService服務 4. 按鈕功能實現 5. 進行調試運行 安卓實驗(Service) 在Android Studio創建計時服務,并使用兩個按鈕進行控制 1. 創建兩個按鈕控件 在activity_main.xml中添加如下代碼新建兩個按鈕控件,也可在Design窗口中拖動控...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    精品国产乱码久久久久久蜜桃不卡