首页 > 系统 > Android > 正文

android 内容提供者查询单个使用URI匹配器

2019-11-09 17:26:57
字体:
来源:转载
供稿:网友

使用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);        }    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表