Android Content Provider 상세 설명 및 예시 코드

Android:Content Provider 의 사용.
1.콘 텐 츠 제공 자 안내
2.기 존의 Content Provider 사용
3.자신의 Content Provider 를 정의 합 니 다.
1.콘 텐 츠 제공 자 안내
안 드 로 이 드 애플 리 케 이 션 의 네 가지 핵심 구성 요 소 는 Activity,Service,Broadcast Receiver 와 Content Provider 라 고 합 니 다.안 드 로 이 드 에 서 는 응용 프로그램 이 서로 독립 되 어 있 으 며,모두 자신의 독립 된 가상 컴퓨터 에서 실행 되 고 있다.Content Provider 는 프로그램 간 에 데 이 터 를 공유 하 는 방법 을 제공 합 니 다.한 프로그램 은 Content Provider 를 사용 하여 URI 를 정의 하고 통 일 된 조작 인 터 페 이 스 를 제공 할 수 있 습 니 다.다른 프로그램 은 이 URI 를 통 해 지정 한 데 이 터 를 방문 하여 데이터 의 증가,삭제,수정,검 사 를 할 수 있 습 니 다.
2.기 존의 Content Provider 사용
우 리 는 안 드 로 이 드 시스템 주소록 에서 제공 하 는 Content Provider 를 읽 는 것 을 예 로 들 어 기 존의 Content Provider 를 어떻게 사용 하 는 지 설명 합 니 다.
1,새 항목 Lesson 20ContentProvider 프로젝트.
2.res/layot/main.xml 내용 을 생략 하면 검색 단 추 를 만 드 는 것 입 니 다.
3.MainContentProvider.java 의 내용 은 다음 과 같 습 니 다.

package android.basic.lesson20;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainContentProvider extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button b1 = (Button) findViewById(R.id.Button01);

        OnClickListener ocl = new OnClickListener() {

            @Override
            public void onClick(View v) {
                ContentResolver contentResolver = getContentResolver();
                //         
                Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
                //     
                if (cursor.moveToFirst()) {

                    int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);

                    int displayNameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

                    do {
                        //       ID 
                        String contactId = cursor.getString(idColumn);

                        //        
                        String disPlayName = cursor.getString(displayNameColumn);

                        Toast.makeText(MainContentProvider.this, "     :"+disPlayName,
                                Toast.LENGTH_LONG).show();

                        //               。         0
                        int phoneCount = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

                        if (phoneCount > 0) {

                            //             
                            Cursor phonesCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                            + " = " + contactId, null, null);

                            if (phonesCursor.moveToFirst()) {
                                do {
                                    //          
                                    String phoneNumber = phonesCursor
                                            .getString(phonesCursor
                                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                    Toast.makeText(MainContentProvider.this, "     :"+phoneNumber,
                                            Toast.LENGTH_LONG).show();
                                } while (phonesCursor.moveToNext());
                            }
                        }

                    } while (cursor.moveToNext());
                }
            }
        };

        b1.setOnClickListener(ocl);
    }

}
AndroidManifest.xml 에 추가:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
4.실현 효과 도:


이상 은 안 드 로 이 드 콘 텐 츠 Provider 의 간단 한 실례 입 니 다.다음 에 관련 지식 을 계속 보충 하 겠 습 니 다.여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기