編輯:關於android開發
MediaProvider中存在兩個數據庫一個是external對應文件系統為SD Card, 一個是內部數據庫internal用於手機flash上的文件系統。遺憾的是雖然MediaProvider提供了操作內外兩個數據庫的功能,但在發布的應用中並沒有使用這個內部文件系統。Android 默認狀態下Image,audio等文件是保存在SD card上。External, internal 數據庫都保存在手機文件系統上
Path: /data/data/com.android.providers.media/database/
如果要使用內部文件系統需要修改以下幾個地方
1:MediaProvider generateFileName函數
java代碼:
private String generateFileName(boolean internal, String preferredExtension, String directoryName)
{
// create a random file
String name = String.valueOf(System.currentTimeMillis());
if (internal) {
throw new UnsupportedOperationException("Writing to internal storage is not supported.");
// return Environment.getDataDirectory()
// + "/" + directoryName + "/" + name + preferredExtension;
} else {
return Environment.getExternalStorageDirectory()+ "/" + directoryName + "/" + name + preferredExtension;
}
}
恢復紅色部分代碼,將路徑設置為手機內部文件系統文件夾。
2:保存文件使用的URI為content://media/internal/images/media/1紅色internal表名使用內部文件系統數據庫
3:修改Sqlite3_android.cpp中delete_file函數
java代碼:
static void delete_file(sqlite3_context * context, int argc, sqlite3_value ** argv){
if (strncmp("/sdcard/", path, 8) != 0 && strncmp("/data/media/", path, 12)) {
sqlite3_result_null(context);
return;
}
}
添加紅色部分,文件位於手機上/data/media路徑時也進行刪除。這樣當我們從數據庫裡刪除一條記錄時,_data數據區存取的文件路徑中的文件也將自動刪除。
《Android源碼設計模式解析與實戰》讀書筆記(二十一) 第二十一章、裝飾模式 裝飾模式也稱為包裝模式,是結構型設計模式之一。裝飾模式是一種用於替代繼承技術的一種方
Android UI ListView的使用,androidlistview一、ListView的理解 1.什麼ListView?
Android開發之自定義的ListView(UITableViewController),自定義uitableviewAndroid開發中的ListView, 顧名方法
android開發游記:SpringView 下拉刷新的高效解決方案,定制你自己風格的拖拽頁面 關於下拉刷新/上拉加載更多的解決方案網上已經有很多了,浏覽了目前主流的下拉