Androidコンテンツプロバイダー

他のプログラムのデータにアクセスします。

コンテンツプロバイダーには、一般的に2つの用途があります。

1.既存のコンテンツプロバイダーを使用して、対応するプログラムのデータを読み取り、操作します。

2.2。独自のコンテンツプロバイダーを作成して、プログラムのデータへの外部アクセスを提供します。

ContentResolverの基本的な使用法

コンテンツプロバイダーで共有されているデータにアクセスするには:ContentResolverクラスを使用する必要があります
このクラスのインスタンスは、ContextのgetContentResolver()メソッドを介して取得できます。
ContentResolverは、データに対するCRUD操作のための一連のメソッドを提供します。

public Uri insert(Uri uri, ContentValues values)
//该方法用于往ContentProvider添加数据。

public int delete(Uri uri, String selection, String[] selectionArgs)
//该方法用于从ContentProvider删除数据。

public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
//该方法用于更新ContentProvider中的数据。

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
//该方法用于从ContentProvider中获取数据。

ContentResolverの追加、削除、変更、およびクエリのメソッドがテーブル名パラメーターを受け取らず、代わりにコンテンツURIと呼ばれるUriパラメーターを使用していることが判明する場合があります。コンテンツURIは、コンテンツプロバイダー内のデータの一意の識別子を確立し、主に次の2つの部分で構成されます。

1:権限:異なるアプリケーションを区別するために使用されます。通常、競合を回避するために、名前付けにはパッケージ名が使用されます。

2:パス:同じアプリケーション内の異なるテーブルを区別するために使用され、通常は権限の後ろに追加されます。

3:最後に、文字列の先頭にプロトコルステートメントを追加する必要もあります。
例えば:

content://com.example.app.provider/table1
content://com.example.app.provider/table2

コンテンツURI文字列を取得した後、パラメーターとして渡す前に、それをUriオブジェクトに解析する必要もあります。コードは次のように表示されます。

Uri uri = Uri.parse("content://com.example.app.provider/table1");

Uri.parse()メソッドを呼び出すだけで、コンテンツURI文字列をUriオブジェクトに解析できます。

table1テーブルのデータをクエリします

Cursor cursor = getContentResolver().query(
	uri,//指定查询某个应用程序下的某一张表
	projection,//指定查询的列名
	selection,//指定where的约束条件
	selectionArgs,//为where中的占位符提供具体的值
	sortOrder);//指定查询结果的排序方式
if(cursor != null){
    
    
	while(cursor.moveToNext()){
    
    
		String column1 = cursor.getString(cursor.getColumnIndex("column1"));
		int column2 = cursor.getInt(cursor.getColumnIndex("column2"));
	}
	cursor.close();
}

データを追加します。

ContentValues values = new ContentValues();
values.put("column1","text");
values.put("column2","1");
getContentResolver().insert(uri,values);

ご覧のとおり、追加されるデータは引き続きContentValuesにアセンブルされ、ContentResolverのinsert()メソッドが呼び出され、UriとContentValuesがパラメーターとして渡されます。

データを更新する

ContentValues values= new ContentValues();
values.put("column1","");
getContentResolver().update(uri,values,"column1 = ? and column2 = ?",new String []{
    
    "text","1"});

上記のコードは、selectionおよびselectionArgsパラメーターを使用して、更新するデータを制約し、すべての行が影響を受けないようにすることに注意してください。

データの一部を削除する

getContentResolver().delete(uri,"column2 = ?",new String[]{
    
    "1"});

おすすめ

転載: blog.csdn.net/i_nclude/article/details/77651216