不root的情况下 查看App的数据表

一直以来查看sqlite的数据库都需要root才能查看,但是公司的好多测试机root起来比较麻烦~~~

最近刚好项目上线,略闲,

于是决定写一个library工程便于以后调试代码

关键代码如下

一、查看当前app的数据库

context.databaseList()
其中databaseList方法是ContextWrapper类中的一个方法定义如下
 @Override

    public String[] databaseList() {
        return mBase.databaseList();
    }

二、查看库中的数据表

SQLiteDatabase db = dbHelper.getWritableDatabase();

Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
if (c.moveToFirst()) {
	while (!c.isAfterLast()) {
		tables.add(c.getString(0));//数据表
		c.moveToNext();
	}
}

三、查看数据表中的数据

	DbHelper db = new DbHelper(getContext(), databaseName);
		Cursor c = db.getWritableDatabase().query(tableName, null, null, null, null, null, null);
		String[] columnNames = c.getColumnNames();
		ArrayList<String> datas = new ArrayList<String>();
		StringBuilder sb = new StringBuilder();
		if (c.moveToFirst()) {
			while (!c.isAfterLast()) {
				sb.setLength(0);
				for (String columnName : columnNames) {
					int columnIndex = c.getColumnIndex(columnName);
					String colValue = c.getString(columnIndex);
					sb.append(columnName).append(": ").append(colValue).append("\n");
				}
				datas.add(sb.toString());
				Log.d("table_" + tableName, sb.toString());
				c.moveToNext();
			}
		}

以上代码除了databaseList() 这个方法查了好久以外,其他还相对简单点


其中。查看app表的数据刚开始打算仿照root explorer做一个浏览数据的控件。但是想了一下感觉比较复杂,目前还未实现

工程的链接在此

https://github.com/droidcoffee/yolanda/tree/master/yolanda_Android


注意使用方法,将工程作为一个library工程引入

同时修改主工程的project.properties文件增加如下配置即可。

manifestmerger.enabled=true
这样可以使library中AndroidManifest.xml中配置的Activity生效。

也就是不用copy到主工程中重新配置了。


遇到问题的大家可以加群299306868

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。