java 학습의 콘텐츠provider

오늘은 4대 구성 요소 중 하나인 콘텐츠provier에 대해 이야기해 보겠습니다. 안드로이드에서 데이터Shared Preferences, 네트워크 저장, 파일 저장, 외부 저장, SQLite 등 5가지 저장 방식을 사용하지만 프로그램 간의 데이터 공유를 사용하려면 콘텐츠provider를 사용해야 합니다. 콘텐츠provider는 주로 프로필을 통해 이 데이터를 읽을 수 있음을 설명합니다.그리고 콘텐츠resolver와 콘텐츠provider를 통해 연결을 맺습니다. 콘텐츠provider 안의uri는 구체적인 형식이 있습니다. 예를 들어 다음과 같습니다.content://com.jk.contentproviderdemo.MyProvider/person첫 번째 부분은 고정된 것입니다. 두 번째 가방 이름, 세 번째 테이블 이름, 즉 데이터베이스 이름입니다. 아직 세부 사항을 말하지 못했을 수도 있지만 대략적으로는 이렇습니다. 보충할 것이 있으면 뒤에서 업데이트하겠습니다.
package com.jk.contentproviderdemo.dao;

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

public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {
	public static String DATABASENANE = "person.db";

	public PersonSQLiteOpenHelper(Context context) {
		// create a database named person.db
		super(context, DATABASENANE, null, 1);

	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// create a table that contain _id,name,number
		db.execSQL("create table person (_id integer primary key autoincrement , name text , number text)");

	}

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

	}

}
package com.jk.contentproviderdemo;

import com.jk.contentproviderdemo.dao.PersonSQLiteOpenHelper;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;

public class MyProvider extends ContentProvider {

	// override the delete method
	@Override
	public int delete(Uri uri, String selection, String[] selectionArgs) {
		System.out.println("delete");
		return 0;
	}

	// override the get type method
	@Override
	public String getType(Uri uri) {
		System.out.println("get type");
		return null;
	}

	// override the insert method
	@Override
	public Uri insert(Uri uri, ContentValues values) {
		System.out.println("insert");
		return null;
	}

	// override the onCreate method
	@Override
	public boolean onCreate() {
		System.out.println("oncreate");
		return false;
	}

	// override the query method
	@Override
	public Cursor query(Uri uri, String[] projection, String selection,
			String[] selectionArgs, String sortOrder) {
		System.out.println("query");

		// get a databasehelper class object
		PersonSQLiteOpenHelper per = new PersonSQLiteOpenHelper(getContext());
		// get a writable object
		SQLiteDatabase db = per.getWritableDatabase();
		// begin to query and get a Cursor
		Cursor c = db.query("person", projection, selection, selectionArgs,
				null, null, null);
		return c;

	}

	// override the update method
	@Override
	public int update(Uri uri, ContentValues values, String selection,
			String[] selectionArgs) {
		System.out.println("updata");
		return 0;
	}

}
package com.jk.contentproviderdemo;

import com.jk.contentproviderdemo.dao.PersonSQLiteOpenHelper;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;

public class MainActivity extends Activity {

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

		// insert a data
		init();

	}

	private void init() {
		// PersonSQLiteOpenHelper per=new PersonSQLiteOpenHelper(this);
		// SQLiteDatabase db=per.getWritableDatabase();
		// ContentValues contentvalues=new ContentValues();
		// contentvalues.put("name", "ni");
		// contentvalues.put("number", "1413");
		// db.insert("person", null, contentvalues);
	}

}

사용 권한:
 <provider android:name="com.jk.contentproviderdemo.MyProvider"
            android:authorities="com.jk.contentproviderdemo.MyProvider"
            android:exported="true"></provider>
    </application>

보조 애플리케이션
package com.example.contentproviderdemotest;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.view.Menu;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ContentResolver cr = this.getContentResolver();
		// init uri
		Uri myUri = Uri
				.parse("content://com.jk.contentproviderdemo.MyProvider/person");
		
		// get a object that can save data
		ContentValues cv = new ContentValues();
		// call the insert method that belong to uri
		cr.insert(myUri, cv);

		// call the query method that belong to uri
		Cursor c = cr.query(myUri, null, null, null, null);
		// show the data
		while (c.moveToNext()) {
			int id = c.getInt(c.getColumnIndex("_id"));
			String name = c.getString(1);
			String number = c.getString(2);
			System.out.println(id + name + number);
		}
	}

}

좋은 웹페이지 즐겨찾기