Android NDK區分第一次起機-sqlite3 operation support
在前文部落格:Android——鎖定launch - 原生Browser啟動 -引導provision 以及Android——sqlite3 基本命令操作 中有分析到android 開機真正的啟動apk及其標記位device_provisioned以及android database sqlite3的實際操作。
撰寫不易,轉載需註明出處:http://blog.csdn.net/jscese/article/details/46506709本文來自 【jscese】的部落格!
application層直接呼叫Setting類的靜態類靜態方法即可,native就需要自己新增:
新增支援:
android.mk中新增:
LOCAL_SHARED_LIBRARIES +=libsqlite
copy sqlite3自帶的標頭檔案:external/sqlite/dist/sqlite3.h
check操作:
直接貼實現程式碼:
/*====================db==cmd============================*/
#define PROVISIONED_DB_NAME "/data/data/com.android.providers.settings/databases/settings.db"
#define QUERY_DEVICE_PROVISIONED_CMD "select * from global where name='device_provisioned'"
static int checkdeviceprovisioned() {
char acvalue[10] = {'\0'};
sqlite3 * sdb = 0;
if (sqlite3_open(PROVISIONED_DB_NAME, &sdb) != SQLITE_OK) {
ERROR("open error! : %s\n", sqlite3_errmsg(sdb));
goto error;
}
if (sqlite3_exec(sdb, QUERY_DEVICE_PROVISIONED_CMD, '''loaddbinfo''', &acvalue,
NULL) != SQLITE_OK) {
ERROR("select provisioned error\n");
goto error;
}
if (strcmp(acvalue, "1") != 0) {
ERROR("device_provisioned =0 :the device is not ready\n");
goto error;
}
sqlite3_close(sdb);
sdb = 0;
return 1;
error: sqlite3_close(sdb);
sdb = 0;
return -1;
}
其中loaddbinfo為回撥函式,&acvalue 傳進去的陣列名,作為資料載體。
/*settings.db-global table-format: ID|NAME|VALUE*/
/*CREATE TABLE global (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);*/
/*now get value*/
int loaddbinfo( void * pbuffer, int icolumn, char ** pvalue, char ** pname )
{
for( int iloop = 0 ; iloop < icolumn; iloop++ )
{
if((iloop==icolumn-1)&&(pbuffer != NULL))
{
strcpy((char *)pbuffer,pvalue[iloop]); //上面char型別array的,型別轉換
}
}
return 0;
}
簡單方便~
相關文章
- Android JNI和NDK有什麼區別Android
- Android NDKAndroid
- android ndk整合Android
- Android NDK初識Android
- Android NDK開發之旅15 NDK Eclipse下NDK開發流程AndroidEclipse
- Android NDK祕籍--初識NDK、JNI、Makefile/CMakeAndroid
- android.support.v4.app.Fragment vs android.app.Fragment 的區別AndroidAPPFragment
- Android NDK開發之旅29 NDK FFmpeg視訊播放Android
- Ndk 初步開發 In AndroidAndroid
- Android NDK學習(2)Android
- Android NDK學習(1)Android
- android NDK 交叉編譯Android編譯
- Android NDK開發(二) 使用ndk-build構建工具進行NDK開發AndroidUI
- 深入淺出Android Support AnnotationsAndroid
- Android Support Annotations 使用詳解Android
- This template depends on the Android Support libraryAndroid
- 【譯】Android NDK API 規範AndroidAPI
- android NDK c++ libraryAndroidC++
- Android中的NDK總結Android
- Android -- NDK開發入門Android
- android sqlite3 not found 解決總結AndroidSQLite
- Error:Conflict with dependency 'com.android.support:support-annotations' in projErrorAndroid
- Android Studio 已有專案新增NDK支援(mac/ndk-build)AndroidMacUI
- Android NDK學習(2)Windows下NDK開發環境配置AndroidWindows開發環境
- android之support-v4、v7、v13的區別Android
- Simple: SQLite3 中文結巴分詞外掛SQLite分詞
- Android com.android.support衝突解決Android
- android studio配置ndk開發Android
- Android Studio中NDK開發Android
- Android Studio NDK:三、打包SOAndroid
- android 開發淺談(JDK && NDK)AndroidJDK
- Android NDK | 中文介紹視訊Android
- Android NDK之旅——圖片高斯模糊Android
- Android事件分發機制Android事件
- 如何區分計算機策略計算機
- Android Support 庫各版本功能介紹Android
- Ten Reasons Why Android Should Support OpenCLAndroid
- Android Support Library 學習入門Android