안드로이드 개발 질문/답변
(글 수 45,052)
A, B 라는 두 개의 어플이 있습니다.
A 에서 생성된 DB 에 B 어플이 접근을 하려면 Content Provider 를 사용하여야 한다고 배웠습니다.
B 쪽에서 리졸버를 통해 가져온다고 배웠습니다.
그런데 A 쪽에 Provider 를 만들어 주고 B 쪽에서 접근하려 하니 잘 안되네요.
간단히 요약하면 제가 코딩한 것은
[A 프로젝트]
TestActivity.java
DB 내용 리스트 출력
Provider.java
static final Uri CONTENT_URI = Uri.parse("content://exam.android.Hello/product");...static final UriMatcher matcher; static { matcher = new UriMatcher(UriMatcher.NO_MATCH); matcher.addURI("exam.android.Hello", "product", ALL_PRODUCT); matcher.addURI("exam.android.Hello", "product/*", ONE_PRODUCT); }... @Override public String getType(Uri uri) {
// TODO Auto-generated method stub
if (matcher.match(uri) == ALL_PRODUCT) {
return "vnd.android.cursor.dir/product";
}
if (matcher.match(uri) == ONE_PRODUCT) {
return "vnd.android.cursor.item/product";
}
return null;
}
Manifest.xml
<provider android:name=".Provider" android:authorities="exam.usoft.Hello" />
[B 프로젝트]
static final String NAMEURI = "content://exam.android.Hello/product";...ContentResolver cr = getContentResolver(); Cursor cursor = cr.query(Uri.parse(NAMEURI), null, null, null, null); String result= ""; while (cursor.moveToNext()) { String name = cursor.getString(0); String price = cursor.getString(1); result+= (name+ " = " + price+ "\n"); } Log.i(TAG, result); cursor.close();
B 프로젝트에서 저렇게 DB 내용을 읽어보려 했는데 안됩니다.
같은 프로젝트에 있다면 될 것 같은데 ...
content provider 는 어플이 달라도 서로 공유가 가능하다고 들어서 분리해보는 연습을 하고 있습니다.
B 프로젝트에 추가해 주어야 할 것이 무었인가요 ??