How: ContentProvider 기본 기능 핵심 프레임워크(첨삭 및 수정)

검사 기능 모듈:
    1.핵심 함수:
public final Cursor query(Uri uri, String [] projection, String selection, String [] selection Args, String sort Order) 클래스는 Content Resolver의 구성원 함수에 속합니다.
유형 Cursor, Cursor 관리 쿼리가 반환된 테이블로 돌아가기
매개 변수: Uri는 테이블 이름까지 구체적입니다. 프로젝트는 찾을 필드입니다. selection은 selectionArgs와 함께 검색 조건을 결정하고sortOrder는 정렬 방법을 결정합니다.
(자세한 내용은 본문의 마지막 자원 링크 참조)
    2.이 기능의 핵심 구성 완료:
        2.1.데이터베이스 확인 및 도입,eg(android에 내장된 핸드폰 연락처 데이터베이스):
    import android.provider.Contacts.People;
        2.2.manfest에서.xml에서 권한 성명
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.amaker.app"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="4" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".ContentProviderActivity"
            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>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
</manifest>

        2.3.필요에 따라eg(모든 연락처의 이름을 얻습니다. 이 예에서ListView에 결과를 표시하기 때문에 ID 필드를 얻습니다)
        import android.database.Cursor;
        ...
        projection=new String[] {People._ID,People.NAME};         selection=null;         selectionArgs=null;         sortOrder=null;         c=getContentResolver().query(People.CONTENT_URI, projection, selection, selectionArgs, sortOrder); 
이 때 얻은 검색 결과는cursor의 실례 c에 저장되고 c는 결과 데이터 관리에 대한 각종 함수를 제공한다(상세한 내용은 본고의 마지막 자원 링크 참조)
        2.4.결과에 대한 후속 처리,eg(ListView로 표시)
        import android.app.ListActivity;
        import android.widget.ListAdapter;         import android.support.v4.widget.SimpleCursorAdapter;
        ...
        adapter=new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c,new String[] {People.NAME}, new int[] {android.R.id.text1},0);         setListAdapter(adapter);
(SimpleCursorAdapter 함수는 본문의 마지막 자원 링크 참조)
추가 기능 모듈:
    1.핵심 함수:
     public final Uri insert (Uri url, ContentValues values)
     ContentValues's instance(values) is used to store a set of values that the ContentResolver can process.
(본문의 마지막 자원 링크 참조)
    2.이 기능 모듈의 핵심 구성 완료:
        2.1.기록할 데이터베이스,eg(동일 기능 모듈) 확인 및 도입
        2.2.manfest에서.xml에서 해당 데이터베이스에 대한 쓰기 권한,eg(Contacts에 대한 쓰기 권한 설명)
       
        2.3."ContentValues 인스턴스를 사용하여 삽입할 레코드를 로드합니다.eg(이름이""Zuhang""인 연락처 로드)"
        import android.content.ContentValues;
        ...
        private ContentValues peopleToInsert;
        ...
        peopleToInsert=new ContentValues();         peopleToInsert.put(People.NAME, "Zuhang");
        2.4.insert () 함수를 호출하여 데이터베이스에 기록을 기록합니다. (필요하면, insert () 함수의 반환 값을 Uri 실례로 받을 수 있습니다.)
        getContentResolver().insert(People.CONTENT_URI, peopleToInsert);
        2.5.필요에 따라 후속 작업을 추가합니다.eg (삽입된 모든 연락처를 열거합니다)
이전 기능 모듈 참조
수정 기능 모듈:
    1.핵심 함수:
     public abstract int update (Uri uri, ContentValues values, String selection, String[] selectionArgs)
클래스는 ContentResolver에 속합니다.
매개 변수: Uri는 더 나은 곳을 가리킨다. (다른 기능과 달리 업데이트의 매개 변수 Uri 실례는 한 줄로 구체적으로 하려면 Uri.withAppendedId (...) 를 사용할 수 있다.또는 Uri.withAppendedPath(..)이루다ContentValues는 "증가"기능 모듈과 유사한 형식으로 컨텐트를 변경합니다.다음 두 개의 단수로 조회 조건을 지정하다
    2.이 기능의 핵심 구성 완료:
        2.1.기록할 데이터베이스,eg(동일 기능 모듈) 확인 및 도입
        2.2.manfest에서.xml에서 해당 데이터베이스에 대한 권한을 설명합니다.eg(이전 기능 모듈과 같음)
        2.3.ContentValues 실례로 더 나은 내용을 불러옵니다. 삽입 모듈과 유사합니다.eg (이 예에서 이름이'Zuhang'인 첫 번째 기록 이름을'nihao '로 변경합니다)
        import android.content.ContentValues;
        ...
        private ContentValues peopleToUpdate;
        ...
        peopleToInsert=new ContentValues();         peopleToInsert.put(People.NAME, "nihao");
        2.4.'찾기'기능과 Uri를 이용하여 구체적인 기록을 얻는 Uri 실례,eg(본 예는'Zuhang'이라는 첫 번째 기록을 얻는 Uri)
        String[] projectionUpdate=new String[] {People._ID,People.NAME};         Cursor cUpdate=getContentResolver().query(People.CONTENT_URI, projectionUpdate, null, null, null);         cUpdate.moveToFirst();
        Uri uri=Uri.withAppendedPath(People.CONTENT_URI, cUpdate.getString(cUpdate.getColumnIndex(People._ID)));
        2.5.업데이트 함수와 새 데이터 호출,eg
        peopleToUpdate=new ContentValues();         peopleToUpdate.put(People.NAME,"nihao");         selectionUpdate=new String(People.NAME+"='Zuhang'");         selectionUpdateArgs=null;         getContentResolver().update(uri, peopleToUpdate, selectionUpdate, null);
        2.6.기타 후속 작업
삭제 기능 모듈:
    1.핵심 함수:
    public abstract int delete (Uri uri, String selection, String selectionArgs)
Uri는 테이블에 구체적으로 하기만 하면 다른 실현은 이전과 유사하다
이 문서에 언급된 외부 리소스:
    1.query/insert/update/delete 함수 설명
    2.Cursor 클래스 공식 문서
    3.클래스 SimpleCursorAdapter 공식 문서
    4.ContentValues 클래스 공식 문서
    5.Uri 공식 문서
    6.본문에 대응하는 실례 소스 코드

좋은 웹페이지 즐겨찾기