人人网官方Android客户端源码分析(3)
2011-11-29 22:02
471 查看
3. 开发Android应用访问renren.db中的数据
从上面分析中我们已经知道renren.db中表结构,及访问特定表对应的Uri,如我们可以通过content://com.renren.mobile.provider/account访问renren.db中的account表等等。下面我们写个很简单的例子来访问account表中的account和ticket字段。
main.xml根节点下简单添加2个TextView,如下:
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TextView" />
复制代码
将account和ticket信息显示到TextView中,类代码如下
public class RenRenExtActivity extends Activity {
private static final Uri ACCOUNT_CONTENT_URI = Uri
.parse("content://com.renren.mobile.provider/account");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView1 = (TextView) findViewById(R.id.textView1);
textView1.setText("Sorry.");
TextView textView2 = (TextView) findViewById(R.id.textView2);
textView2.setText("Sorry2.");
Cursor cursor = getContentResolver().query(ACCOUNT_CONTENT_URI, null,
null, null, null);
List<Map<String, String>> resultList = converCursorToList(cursor);
if (!resultList.isEmpty()) {
Map<String, String> map = resultList.get(0);
textView1.setText(map.get("account"));
textView2.setText(map.get("ticket"));
}
}
private List<Map<String, String>> converCursorToList(Cursor cursor) {
List<Map<String, String>> result = new ArrayList<Map<String, String>>();
if (cursor == null) {
return Collections.emptyList();
}
// 遍历Cursor结果集
while (cursor.moveToNext()) {
// 将结果集中的数据存入ArrayList中
Map<String, String> map = new HashMap<String, String>();
map.put("account",
cursor.getString(cursor.getColumnIndex("account")));
map.put("ticket", cursor.getString(cursor.getColumnIndex("ticket")));
result.add(map);
}
return result;
}
}
复制代码
需要指出的是,上面的应用程序需要操作人人网android客户端中的数据库,因此要记得在AndroidMantifest.xml文件中为该应用程序授权。也就是在该文件的根元素中添加如下元素:
<uses-permission android:name="com.renren.mobile.android.permission.PERMISSION_ADD_ACCOUNT" />
如果你android手机中安装有人人网Android客户端且曾经使用过,那么renren.db中应该有数据存在,把上面应用打包为apk文件安装到你android手机中,运行它,应该能看到屏幕中将显示你的人人网账号及一串ticket,该ticket是人人网Andriod客户端部分功能与人人网服务器通信的sid。
同理,也可以使用其它特定Uri访问手机中renre.db中特定的表,如friends表等等,所有Uri详见RenRenProvider代码。
http://www.apkway.com/forum.php?mod=viewthread&tid=4839
从上面分析中我们已经知道renren.db中表结构,及访问特定表对应的Uri,如我们可以通过content://com.renren.mobile.provider/account访问renren.db中的account表等等。下面我们写个很简单的例子来访问account表中的account和ticket字段。
main.xml根节点下简单添加2个TextView,如下:
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TextView" />
复制代码
将account和ticket信息显示到TextView中,类代码如下
public class RenRenExtActivity extends Activity {
private static final Uri ACCOUNT_CONTENT_URI = Uri
.parse("content://com.renren.mobile.provider/account");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView1 = (TextView) findViewById(R.id.textView1);
textView1.setText("Sorry.");
TextView textView2 = (TextView) findViewById(R.id.textView2);
textView2.setText("Sorry2.");
Cursor cursor = getContentResolver().query(ACCOUNT_CONTENT_URI, null,
null, null, null);
List<Map<String, String>> resultList = converCursorToList(cursor);
if (!resultList.isEmpty()) {
Map<String, String> map = resultList.get(0);
textView1.setText(map.get("account"));
textView2.setText(map.get("ticket"));
}
}
private List<Map<String, String>> converCursorToList(Cursor cursor) {
List<Map<String, String>> result = new ArrayList<Map<String, String>>();
if (cursor == null) {
return Collections.emptyList();
}
// 遍历Cursor结果集
while (cursor.moveToNext()) {
// 将结果集中的数据存入ArrayList中
Map<String, String> map = new HashMap<String, String>();
map.put("account",
cursor.getString(cursor.getColumnIndex("account")));
map.put("ticket", cursor.getString(cursor.getColumnIndex("ticket")));
result.add(map);
}
return result;
}
}
复制代码
需要指出的是,上面的应用程序需要操作人人网android客户端中的数据库,因此要记得在AndroidMantifest.xml文件中为该应用程序授权。也就是在该文件的根元素中添加如下元素:
<uses-permission android:name="com.renren.mobile.android.permission.PERMISSION_ADD_ACCOUNT" />
如果你android手机中安装有人人网Android客户端且曾经使用过,那么renren.db中应该有数据存在,把上面应用打包为apk文件安装到你android手机中,运行它,应该能看到屏幕中将显示你的人人网账号及一串ticket,该ticket是人人网Andriod客户端部分功能与人人网服务器通信的sid。
同理,也可以使用其它特定Uri访问手机中renre.db中特定的表,如friends表等等,所有Uri详见RenRenProvider代码。
http://www.apkway.com/forum.php?mod=viewthread&tid=4839
相关文章推荐
- 人人网官方Android客户端源码分析(1)
- 人人网官方Android客户端源码分析(2)
- 人人网官方Android客户端源码分析(1)
- git-osc-android客户端之源码分析1
- git-osc-android客户端之源码分析4
- android adb 源码框架分析(5 客户端)
- ECClient红孩子android客户端源码分析之图片加载自动刷新listview
- 开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start
- Androidpn 消息推送安卓客户端源码分析
- bVNC 客户端源码分析(android)
- Android之开源中国客户端源码分析(一)
- 开源中国 OsChina Android 客户端源码分析(8)数据库Sqlite
- 开源中国 OsChina Android 客户端源码分析(2)滑动菜单DrawerLayout
- xmpp/aSmack源码分析(基于android客户端)
- 开源中国 OsChina Android 客户端源码分析(7)二维码生成对话框
- 开源中国 OsChina Android 客户端源码分析(11)缓存对象
- 【开源中国Android客户端】源码分析(二)网络数据传输接口
- 开源中国 OsChina Android 客户端源码分析(10)双击退出程序
- 开源中国 OsChina Android 客户端源码分析(12)清理缓存