在应用之间共享数据
通过ContentProvider封装数据
ContentProvider使用的Uri语法结构如下:
content://authority/data_path/id
content:通用前缀,表示该uri用于ContentProvider定位资源
authority:是授权者名称,用来确定具体由哪一个ContentProvider提供资源。因此一般anthority都由类小写的全程组成,以保证唯一性。
data_path:是数据路径,用来确定请求的是哪一个数据集
id:是数据编号,用来请求单条数据。如果是多条,这个字段请忽略。
通过ContentResolver访问数据
使用内容组件获取通信信息
运行时,动态申请权限
利用ContentResolver读写联系人
利用ContentObserver监听短信
使用Servet和Client进行通信实例
server-UserDBHelper.java
package com.example.server.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class UserDBHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "user.db";
public static final String TABLE_NAME = "user_info";
public static final int DB_VERSION = 1;
public static UserDBHelper mHelper = null;
private SQLiteDatabase mRDB = null;
private SQLiteDatabase mWDB = null;
public static UserDBHelper getInstance(Context context) {
if (mHelper == null) {
mHelper = new UserDBHelper(context);
}
return mHelper;
}
public UserDBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
public SQLiteDatabase openReadLink() {
if (mRDB == null || !mRDB.isOpen()) {
mRDB = mHelper.getReadableDatabase();
}
return mRDB;
}
public SQLiteDatabase openWriteLink() {
if (mWDB == null || !mWDB.isOpen()) {
mWDB = mHelper.getWritableDatabase();
}
return mWDB;
}
public void closeDBLink() {
if (mRDB != null && mRDB.