自定义内容提供者

一. 创建自定义类,继承ContentProvider

public class MyProvider extends ContentProvider {
    SQLiteDatabase db;

    @Override
    public boolean onCreate() {
        MyHelper myHelper = new MyHelper(getContext()); 
        db = myHelper.getWritableDatabase();// 获取操作数据库的类
        return true;
    }

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

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

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
        db.insert("good",null,values);
        return uri;
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
        return db.delete("good",selection,selectionArgs);
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
        return db.update("good",values,selection,selectionArgs);
    }
}

二、清单文件注册

<provider
            android:exported="true"
            android:authorities="com.huohuo"
            android:name=".MyProvider"
              </provider>

现在就可以使用拉 让我们来操作一下吧!

public class Fragment4 extends Fragment {

    private Button add;
    private Button delete;
    private Button update;
    private Button qurey;

    public void bindView(){
        add = (Button) view.findViewById(R.id.add);
        delete = (Button) view.findViewById(R.id.delete);
        update = (Button) view.findViewById(R.id.update);
        qurey = (Button) view.findViewById(R.id.qurey);
    }

    View view;
    ContentResolver contentResolver;
    Uri uri;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {
        view= inflater.inflate(R.layout.fragment4, null);
        uri = Uri.parse("content://com.huohuo");
        contentResolver= getActivity().getContentResolver();
        bindView();
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ContentValues contentValues = new ContentValues();
                contentValues.put("name","李佩阳");
                contentResolver.insert(uri,contentValues);
                Toast.makeText(getContext(), "添加成功", Toast.LENGTH_SHORT).show();
            }
        });

        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                contentResolver.delete(uri,"id=?",new String[]{"2"});
                Toast.makeText(getContext(), "删除成功", Toast.LENGTH_SHORT).show();
            }
        });

        update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(), "更新成功", Toast.LENGTH_SHORT).show();
            }
        });

        qurey.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor query = contentResolver.query(uri, null, null, null, null);
                while(query.moveToNext()){
                    Log.i("good",query.getString(1));
                }
                Toast.makeText(getContext(), "查询成功", Toast.LENGTH_SHORT).show();
            }
        });

        return view;
    }
}

猜你喜欢

转载自blog.csdn.net/leeyoung59/article/details/88227417