Uri uri = MediaStore.Files.getContentUri("external");
//"content://" + media + "/"+external+/file;
Uri.parse("content://contacts/presence");
public static final String AUTHORITY = "com.android.contacts";
AUTHORITY与互联网的主机名域名类似,可以这样理解。
Y:\****\alps\packages\providers\ContactsProvider
通过字串,在androidmanifest.xml中定义
android:authorities="contacts;com.android.contacts"
代码相关统一在Y:\****\alps\packages\providers中做处理
Y:\****\alps\frameworks\base\core\java\android\provider
app内部数据库的格式:
以Y:\****\alps\packages\apps\Phone\src\com\mediatek\phone\provider为例:
UTHORITY = "call_history"
Uri.parse("content://" + AUTHORITY);
content://call_history
URIMATCHER.addURI(CallHistory.AUTHORITY, "calls", CALLS);
我目前的理解,只能理解到这个在哪里放置,那么生成的db库就应该在哪儿 至于db库的存放路径,名称
存放路径一般都在data/data/packagename/databases/name
下来就用com.android.phone下的phone.db来详细解析下URI如何创建访问DB的:
在路径Y:\****\alps\packages\apps\Phone\src\com\mediatek\phone\provider下
的类CallHistoryDatabaseHelper.java可以看到这个类继承SQLiteOpenHelper
DATABASE_NAME = "phone.db",使用父类的构造方法创建实例化
protected CallHistoryDatabaseHelper(Context context, String databaseName,
boolean optimizationEnabled) {
super(context, databaseName, null, DATABASE_VERSION);
}
至此文件名和路径就破解了,至于uri和路径如何衔接?继续看
<provider android:name="com.mediatek.phone.provider.CallHistoryContentProvider"
android:authorities="call_history"
android:exported="true"/>
从这里可以看到这个类的域名是call_history,而CallHistoryContentProvider对数据库的操作,则使用的
是CallHistoryDatabaseHelper这个类去做操作,一些创建,刷新,删除等动作。所以这个案子破了
URI如何解析针对相应的.db文件,并且找到相应的.db文件去
./src/com/android/phone/CallCard.java:1795:
personUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, info.person_id);
新增一条记录到数据库中
public static final String AUTHORITY = "call_history";(主机/域名)
数据库内容查看
adb remount
adb shell
cd data/data/com.android.phone/databases
ll
sqlite3 phone.db
.tables为查看数据库列表(android_meta calls)
select * frome calls查看列表内容
//"content://" + media + "/"+external+/file;
Uri.parse("content://contacts/presence");
public static final String AUTHORITY = "com.android.contacts";
AUTHORITY与互联网的主机名域名类似,可以这样理解。
Y:\****\alps\packages\providers\ContactsProvider
通过字串,在androidmanifest.xml中定义
android:authorities="contacts;com.android.contacts"
代码相关统一在Y:\****\alps\packages\providers中做处理
Y:\****\alps\frameworks\base\core\java\android\provider
app内部数据库的格式:
以Y:\****\alps\packages\apps\Phone\src\com\mediatek\phone\provider为例:
UTHORITY = "call_history"
Uri.parse("content://" + AUTHORITY);
content://call_history
URIMATCHER.addURI(CallHistory.AUTHORITY, "calls", CALLS);
我目前的理解,只能理解到这个在哪里放置,那么生成的db库就应该在哪儿 至于db库的存放路径,名称
存放路径一般都在data/data/packagename/databases/name
下来就用com.android.phone下的phone.db来详细解析下URI如何创建访问DB的:
在路径Y:\****\alps\packages\apps\Phone\src\com\mediatek\phone\provider下
的类CallHistoryDatabaseHelper.java可以看到这个类继承SQLiteOpenHelper
DATABASE_NAME = "phone.db",使用父类的构造方法创建实例化
protected CallHistoryDatabaseHelper(Context context, String databaseName,
boolean optimizationEnabled) {
super(context, databaseName, null, DATABASE_VERSION);
}
至此文件名和路径就破解了,至于uri和路径如何衔接?继续看
<provider android:name="com.mediatek.phone.provider.CallHistoryContentProvider"
android:authorities="call_history"
android:exported="true"/>
从这里可以看到这个类的域名是call_history,而CallHistoryContentProvider对数据库的操作,则使用的
是CallHistoryDatabaseHelper这个类去做操作,一些创建,刷新,删除等动作。所以这个案子破了
URI如何解析针对相应的.db文件,并且找到相应的.db文件去
./src/com/android/phone/CallCard.java:1795:
personUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, info.person_id);
新增一条记录到数据库中
public static final String AUTHORITY = "call_history";(主机/域名)
数据库内容查看
adb remount
adb shell
cd data/data/com.android.phone/databases
ll
sqlite3 phone.db
.tables为查看数据库列表(android_meta calls)
select * frome calls查看列表内容