国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用ContentProvise獲取APP中的數據

2019-11-09 17:27:08
字體:
來源:轉載
供稿:網友

提供數據的項目:A

獲取數據的項目:B

1.先在A項目里建一個類MyContentPRoviser,繼承ContentProvider,并重新方法

2.需要在清單文件里面配置,authoritiies相當于地址,name是類的名字,exported為是否開放

<!--配置內容提供者--><provider    android:authorities="com.zking.a24provider.PERSON"    android:name=".MyContentProvider"    android:exported="true"></provider>
3.在B項目中,獲取內容訪問者ContentResolver,這樣通過Uri得到A項目清單文件里的提供者的地址authoritiie,
Uri中需要添加協議content://+地址,這樣簡單幾步就可以獲取到A項目中MyContentProviser里的方法了。
ContentResolver cr= getContentResolver();
Uri uri=Uri.parse("content://com.zking.a24provider.PERSON");
//通過Uri進行查詢,返回一個Cursor
cr.query(uri, String[] projection, String selection, String[] selectionArgs,String sortOrder)     
//將一組數據插入到Uri 指定的地方         
cr.insert(uri, ContentValues values)
//更新Uri指定位置的數據
cr.update(uri, ContentValues values, String where, String[] selectionArgs)
//刪除指定Uri并且符合一定條件的數據
cr.delete(uri, String where, String[] selectionArgs)
4.這里重要的一點是URI,Uri代表了要操作的數據,Uri主要包含了兩部分信息
   ①需要操作的ContentProvider   ②對ContentProvider中的什么數據進行操作
例如:
    查詢所有    content://com.zking.a24provider.PERSON/student
    查詢id=1的  content://com.zking.a24provider.PERSON/student/1
所以在提供數據的項目A中需要用uriMatcher添加規則,用于匹配Uri
   ①把需要匹配Uri路徑全部給注冊上  // 常量UriMatcher.NO_MATCH表示不匹配任何路徑的返回碼(-1)。  UriMatcher  uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);  // 若match()方法匹配content://com.zking.a24provider.PERSON/student路徑則返回匹配碼為1  uriMatcher.addURI("com.zking.a24provider.PERSON","student",1);  // 若match()方法匹配content://com.zking.a24provider.PERSON/student/1路徑則返回匹配碼為2  uriMatcher.addURI("com.zking.a24provider.PERSON","student/#",2);  ②注冊完需要匹配的Uri后,就可以使用uriMatcher.match(uri)方法對輸入的Uri進行匹配5.實例代碼
A項目 MyContentProvider類 
package com.zking.a24provider;import android.content.ContentProvider;import android.content.ContentUris;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;import android.support.annotation.Nullable;import android.util.Log;import util.DbUtil;/** * Created by Administrator on 2017/2/7. */public class MyContentProvider extends ContentProvider {    private SQLiteDatabase sqLiteDatabase;    private UriMatcher uriMatcher;    @Override    public boolean onCreate() {        Log.i("text","onCreat");        DbUtil dbUtil = new DbUtil(getContext(), "dataa.db", null, 2);        sqLiteDatabase = dbUtil.getReadableDatabase();        //實例化URI匹配器        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);        //添加規則        //1.查所有        uriMatcher.addURI("com.zking.a24provider.PERSON","student",1);        //2.查單個  /#查詢的條件,類似通配符        uriMatcher.addURI("com.zking.a24provider.PERSON","student/#",2);        return false;    }    @Nullable    @Override    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {        Log.i("text","query");        //根據URI匹配器開始匹配        int code=uriMatcher.match(uri);        switch (code){            case 1: //查詢所有                return sqLiteDatabase.query(false,"student",projection,selection,selectionArgs,null,null,sortOrder,null);            case 2: //查詢單個                //獲取#號的值                long id= ContentUris.parseId(uri);                return sqLiteDatabase.rawQuery("select * from student where _id=?",new String[]{""+id});        }        //獲取數據庫中所有的數據        return sqLiteDatabase.query(false,"student",projection,selection,selectionArgs,null,null,sortOrder,null);    }    @Nullable    @Override    public String getType(Uri uri) {        Log.i("text","getType");        return null;    }    @Nullable    @Override    public Uri insert(Uri uri, ContentValues values) {        Log.i("text","insert");        return null;    }    @Override    public int delete(Uri uri, String selection, String[] selectionArgs) {        Log.i("text","delete");        return 0;    }    @Override    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {        Log.i("text","update");        return 0;    }}
B項目LAUNCHER  Main2activity
package com.zking.animation;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.EditText;public class Main2Activity extends AppCompatActivity {    private ContentResolver cr;    private EditText mian2_id;    private Uri uri;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        mian2_id = (EditText) findViewById(R.id.mian2_id);        //獲取內容訪問者        cr = getContentResolver();    }    public void getAllData(View view){        String id1=mian2_id.getText().toString();        //查詢單個        if("".equals(id1)){            uri = Uri.parse("content://com.zking.a24provider.PERSON/student/"+id1);        }else{//查詢所有            uri = Uri.parse("content://com.zking.a24provider.PERSON/student");        }        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);        }    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保山市| 汶上县| 阿图什市| 上饶县| 基隆市| 莎车县| 闵行区| 西畴县| 蒲城县| 灌南县| 婺源县| 湖北省| 抚宁县| 英吉沙县| 那曲县| 枣强县| 涟源市| 车致| 达州市| 沂南县| 伊宁县| 崇信县| 延津县| 布尔津县| 高青县| 汉沽区| 莒南县| 简阳市| 永州市| 固镇县| 万载县| 信阳市| 璧山县| 元谋县| 东源县| 蒙城县| 临澧县| 西安市| 平定县| 克什克腾旗| 大庆市|