我需要在android中加密数据库。我决定使用SEE(SQLite加密扩展)。我看过文档并以相同的方式进行操作,但是未发生加密。我能够查看数据库的详细信息。我的示例程序在这里。
public class MyHelper extends SQLiteOpenHelper {
public static String ACSL_ITS_DETAILS = "acsl_its_details";
public static String USER_ID = "userID";
public static String PRIMARY_KEY = "_id";
public static String UNIT_ID = "unit_id";
public static String DATE = "date";
public static String DEPTID = "deptid";
public static String COMPY_CODE = "compy_code";
public static String DEVICE_COMPY_CODE = "device_compy_code";
public static String ACSLOGITS_TABLE = "CREATE TABLE IF NOT EXISTS " + ACSL_ITS_DETAILS + "(" + PRIMARY_KEY + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , " + USER_ID + " varchar," +
"" + UNIT_ID + " varchar," +
"" + DATE + " varchar," +
"" + DEPTID + " varchar," +
"" + COMPY_CODE + " varchar," +
"" + DEVICE_COMPY_CODE + " varchar);";
static MyHelper mInstance;
public static SQLiteDatabase db;
public MyHelper(Context context) {
super(context, Environment.getExternalStorageDirectory()
+ File.separator + "see.db", null, 1);
}
public static MyHelper getInstance(Context context) {
int i = 0;
while (i < 2) {
if (mInstance == null) {
try {
mInstance = new MyHelper(context.getApplicationContext());
// db = mInstance.getWritableDatabase();
break;
} catch (Exception e) {
e.printStackTrace();
try {
if (mInstance != null) {
mInstance.close();
mInstance = null;
i++;
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
return mInstance;
}
@Override
public void onConfigure(SQLiteDatabase db) {
super.onConfigure(db);
db.execSQL("PRAGMA key = 'manvish'");
Log.d("Gajanand", "onConfigure: ");
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(ACSLOGITS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
我正在如下所示的主要活动中访问数据库
public class MainActivity extends AppCompatActivity {
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = MyHelper.getInstance(this).getWritableDatabase();
insertSthToDb();
fetch();
}
private void insertSthToDb() {
ContentValues values = new ContentValues();
values.put(USER_ID, "1234");
values.put(UNIT_ID, 516001280);
db.insert(ACSL_ITS_DETAILS, null, values);
}
private void fetch() {
Cursor cursor = db.rawQuery("select userID from acsl_its_details where _id = 1 ", null);
if (null != cursor && cursor.moveToFirst()) {
String id = cursor.getString(cursor.getColumnIndex(USER_ID));
Log.d("Gajanand", "fetch: " + id);
}
}
}
清单文件如下所示
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.manvish.see">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
从link开始,我提到了这个话题。有帮助吗?