當前位置:首頁 » 凈水方式 » 安卓provider過濾器

安卓provider過濾器

發布時間: 2021-04-03 06:09:57

Ⅰ 安卓中ConteneProvider是什麼意思

Android提供了一些主要數據類型的Content provider,比如音頻、視頻、圖片和私人通訊錄等。可在android.provider包下面找到一些android提供的Content provider。可以獲得這些Content provider,查詢它們包含的數據,當然前提是已獲得適當的讀取許可權。
總的一句:內容提供器是應用程序之間共享數據的介面,Android系統將這種機制應用到方方面面。比如:聯系人提供器專為不同應用程序提供聯系人數據;設置提供器專為不同應用程序提供系統配置信息,包括內置的設置應用程序等。

Ⅱ AndroidManifest.xml中的provider,authorities屬性怎麼寫

authorities 是provider所在的包的名字+provider本身定義的名稱

provider,authorities屬性寫法如下:

<provider>

android:authorities="list"
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:grantUriPermissions=["true" | "false"]
android:icon="drawable resource"
android:initOrder="integer"
android:label="string resource"
android:multiprocess=["true" | "false"]
android:name="string"
android:permission="string"
android:process="string"
android:readPermission="string"
android:syncable=["true" | "false"]
android:writePermission="string">
</provider>

(2)安卓provider過濾器擴展閱讀:

AndroidManifest.xml是Android應用的入口文件,它描述了package中暴露的組件(activities, services, 等等),他們各自的實現類,各種能被處理的數據和啟動位置。

除了能聲明程序中的Activities, ContentProviders, Services, 和Intent Receivers,還能指定permissions和instrumentation(安全控制和測試)。

Ⅲ android.provider.calendarcontract在哪兒

先在安卓文件里,一番個點

Ⅳ 怎麼提高android contentresolver的查詢效率優化

