MyContentProvider程序

MySQLiteOpenHelper类

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
   public MySQLiteOpenHelper(Context context) {
       super(context, "person.db", null, 1);
   }

  @Override
  public void onCreate(SQLiteDatabase db) {
      db.execSQL("create table info (_id integer primary key   autoincrement,name varchar(20))");

  }

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

  }
}

MyContentProvider类

public class MyContentProvider extends ContentProvider {
private static  UriMatcher matcher= new UriMatcher(UriMatcher.NO_MATCH);

private static final int SUCCESS=1;

static {
    matcher.addURI("com.example.mycontentprovider","info",SUCCESS);
}
private MySQLiteOpenHelper myhelper;
public MyContentProvider() {
}

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {

    if(matcher.match(uri)==SUCCESS){
        SQLiteDatabase db =myhelper.getWritableDatabase();
        int id=db.delete("info",selection,selectionArgs);
        db.close();
        return id;

    }else{
        throw new IllegalArgumentException("路径不匹配");
    }
}

@Override
public String getType(Uri uri) {
    // TODO: Implement this to handle requests for the MIME type of the data
    // at the given URI.
    throw new UnsupportedOperationException("Not yet implemented");
}

@Override
public Uri insert(Uri uri, ContentValues values) {
    if(matcher.match(uri)==SUCCESS){

        SQLiteDatabase db = myhelper.getWritableDatabase();
        long id=db.insert("info",null,values);
        if(id>0){
            Uri newUri = ContentUris.withAppendedId(uri,id);
            return newUri;
        }
        db.close();
        return uri;
    }else{
        throw new IllegalArgumentException("路径不匹配");
    }
}

@Override
public boolean onCreate() {
    // TODO: Implement this to initialize your content provider on startup.
    myhelper= new MySQLiteOpenHelper(getContext());
    return false;
}

@Override
public Cursor query(Uri uri, String[] projection, String selection,
                    String[] selectionArgs, String sortOrder) {
    if(matcher.match(uri)==SUCCESS){
        SQLiteDatabase db = myhelper.getReadableDatabase();
        Cursor c= db.query("info",projection,selection,selectionArgs,null,null,sortOrder);
        return c;

    }else{
        throw new IllegalArgumentException("路径不匹配");
    }
}

@Override
public int update(Uri uri, ContentValues values, String selection,
                  String[] selectionArgs) {
    if(matcher.match(uri)==SUCCESS){

        SQLiteDatabase db = myhelper.getWritableDatabase();
        int id=db.update("info",values,selection,selectionArgs);
        db.close();
        return id;
    }else{
        throw new IllegalArgumentException("路径不匹配");
    }
}
}  

MainActivity类

public class MainActivity extends AppCompatActivity {

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

    MySQLiteOpenHelper myhelper = new MySQLiteOpenHelper(this);
    SQLiteDatabase db= myhelper.getWritableDatabase();
    for(int i=0;i<3;i++){
        ContentValues values = new ContentValues();
        values.put("name","abc"+i);
        db.insert("info",null,values);
    }
    db.close();

}
}

AndroidMainifest.xml文件

    <provider
        android:name=".MyContentProvider"
        android:authorities="com.example.mycontentprovider"
        android:enabled="true"
        android:exported="true"></provider>          
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,660评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,955评论 18 399
  • 花儿很美丽,心情不美丽
    昙花舞阅读 1,183评论 0 0
  • 了解Objective-C语言的起源 在类的头文件中尽量少引入其他头文件 多用字面量语法,少用与之等价的方法 多用...
    xiaoyaoyouzi阅读 1,326评论 0 0
  • 世间所有的路 我选择慢慢地走 单薄的双肩,背不了太重的行囊 所以,我只带上了快乐和孤单 快乐用来和沿途的风景对话 ...
    胡美云阅读 3,818评论 9 8