使用android studio 建两个modul,一个是内容提供者,一个是内容访问者
如果想要访问者能访问到提供者的内容,那必须在提供者一方写一个类,这个类要继承ContentProvider,接着要实现他的6个方法
public class MyContentProvider extends ContentProvider { private SQLiteDatabase db; private UriMatcher uriMatcher; @Override public boolean onCreate() { DbUtil dbUtil=new DbUtil(getContext(),"G150820.db",null,2); db = dbUtil.getReadableDatabase(); uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); //01.查询所有 content://com.zking.g150820_andorid16_sqlite.PERSON/student uriMatcher.addURI("com.zking.g150820_andorid16_sqlite.PERSON","student",1); //02.查询单个 content://com.zking.g150820_andorid16_sqlite.PERSON/student/3 uriMatcher.addURI("com.zking.g150820_andorid16_sqlite.PERSON","student/#",2); return false; } @Nullable @Override public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) { //根据URI匹配器开始匹配Uri int code=uriMatcher.match(uri); switch (code){ case 1: //查询所有 return db.query(false,"student",strings,s,strings1,null,null,s1,null); case 2: //查询单个 long id=ContentUris.parseId(uri); return db.rawQuery("select * from student where _id=?",new String[]{id+""}); } return null; } @Nullable @Override public String getType(Uri uri) { return null; } @Nullable @Override public Uri insert(Uri uri, ContentValues contentValues) { return null; } @Override public int delete(Uri uri, String s, String[] strings) { return 0; } @Override public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { return 0; } }
接下来内容访问者这边是,由访问者这边对内容提供者进行相应的操作(增、删、改、查)
public class MainActivity extends AppCompatActivity { private EditText et_main_id; private Uri uri; private ContentResolver cr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取内容访问者 cr = getContentResolver(); et_main_id = (EditText) findViewById(R.id.et_main_id); } public void getData(View view){ //判断输入框的值是否为空 if(TextUtils.isEmpty(et_main_id.toString())){ //查询所有 uri = Uri.parse("content://ghq.zking.com.ghq_android_16.PERSON/student"); }else{ //查询单个 String id=et_main_id.getText().toString(); uri=Uri.parse("content://ghq.zking.com.ghq_android_16.PERSON/student/"+id); } Cursor cursor=cr.query(uri,null,null,null,null); while(cursor.moveToNext()){ int id=cursor.getInt(cursor.getColumnIndex("_id")); String name=cursor.getString(cursor.getColumnIndex("name")); int age=cursor.getInt(cursor.getColumnIndex("age")); Log.i("test",id+" "+name+" "+age); } } }