android contentProvider

4 篇文章 0 订阅
2 篇文章 0 订阅

一年没有搞 android 了,今天在重新复习一下基本知识,写了点代码,,,,待续


ContentProvider  
android 
 写了点,终于测试通过了,下面就把思路说一些,以方自己再次忘记
 
1 创建类 实现  contentprovider
 
public class StudentProvider extends ContentProvider {


    private DBHelper dbHelper;
    private Context context;

     Cursor cursor;

    private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);


    private static  final int STUDENTS=1;
    private  static final int STUDENT=2;


    static {
        MATCHER.addURI("com.tools.PersonProvider", "student",STUDENTS);
        MATCHER.addURI("com.tools.PersonProvider", "student/#",STUDENT);
    }


    @Override
    public boolean onCreate() {

        dbHelper=new DBHelper(getContext());

        return false;
    }


    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
        SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase();

        switch (MATCHER.match(uri)){
            case 1:
              //  return sqLiteDatabase.query("student",projection,selection,selectionArgs,null,null,sortOrder);


                  //return  sqLiteDatabase.rawQuery("select * from student", null);
                return sqLiteDatabase.query("student", projection, selection, selectionArgs,
                    null, null, sortOrder);


            case 2:
                long rowid = ContentUris.parseId(uri);// 返回要操作的id
                String where = "id=" + rowid;
                if (selection != null && !"".equals(selection.trim())) {
                    where += "and" + selection;
                }
                return sqLiteDatabase.query("student", projection, where, selectionArgs, null,
                        null, sortOrder);
            default:
                throw new IllegalArgumentException("cdcdcd error");
        }

    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        return null;
    }
    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        return 0;
    }

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



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

 
 
2 创建数据库帮助类 实现 sqliteOpenHelper
 
public class DBHelper extends SQLiteOpenHelper{

    private static final String DATABASE = "test";

    private static final int VERSION =1;

    public DBHelper(Context context) {
        super(context, DATABASE, null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String sql = "Create table student(" +
                " id INTEGER PRIMARY KEY AUTOINCREMENT," +
                " name varchar, age Integer)";

        db.execSQL(sql);

    }

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

    }
}

3 注册 contentprovider
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.demo.db" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <provider
            android:authorities="com.tools.StudentProvider"
            android:name="com.tools.StudentProvider"
            android:exported="true"
            />
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

4 测试


public class MainActivity extends AppCompatActivity {



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


        Thread thread =new Thread(new Runnable() {
            @Override
            public void run() {
                Uri uri = Uri.parse("content://com.tools.StudentProvider/student");// 根据标识名得到内容提供者
                //ContentResolver cr = MainActivity.this.getContentResolver();

                ContentResolver cr =MainActivity.this.getContentResolver();
                Cursor cursor = cr.query(uri, null, null, null, null);

                while (cursor.moveToNext()){
                    Log.v("rs", cursor.getString(cursor.getColumnIndex("name")) + "id:" + cursor.getInt(cursor.getColumnIndex("id")));

                }
            }
        });

        thread.start();

        Log.v("end","end");


    }


 

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值