ContentProvider是不同应用程序之间进行数据交换的标准API,ContentProvider以某种Uri的形式对外提供数据,允许其他应用访问或修改数据;其他应用程序使用ContentResolver根据Uri去访问操作指定数据。
人人网Android客户端也是使用ContentProvider对需要保存于Android客户端的数据进行管理。
1. renren.db
SQLLiteOpenHelper是Android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新。一般的用法是创建SQLiteOpenHelper的子类,并扩展它的onCreate(SQLiteDatabasedb)和onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)方法。
人人网Android客户端使用该方法创建及修改用户手机中的人人网数据库(renren.db)。
下面是RenRenProvider$DatabaseHelper的代码:

  1. public class RenRenProvider$DatabaseHelper extends SQLiteOpenHelper {
  2. public RenRenProvider$DatabaseHelper(Context context) {
  3. super(context, "renren.db", null, 71);
  4. }

  5. @Override
  6. public void onCreate(SQLiteDatabase db) {
  7. db.execSQL("CREATE TABLE pic (_id INTEGER PRIMARY KEY,url TEXT UNIQUE ON CONFLICT REPLACE,_data TEXT,size INTEGER);");
  8. db.execSQL("CREATE TABLE account (_id INTEGER PRIMARY KEY,uid INTEGET,account TEXT UNIQUE ON CONFLICT REPLACE,pwd TEXT,proxy INTEGER,sessionkey TEXT,srt_key TEXT,ticket TEXT,name TEXT,headphoto BLOB,isdefault INTEGER,last_login INTEGER,friend_count INTEGER);");
  9. db.execSQL("CREATE TABLE home (_id INTEGER PRIMARY KEY,item_id INTEGER UNIQUE ON CONFLICT REPLACE,data BLOB);");
  10. db.execSQL("CREATE TABLE profile (_id INTEGER PRIMARY KEY,type INTEGER UNIQUE ON CONFLICT REPLACE,data BLOB);");
  11. db.execSQL("CREATE TABLE friends (_id INTEGER PRIMARY KEY,uid INTEGER UNIQUE ON CONFLICT REPLACE,username TEXT,headurl TEXT,doing TEXT,nameindex TEXT,namepinyin TEXT,friendgroup TEXT,network TEXT,gender TEXT,isfriend INTEGER,suggest_text_1 TEXT,suggest_intent_query TEXT);");
  12. db.execSQL("CREATE TABLE messages (_id INTEGER PRIMARY KEY,messageid INTEGER UNIQUE ON CONFLICT REPLACE,message BLOB);");
  13. db.execSQL("CREATE TABLE favorites (_id INTEGER PRIMARY KEY,favoriteid BIGINT UNIQUE ON CONFLICT REPLACE,favoriteowner INTEGER,type INTEGER,favorite BLOB);");
  14. db.execSQL("CREATE TABLE emonticons (_id INTEGER PRIMARY KEY,url TEXT,emotion TEXTUNIQUE ON CONFLICT REPLACE,img BLOB,size INTEGER,_data TEXT);");
  15. db.execSQL("CREATE TABLE favoritefriends (_id INTEGER PRIMARY KEY,owner INTEGER,uid INTEGER,name TEXT);");
  16. db.execSQL("CREATE TABLE chathistory (_id INTEGER PRIMARY KEY,uid INTEGER,tochatid INTEGER,chatmessage TEXT,comefrom INTEGER,chatname TEXT,chattime LONG);");
  17. }

  18. @Override
  19. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  20. db.execSQL("DROP TABLE IF EXISTS pic");
  21. db.execSQL("DROP TABLE IF EXISTS account");
  22. db.execSQL("DROP TABLE IF EXISTS home");
  23. db.execSQL("DROP TABLE IF EXISTS profile");
  24. db.execSQL("DROP TABLE IF EXISTS friends");
  25. db.execSQL("DROP TABLE IF EXISTS messages");
  26. db.execSQL("DROP TABLE IF EXISTS favorites");
  27. db.execSQL("DROP TABLE IF EXISTS emonticons");
  28. db.execSQL("DROP TABLE IF EXISTS favoritefriends");
  29. db.execSQL("DROP TABLE IF EXISTS favoritefriends");
  30. db.execSQL("DROP TABLE IF EXISTS chathistory");
  31. onCreate(db);
  32. }
  33. }
复制代码

从代码中我们可以看到人人网Android客户端在用户手机上创建了renren.db数据库,数据库中共有10张表,分别为pic、account、home、profile、friends、messages、favorites、emonticons、favoritefriends、chathistory。

http://www.apkway.com/forum.php?mod=viewthread&tid=4837

更多相关文章

  1. 使用adb工具访问sqlite数据库
  2. android利用websocket协议与服务器通信
  3. android 的短信数据库的读取
  4. Xamarin.Android使用教程之创建第一个Android应用程序
  5. Android读写XML(下)——创建XML文档
  6. Android之——AIDL深入
  7. Android读写XML(下)——创建XML文档
  8. 简单的Android(安卓)UI组件使用
  9. Android(安卓)AIDL示例

随机推荐

  1. Android(安卓)控件之ImageSwitcher图片切
  2. Android通过泛型来简化findViewById
  3. Android(安卓)Fragment回退栈的使用
  4. 【Android(安卓)初学】9、Activity生命周
  5. Android(安卓)Vibrator开启振动功能
  6. android计数器——基础编
  7. android 线程更新view及数据传送
  8. OnConfigurationChanged 配置变化。 屏幕
  9. ActivityLaunchMode
  10. Android中的选项菜单(OptionMenu)使用案例