需要调用的APP中的代码
public class DatabaseProvider extends ContentProvider {
private DBHelper dbhelper = null;
private SQLiteDatabase mdb = null;
private static final UriMatcher urimatcher;
private static final String AUTHORITY = "westone.md.enterprisecontracts.database.DatabaseProvider";
private static final int STAFFINFO = 1;
private static final int ENTERPRISE = 2;
private static final int STAFFELEMENT = 3;
private static final int SUBSECTOR = 4;
private static final int SUBSTAFF = 5;
static {
urimatcher = new UriMatcher(UriMatcher.NO_MATCH);
urimatcher.addURI(AUTHORITY, DB_TABLENAME_STAFFINFO, STAFFINFO);
urimatcher.addURI(AUTHORITY, DB_TABLENAME_ENTERPRISE, ENTERPRISE);
urimatcher.addURI(AUTHORITY, DB_TABLENAME_STAFFELEMENT, STAFFELEMENT);
urimatcher.addURI(AUTHORITY, DB_TABLENAME_SUBSECTOR, SUBSECTOR);
urimatcher.addURI(AUTHORITY, DB_TABLENAME_SUBSTAFF, SUBSTAFF);
}
@Override
public boolean onCreate() {
// 初始化MyDBHelper
dbhelper = new DBHelper(this.getContext());
mdb = dbhelper.getReadableDatabase();
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider", "mdb:" + mdb);
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// uri.equals("content://westone.md.enterprisecontracts.DatabaseProvider/tb_staffinfo"
Cursor mCursor = null;
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider",
"query started");
int result = urimatcher.match(uri);
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider", "uri:" + uri);
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider", "result:"
+ result);
switch (result) {
case STAFFINFO:
mCursor = mdb.query(DB_TABLENAME_STAFFINFO, null, null, null, null,
null, null);
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider", "mCursor:"
+ mCursor);
return mCursor;
case ENTERPRISE:
mCursor = mdb.query(DB_TABLENAME_ENTERPRISE, null, null, null,
null, null, null);
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider", "mCursor:"
+ mCursor);
return mCursor;
case STAFFELEMENT:
mCursor = mdb.query(DB_TABLENAME_STAFFELEMENT, null, null, null,
null, null, null);
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider", "mCursor:"
+ mCursor);
return mCursor;
case SUBSECTOR:
mCursor = mdb.query(DB_TABLENAME_SUBSECTOR, null, null, null, null,
null, null);
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider", "mCursor:"
+ mCursor);
return mCursor;
case SUBSTAFF:
mCursor = mdb.query(DB_TABLENAME_SUBSTAFF, null, null, null, null,
null, null);
Log.d("westone.md.enterprisecontracts.database.DatabaseProvider", "mCursor:"
+ mCursor);
return mCursor;
default:
return null;
}
}
@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getType(Uri arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public Uri insert(Uri arg0, ContentValues arg1) {
// TODO Auto-generated method stub
return null;
}
@Override
public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
// TODO Auto-generated method stub
return 0;
}
}
Mannifest中的写法
<provider
android:name="westone.md.enterprisecontracts.database.DatabaseProvider"
android:authorities="westone.md.enterprisecontracts.database.DatabaseProvider"
android:exported="true" />
测试的APP中的代码写法
public class MainActivity extends ActionBarActivity {
private final static String TAG = "com.example.liuchengtest.MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "MainActivity started");
//开放的表:tb_staffinfo,tb_enterprise,tb_staffelement,tb_subsector,tb_substaff,
//获取不同的表,将最后一个表名,改成需要的表名,如tb_staffinfo
Uri uri = Uri.parse("content://westone.md.enterprisecontracts.database.DatabaseProvider/tb_staffinfo");
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(uri, null, null, null, null);
Log.d(TAG, "cursor: " + cursor);
Log.d(TAG, "movetofist status : " + cursor.moveToFirst());
if (cursor == null || !cursor.moveToFirst()) {
Log.d(TAG, "The cursor is null or the stable is null");
return;
} else {
Log.d(TAG, "Begin to print infomation");
//name是表列的title
String name = cursor.getString(cursor.getColumnIndex("name"));//这里加一行输出,要不然while里面输出没有第一行
Log.d(TAG, "" + name);
while (cursor.moveToNext()) {
name = cursor.getString(cursor.getColumnIndex("name"));
Log.d(TAG, "" + name);
}
cursor.close();
}
}
}