c
YouTube DATA API (3) - Android ContentProvider 본문
아래 글 YouTube DATA API (1) 을 토대로 Android ContentProvider 를 만들어 봤습니다.
Android 용 Library 와 Source 는 아래에서 확인하실 수 있습니다.
http://code.google.com/p/android-provider-for-google-api/
Sample Project 에서는 이를 이용한 예제를 보여 줍니다.
사용방법은 간단합니다.
1. jar 파일 다운로드
2. AndroidManifest.xml 파일에 아래 코드 추가
<provider
android:name="com.iuchannel.android.provider.YouTubeProvider"
android:authorities="(PackageName).YouTubeProvider" android:grantUriPermissions="true" />
3. 아래와 같은 Uri 로 query 를 하면 결과값을 Cursor 로 받을 수 있다.
public class MainActivity extends ListActivity {
private final static String USER_NAME="MBCClassic";
ListView mListView;
SimpleCursorAdapter mAdapter;
AsyncQueryHandler mHandler;
Uri mUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUri=Uri.parse("content://"+getPackageName()+".YouTubeProvider/user/"+USER_NAME);
mListView=getListView();
mAdapter=new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null,
new String[]{"title"},
new int[]{android.R.id.text1},
SimpleCursorAdapter.NO_SELECTION){
};
mListView.setAdapter(mAdapter);
mHandler=new AsyncQueryHandler(getContentResolver()){
@Override
protected void
onQueryComplete(int token, Object cookie, Cursor cursor){
Log.d("Test", "onQueryComplete");
if(cursor==null){
Log.d("Test", "Cursor=null");
}
if(cursor!=null && cursor.getCount()>0){
Log.d("Test", "Cursor>0");
mAdapter.swapCursor(cursor);
mListView.invalidateViews();
}
};
};
mHandler.startQuery(0, null, mUri, null, null, null, null);
}
}
Cursor 에 넘겨주는 값들은 Const.java 에 정의 되어 있으며 아래와 같습니다.
public final static String PRJ_ID="_id"; |
public final static String PRJ_TITLE="title"; |
public final static String PRJ_PLAYLIST_ID="id"; |
public final static String PRJ_DESCRIPTION="description"; |
public final static String PRJ_SIZE="size"; |
public final static String PRJ_SQDEFAULT="sqDefault"; |
public final static String PRJ_HQDEFAULT="hqDefault"; |
public final static String PRJ_AUTHOR="author"; |
public final static String PRJ_CREATED="created"; |
public final static String PRJ_UPDATED="updated"; |
|
public final static String[] USER_PLAYLIST={ |
PRJ_ID, |
PRJ_PLAYLIST_ID, |
PRJ_CREATED, |
PRJ_UPDATED, |
PRJ_AUTHOR, |
PRJ_TITLE, |
PRJ_DESCRIPTION, |
PRJ_SIZE, |
PRJ_SQDEFAULT, |
PRJ_HQDEFAULT, |
}; |
아래 그림은 위의 간단한 코드로 나온 결과값입니다. 오른쪽그림은 YouTube 사이트에서 보이는 화면이구요.
위 코드에서는 Adapter 에서 title 만을 UI 에 뿌려주었기 때문에, 이와 같이 보이는 것이구요.
PRJ_SIZE, PRJ_UPDATED, PRJ_SQDEFAULT 와 같은 정보들도 같이 뿌려주면 사이트와 거의 동일한 화면을 구성할 수 있습니다.