第一步:创建一个Java工程:
在gradle文件中添加依赖:
compile 'org.greenrobot:greendao-generator-encryption:2.2.0'
创建java生存类并执行:
package com.example; import de.greenrobot.daogenerator.DaoGenerator; import de.greenrobot.daogenerator.Entity; import de.greenrobot.daogenerator.Schema; /** * @author xuanyouwu * @email [email protected] * @time 2016-05-05 18:01 */ public class EncyUserDaoGenerator { public static void main(String[] args) throws Exception { addUserSchema(); } private static void addUserSchema()throws Exception { Schema schema = new Schema(1, "com.xuan.user"); Entity user = schema.addEntity("User"); user.addIdProperty(); user.addStringProperty("name"); user.addIntProperty("age"); new DaoGenerator().generateAll(schema, "E:\\Programing\\androidstudio\\workspace\\GitOsc_StudyProject\\db_greendao\\src\\main\\java-gen"); } }
创建java gen目录:在gradle文件中添加java路径
sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/java-gen'] } }
添加依赖:
compile 'org.greenrobot:greendao-encryption:2.2.0' compile 'net.zetetic:android-database-sqlcipher:3.4.0'
执行加密存储
<pre name="code" class="java">package com.xuan.greendaoencryp; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import com.xuan.user.DaoMaster; import com.xuan.user.DaoSession; import com.xuan.user.User; import java.util.List; import java.util.Random; import de.greenrobot.dao.database.Database; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DaoSession daoSession = null; //插入数据库 try { String password = "xiao3"; Database db = new DaoMaster.EncryptedOpenHelper(this, "user1") { @Override public void onUpgrade(Database db, int oldVersion, int newVersion) { } }.getWritableDatabase(password); daoSession = new DaoMaster(db).newSession(); for (int i = 0; i < 10; i++) { User user = new User(); user.setName("xuan_" + System.currentTimeMillis()); user.setAge(new Random().nextInt(100)); daoSession.insertOrReplace(user); } } catch (Exception e) { LogUtils.d("------->insert ex1:" + e); } //直接查询 try { DaoMaster daoMaster = new DaoMaster(new DaoMaster.DevOpenHelper(this, "user1").getWritableDatabase()); DaoSession daoSession1 = daoMaster.newSession(); List<User> users = daoSession1.loadAll(User.class); LogUtils.d("------->users:" + users); } catch (Exception e) { LogUtils.d("------->load ex1:" + e); } //获取密码查询 try { List<User> users2 = daoSession.loadAll(User.class); LogUtils.d("------->users2:" + users2); } catch (Exception e) { LogUtils.d("------->load ex2:" + e); } } }
05-04 19:12:28.854 27767-27767/com.xuan.greendaoencryp D/------: ------->users:[] 05-04 19:12:28.864 27767-27767/com.xuan.greendaoencryp D/------: ------->users2:[User{id=1, name='xuan_1462360348630', age=5}, User{id=2, name='xuan_1462360348654', age=28}, User{id=3, name='xuan_1462360348666', age=20}, User{id=4, name='xuan_1462360348678', age=52}, User{id=5, name='xuan_1462360348693', age=87}, User{id=6, name='xuan_1462360348703', age=85}, User{id=7, name='xuan_1462360348714', age=20}, User{id=8, name='xuan_1462360348725', age=72}, User{id=9, name='xuan_1462360348735', age=33}, User{id=10, name='xuan_1462360348747', age=88}]
如我们所料 没有钥匙是获取不了数据库类容的