兩種辦法:
1.創建自己的ContentProvider,需要繼承ContentProvider類
2.如果你的數據和已存在的ContentProvider數據結構一致,可以將數據寫到已存在的ContentProvider中
當然前提是獲取寫該ContentProvider的許可權.比如把OA中的成員通訊信息加入到系統的聯系人ContentProvider中
ContentProvider基礎
所有ContentProvider都需要實現相同的介面,用於查詢ContentProvider並返回數據.也包括增加、修改和刪除數據.
步驟:
1.獲得一個ContentResolver的實例,可通過Activity的成員方法getContentResovler()方法:
ContentResolver cr = this.getContentResolver();
ContentResolver實例帶的方法可實現找到指定的ContentProvider並獲取到ContentProvider的數據
ContentResolver的查詢過程開始,Android系統將確定查詢所需的具體ContentProvider,確認它是否啟動並運行它.
android系統負責初始化所有的ContentProvider,不需要用戶自己去創建.實際上,ContentProvider的用戶都不可能直接訪問到ContentProvider實例,只能通過ContentResolver在中間代理.
2.數據模型
ContentProvider展示數據類似一個單個資料庫表.
其中:
每行有個帶唯一值的數字欄位,名為_ID,可用於對表中指定記錄的定位.
ContentProvider返回的數據結構,是類似JDBC的ResultSet,在android中,是Cursor對象.
URI,每個ContentProvider定義一個唯一的公開的URI,用於指定到它的數據集.
一個ContentProvider可以包含多個數據集(可以看作多張表),這樣,就需要有多個URI與每個數據集對應.
這些URI要以這樣的格式開頭:
content://
表示這個URI指定一個ContentProvider.
如果你想創建自己的ContentProvider,最好把自定義的URI設置為類的常量,這樣簡化別人的調用,並且以後如果更新URI也很容易.
android定義了CONTENT_URI常量用於URI,如:android.provider.Contacts.Phones.CONTENT_URI
2.查詢ContentProvider
要想使用一個ContentProvider,需要以下信息:
定義這個ContentProvider的URI,返回結果的欄位名稱,這些欄位的數據類型
如果需要查詢ContentProvider數據集的特定記錄(行),還需要知道該記錄的ID的值.
構建查詢
查詢就是輸入URI等參數,其中URI是必須的,其他是可選的,如果系統能找到URI對應的ContentProvider將返回一個Cursor對象.
可以通過ContentResolver.query()或者Activity.managedQuery()方法.
兩者的方法參數完全一樣,查詢過程和返回值也是相同的.
區別是,通過Activity.managedQuery()方法,不但獲取到Cursor對象,而且能夠管理Cursor對象的生命周期.
比如當Activity暫停(pause)的時候,卸載該Cursor對象,當Activity Restart的時候重新查詢.另外,也可以對一個沒有處於Activity管理的Cursor對象做成被Activity管理的,通過調用Activity.startManaginCursor()方法.
類似這樣:
Cursor cur = managedQuery(myPerson,null,null,null,null);
其中第一個參數myPerson是Uri類型實例.
如果需要查詢的是指定行的記錄,需要用_ID值,比如ID值為23,URI將是類似:
content://....../23
android提供了方便的方法,讓開發者不需要自己拼接上面這樣的URI,比如類似:
Uri myPerson = ContentUris.withAppendedId(People.CONTENT_URI,23);
或者:
Uri myPerson = Uri.withAppendedPath(People.CONTENT_URI,"23");
二者的區別是一個接收整數類型的ID值,一個接收字元串類型.
其他幾個參數:
names,可以為null,表示取數據集的全部列,或者聲明一個String數組,數組中存放列名稱,比如:People._ID.一般列名都在該ContentProvider中有常量對應;
針對返回結果的過濾器,格式類似於SQL中的WHERE子句,區別是不帶WHERE關鍵字,如果返回null表示不過濾,比如name=?;
前面過濾器的參數,是String數組,是針對前面條件中?佔位符的值;
排序參數,類似SQL的ORDER BY字句,不過不需要寫ORDER BY部分,比如name desc,如果不排序,可輸入null.
返回值是Cursor對象,游標位置在第一條記錄之前.
下面實例適用於android 2.0及以上版本,從android通訊錄中得到姓名欄位:
java代碼:
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
讀取返回的數據
如果在查詢的時候使用到ID,那麼返回的數據只有一條記錄.在其他情況下,一般會有多條記錄.和JDBC的ResultSet類似,需要操作游標遍歷結果集,在每行,再通過列名獲取到列的值,可以通過getString()、getInt()、getFloat()等方法獲取值.
比如類似下面:
java代碼:
while(cursor.moveToNext()) {
builder.append(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))).append("-");
}
和JDBC中不同,沒有直接通過列名獲取列值的方法,只能先列名獲取到列的整型索引值,然後再通過該索引值定位獲取列的值.
編輯數據
可以通過ContentProvider實現以下編輯功能:
增加新的記錄:
在已經存在的記錄中增加新的值、批量更新已經存在的多個記錄、刪除記錄.
所有的編輯功能都是通過ContentResolver的方法實現.一些ContentProvider對許可權要求更嚴格一些,需要寫的許可權,如果沒有會報錯.
增加記錄
要想增加記錄到ContentProvider,首先,要在ContentValues對象中設置類似map的鍵值對,在這里,鍵的值對應ContentProvider中的列的名字,鍵值對的值,是對應列希望的類型.
然後,調用ContentResolver.insert()方法,傳入這個ContentValues對象,和對應ContentProvider的URI即可.返回值是這個新記錄的URI對象.這樣你可以通過這個URI獲得包含這條記錄的Cursor對象.
比如:
java代碼:
ContentValues values = new ContentValues();
values.put(People.NAME,"Abraham Lincoln");
Uri uri = getContentResolver().insert(People.CONTENT_URI, values);
在原有記錄上增加值
如果記錄已經存在,可在記錄上增加新的值,或者編輯已經存在的值.
首先要找到原來的值對象,然後要清除原有的值,然後像上面增加記錄一樣即可:
java代碼:
Uri uri = Uri.withAppendedPath(People.CONTENT_URI, "23");
Uri phoneUri = Uri.withAppendedPath(uri, People.Phones.CONTENT_DIRECTORY);
values.clear();
values.put(People.Phones.TYPE, People.Phones.TYPE_MOBILE);
values.put(People.Phones.NUMBER, "1233214567");
getContentResolver().insert(phoneUri, values);
批量更新值
批量更新一組記錄的值,比如NY改名為Eew York.可調用ContentResolver.update()方法.
刪除記錄
如果是刪除單個記錄,調用ContentResolver.delete()方法,URI參數,指定到具體行即可.
如果是刪除多個記錄,調用ContentResolver.delete()方法,URI參數指定Contentprovider即可,並帶一個類似SQL的WHERE子句條件.這里和上面類似,不帶WHERE關鍵字.
創建自己的ContentProvider
創建contentprovider,需要設置存儲系統.大多數ContentProvider使用文件或者SQLite資料庫,不過你可以用任何方式存儲數據.android提供SQLiteOpenHelper幫助開發者創建和管理SQLiteDatabase.
繼承ContentProvider,提供對數據的訪問.在manifest文件中聲明ContentProvider.繼承ContentProvider類
必須定義ContentProvider類的子類,需要實現如下方法:
java代碼:
query()
insert()
update()
delete()
getType()
onCreate()
在實現子類的時候,還有一些步驟可以簡化ContentProvider客戶端的使用:
定義public static final Uri常量,名稱為CONTENT_URI:
java代碼:
public static final Uri CONTENT_URI = Uri.parse("content://com.example.codelab.transportationprovider");
如果有多個表,它們也是使用相同的CONTENT_URI,只是它們的路徑部分不同.
聲明ContentProvider
創建ContentProvider後,需要在manifest文件中聲明,android系統才能知道它,當其他應用需要調用該ContentProvider時才能創建或者調用它.
語法類似:
<provider android:name="com.easymorse.cp.MyContentProvider"
android:authorities="com.easymorse.cp.mycp">
</provider>
android:name要寫ContentProvider繼承類的全名.
android:authorities要寫和CONTENT_URI常量的B部分

