五分钟学会之contentprovider







package com.example.user.android2lesson_05_contentprovider;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

//    内容提供者是Android系统中专门为应用程序之间的数据通信开发的。
//    正常来说,应用程序之间是不允许进行数据通信的,
//    但是内容提供者的作用就是让别的应用程序访问我们的数据库
//    想要学习内容提供者,需要两个应用程序,一个作为内容的提供者,一个作为应用程序的访问者
//
//    1.创建一个数据库帮助类,用于数据的存储和访问。
//    2.自定义一个内容提供者--》就是创建一个类,继承自contentProvider
//    3.在清单文件中进行注册,表明本App开启了一个内容提供者
//
//    甲方:
//    1.创建数据库
//    2.创建一个内容提供者,并实现对应的增 删 改 查 操作
//    乙方:
//    1.创建一个内容接受者
//    2.通过内容接受者,调用指定的APP的增删改查方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
}

创建一个数据库帮助类,用于数据的存储和访问

package com.example.user.android2lesson_05_contentprovider;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by user on 2016/7/8.
 */
public class DBhelper extends SQLiteOpenHelper{

    public DBhelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
//
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
//        在这里进行创建表的操作
        String sql="CREATE TABLE student(sid int,name text,sex text,age int);";
        sqLiteDatabase.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}
自定义一个内容提供者,创建一个类 继承自contentprovider

package com.example.user.android2lesson_05_contentprovider;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.annotation.Nullable;

/**
 * Created by user on 2016/7/8.
 */
//这里是对其它App如何访问本App数据的处理

public class StudentProvider extends ContentProvider {
//    1.声明两个属性,用来存储操作的对象
    private  DBhelper helper;
    private  SQLiteDatabase sqLiteDatabase;

    @Override
    public boolean onCreate() {
      helper=new DBhelper(getContext(),"student_db",null,1);
        sqLiteDatabase=helper.getReadableDatabase();
        return  true;
    }

    @Nullable
    @Override
    public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
        return null;
    }

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

    @Nullable
    @Override
    public Uri insert(Uri uri, ContentValues contentValues) {
//        如果别的应用调用了添加数据的数据提供者接口,会调用这个方法
//        这里是对调用请求的处理
//        这里将调用者提供的数据插入到Student表中
        sqLiteDatabase.insert("student",null,contentValues);
        return  uri;
    }

    @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;
    }
}
还有别忘记在清单文件中注册

XML..........................

接着创建一个内容提供者,实现CRUD操作

package com.example.user.android2lesson_05_testprovider;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Button insertButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        insertButton= (Button) findViewById(R.id.insertButton);
        insertButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ContentResolver resolver=getContentResolver();
//                创建我们需要插入的数据
                ContentValues values=new ContentValues();
                values.put("sid",1);
                values.put("name","孙二娘");
                values.put("sex","男");
                values.put("age",23);
//                使用内容处理者进行数据的插入
                resolver.insert(Uri.parse("content://com.coderqi.student"),values);
                Toast.makeText(MainActivity.this,"添加成功",Toast.LENGTH_SHORT).show();
            }
        });


    }
}
最后在xml写个控件,基本ok了  欢迎大神们一起讨论,指教









你可能感兴趣的:(Android)