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.본문에 대응하는 실례 소스 코드
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytest 테스트 프레임워크 기본 사용 방법 상세 정보pytest 소개 2. 매개 변수화를 지원하여 테스트할 테스트 용례를 세밀하게 제어할 수 있다. 3. 간단한 단원 테스트와 복잡한 기능 테스트를 지원할 수 있고selenium/appnium 등 자동화 테스트, 인터페...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.