Ⅳ android 怎麼使用

首先獲取searchView控制項,比如在actionbar上獲取: SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();if(searchView == null) {return;}int id =searchView.getContext().getResources().getIdentifier。詳細的可以看看安卓巴士教程:http://www.apkbus.com/thread-462992-1-1.html

Ⅵ 安卓contentprovider的oncreate方法返回false會怎樣

onCreate()方法進行一些ContentProvider初始化的工作,返回true表示初始化成功,返回false則初始化失敗。

Ⅶ 安卓里的fileprovider里的path設置為.是什麼意思為什麼我一刪除,調用文件路徑里的安裝包安裝就報錯

我也好久沒碰android了。但一般地址寫的詳細,要許可權以及創建了吧。我是不太清楚現在android開發機制了。算是提供個思路吧

Ⅷ 在AndroidManifest文件中怎麼配置ContentProvider

<provider

android:label="TextProvider"

android:name="Android_TextProvider"

android:authorities="com.huawei.tenAndroid.Android_TextProvider">

</provider>

如上,label,name 隨意,寫provider的定義的名稱即可。
authorities 是provider所在的包的名字+provider本身定義的名稱

AndroidManifest.xml

是每個android程序中必須的文件,它位於整個項目的根目錄。我們每天都在使用這個文件,往裡面配置程序運行所必要的組件,許可權,以及一些相關信息。但是對於這個文件,我們真正又了解多少了,還是只是停留在只會簡單的配置,而不明白其中的具體含義,以及為什麼要這樣設置?今天就讓我們來詳細的學習一下這個文件里各項參數的具體含義,因為它是整個應用的入口,所以有助於我們更加深入的理解Android。

Ⅸ filter provider是什麼意思

filter provider

干擾因素

例句

1.This causes the Axis client engine to run the compression filter before sending the request to the actual service provider.
這就促使Axis客戶機引擎在將請求發送給實際的服務提供者之前先運行壓縮過濾器。

2.The IP Block List provider configuration is used by the Connection Filter agent.
連接篩選器代理將使用IP阻止列表提供程序配置。

3.If the provider is configured to filter nodes based on role; otherwise,
如果提供程序被配置為根據角色篩選節點,則為,

4.The IP Block List provider is used by the Connection Filter agent.
IP阻止列表提供程序供連接篩選器代理使用。

5.Can't connect Network Provider to Transport Information Filter.
無法將網路提供程序連接到傳輸信息篩選器。

熱點內容
丁度巴拉斯情人電影推薦 發布:2024-08-19 09:13:07 瀏覽:886
類似深水的露點電影 發布:2024-08-19 09:10:12 瀏覽:80
《消失的眼角膜》2電影 發布:2024-08-19 08:34:43 瀏覽:878
私人影院什麼電影好看 發布:2024-08-19 08:33:32 瀏覽:593
干 B 發布:2024-08-19 08:30:21 瀏覽:910
夜晚看片網站 發布:2024-08-19 08:20:59 瀏覽:440
台灣男同電影《越界》 發布:2024-08-19 08:04:35 瀏覽:290
看電影選座位追女孩 發布:2024-08-19 07:54:42 瀏覽:975
日本a級愛情 發布:2024-08-19 07:30:38 瀏覽:832
生活中的瑪麗類似電影 發布:2024-08-19 07:26:46 瀏覽:239