コンテンツプロバイダおよびコンテンツ解析者の実現手順
6738 ワード
一、クラスを作成し、ContentProviderを継承し、onCreate,query,insert,update,delete,getTypeメソッド二、リストファイルにproviderノードを宣言する
ここで注意しなければならないのは、android:authoritiesという文字列はブロックに相当し、対応するURIマッチング上で対応するデータにアクセスする必要があることです.また、Android 4.4以上のバージョンでは、android:exported="true"3を構成し、UriMatcherで対応するURIマッチングルールを追加する必要があります
具体的にデータベースの添削を調べると、ここではコードを貼らずに出てきます.次に、他のアプリケーションがこのアプリケーションのデータベースにアクセスします.四、新しいプロジェクトの下で、コンテンツ解析者を使用してデータサンプルコードを取得する.
ここでもう一つ説明しなければならないのは、Uriリソースのアクセスにはcontent://、またcnを追加しなければならないことです.test.providerは、別のプロジェクト再構成表ファイルのandroid:authoritiesフィールドで宣言された文字列に対応し、後に続く文字、例えばquery、insert、deleteなどは、別のプロジェクトでstatic静的コードブロックでUriMatcherオブジェクトaddから入力されたマッチングルールであり、対応する場合には対応する方法が実行される.
<provider
android:authorities="cn.test.provider" android:name="cn.test.contactproviderdemo.MyProvider"
android:exported="true">
provider>
ここで注意しなければならないのは、android:authoritiesという文字列はブロックに相当し、対応するURIマッチング上で対応するデータにアクセスする必要があることです.また、Android 4.4以上のバージョンでは、android:exported="true"3を構成し、UriMatcherで対応するURIマッチングルールを追加する必要があります
private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
// , -1,
private static final int QUERY_SUCCESS = 1;
private static final int INSERT_MATCHED = 2;
private static final int UPDATE_MATCHED = 3;
private static final int DELETE_MATCHED = 4;
static {
// URI
sURIMatcher.addURI("cn.test.provider", "query", QUERY_SUCCESS);
sURIMatcher.addURI("cn.test.provider", "insert", INSERT_MATCHED);
sURIMatcher.addURI("cn.test.provider", "update", UPDATE_MATCHED);
sURIMatcher.addURI("cn.test.provider", "delete", DELETE_MATCHED);
}
具体的にデータベースの添削を調べると、ここではコードを貼らずに出てきます.次に、他のアプリケーションがこのアプリケーションのデータベースにアクセスします.四、新しいプロジェクトの下で、コンテンツ解析者を使用してデータサンプルコードを取得する.
public void query(View v) {
//
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://cn.test.provider/query");
Cursor cursor = resolver.query(uri, null, null, null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
System.out.println("name=" + name);
}
}
public void insert(View v) {
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://cn.test.provider/insert");
ContentValues values = new ContentValues();
values.put("name", " ");
values.put("phone", "489756848");
values.put("age", 12);
Uri insert = resolver.insert(uri, values);
System.out.println(insert);
}
public void delete(View v) {
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://cn.test.provider/delete");
String where = "name = ?";
String [] selectionArgs = {" "};
int delete = resolver.delete(uri, where, selectionArgs);
Toast.makeText(getApplicationContext(), " " + delete + " ", Toast.LENGTH_SHORT).show();
}
public void update(View v) {
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://cn.test.provider/update");
ContentValues values = new ContentValues();
values.put("name", " ");
String where = "name = ?";
String [] selectionArgs = {" "};
int update = resolver.update(uri, values, where, selectionArgs);
Toast.makeText(getApplicationContext(), " " + update + " ", Toast.LENGTH_SHORT).show();
}
ここでもう一つ説明しなければならないのは、Uriリソースのアクセスにはcontent://、またcnを追加しなければならないことです.test.providerは、別のプロジェクト再構成表ファイルのandroid:authoritiesフィールドで宣言された文字列に対応し、後に続く文字、例えばquery、insert、deleteなどは、別のプロジェクトでstatic静的コードブロックでUriMatcherオブジェクトaddから入力されたマッチングルールであり、対応する場合には対応する方法が実行される.