標籤:
ContentProvider內容提供者:像是一個中介軟體一樣,一個媒介一樣,可以以標準的增刪改差操作對手機的檔案、資料庫進行增刪改差。通過ContentProvider尋找sd卡的音頻檔案,可以提供標準的方法而且不用知道音頻檔案在那個檔案夾裡面,只要設定條件就可以找到。安卓系統把音視頻、圖片存在系統內部的資料庫裡面,ContentProvider操作的是資料庫不是去檔案夾裡面去找。sd卡和記憶卡的檔案安卓系統都會登記,登記檔案類型、路徑,檔案名稱,檔案大小都儲存在資料庫裡。ContentProvider是通過ContentResolver類操作的。
text/html:text是大類型,text下面有html,css等小類型。
images/jpeg:images是大類型,jpeg是images裡面的一個小類型。
擷取圖片資訊:
package com.sxt.day07_08;import android.os.Bundle;import android.provider.MediaStore;import android.provider.MediaStore.Images;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.util.Log;import android.view.Menu;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getImagesInfo(); } private void getImagesInfo() { ContentResolver resolver = getContentResolver(); String[] projection={//查詢的列 Images.Media._ID,//圖片id,系統建立 Images.Media.DATA,//圖片sd卡路徑 Images.Media.WIDTH, Images.Media.HEIGHT, Images.Media.SIZE//圖片大小 }; //EXTERNAL_CONTENT_URI是sd卡的圖片uri,後面是條件和預留位置和排序 Cursor c = resolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, null); while(c.moveToNext()){ int id=c.getInt(c.getColumnIndex(Images.Media._ID)); String path=c.getString(c.getColumnIndex(Images.Media.DATA)); double width=c.getDouble(c.getColumnIndex(Images.Media.WIDTH)); double height=c.getDouble(c.getColumnIndex(Images.Media.HEIGHT)); double size=c.getDouble(c.getColumnIndex(Images.Media.SIZE)); StringBuilder sb=new StringBuilder(); sb.append("id=").append(id) .append(",path=").append(path) .append(",width=").append(width) .append(",height=").append(height) .append(",size=").append(size); Log.i("main",sb.toString());//列印所有圖片資訊 } }}
系統描述檔案添加:
<uses-sdk 讀取sd卡申請的許可權
android:minSdkVersion="8"
android:targetSdkVersion="18" />
android 53 ContentProvider內容提供者