内容提供者

Android四大组件之一内容提供者

ContentProvider内容提供者(四大组件之一)主要用于在不同的应用程序之间实现数据共享的功能
		1.提供方:ContentProvider

(1)创建数据库,自定义类继承SQLiteOpenHelper
(2)自定义内容提供者类,继承ContentProvider,重写insert/delete/update/query方法,向外界提供方法
(3)清单文件中注册内容提供者
2.索要方:ContentResolver
(1)通过Context的getContentResolver方法获得ContentResolver对象
(2)确定uri

内容提供方

首先你要有一个数据库 (数据库简介请链接 https://blog.csdn.net/SageDeceiveFiend/article/details/90245533)

public class MyOpenHelper extends SQLiteOpenHelper {
  public MyOpenHelper(Context context) {
      super(context, "student1702C", null, 1);
  }

  @Override
  public void onCreate(SQLiteDatabase db) {

      db.execSQL("CREATE TABLE student(_id integer PRIMARY KEY AUTOINCREMENT ,NAME VARCHAR(20),sex VARCHAR(20),brith INT,department VARCHAR(20),address VARCHAR(20))");

      db.execSQL("CREATE TABLE score(_id integer  PRIMARY KEY AUTOINCREMENT,stu_id INT ,c_name VARCHAR(20),grade INT)");
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

  }
}

提供者 继承内容提供者重写6个方法


public class MyContentProvider extends ContentProvider {
    private MyOpenHelper myOpenHelper;

    private  SQLiteDatabase sd;

    @Override
    public boolean onCreate() {

        myOpenHelper=new MyOpenHelper(getContext());
        sd = myOpenHelper.getWritableDatabase();
        if(sd==null){
            return false;
        }
       return  true;
    }


    @Override
    public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs,String sortOrder) {
        return sd.query("student",projection,selection,selectionArgs,null,null,sortOrder);
    }


    @Override
    public String getType(Uri uri) {
        return null;
    }


    @Override
    public Uri insert(Uri uri, ContentValues values) {
        sd.insert("student",null,values);
        return uri;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        return sd.delete("student",selection,selectionArgs);
    }

    @Override
    public int update( Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        return sd.update("student",values,selection,selectionArgs);
    }
}

清单文件需要增加provider

<provider
//自定义的uri
    android:authorities="com.content"
    //重写ContentProvider的类
    android:name=".MyContentProvider"
    //设置是否对外公开
    android:exported="true"/>
    </application>

索求方

public class MainActivity extends AppCompatActivity {
    ContentResolver contentResolver;
    //content://为固定格式
    Uri uri = Uri.parse("content://com.content");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//获取索求方
        contentResolver = getContentResolver();

    }

    public void insert(View view) {
    }

    public void select(View view) {
        String[] s = {"name", "address"};


//直接索求方的查找方法
        Cursor query = contentResolver.query(uri, s, null, null, null);
        while (query.moveToNext()) {
            User user = new User();
            user.name = query.getString(query.getColumnIndex("name"));
            user.phone = query.getString(query.getColumnIndex("address"));

            Log.i("###", "select:" + user);
        }
    }

    public void delect(View view) {
    }

    public void update(View view) {
    }

    class User {
        String name;
        String address;

        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", address='" + address + '\'' +
                    '}';
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值