마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android db import 하는 방법 아시는분여

–1 추천
DB를 사용하는 앱을 개발을 폰을 사용해서 개발하다보면

 

ddms 에서 data/data/패키지/databases 안에 db를 봐야 하는 경우가 생기는데요

 

루팅을 하지 않는 폰이라면 data 접근권한이 없습니다.

 

그래서 db를 만들고 db를 import 하려고 합니다.  어떻게 해야할까요/;.
익명사용자 님이 2013년 3월 15일 질문

1개의 답변

–1 추천

안드로이드 프로젝트 폴더중에 assets이 있습니다.
이곳에 DB 파일을 넣고
이것을 /data/data/패키지명/databases에 복사하셔서 쓰시면 됩니다.
이러면 SD카드 관련 퍼미션을 얻지 않아도 쉽게 DB파일을 배포할 수 있습니다.

	public static final String PACKAGE_DIR = "/data/data/패키지명/";
	public static final String DATABASE_NAME = "upgrade.db";
	public static final String COPY2DATABASE_NAME = "upgradebuf.db";
	public static final int DB_VERSION = 1;

	public static void initialize(Context ctx) {
		// check 	
		File folder = new File(PACKAGE_DIR + "databases");
		folder.mkdirs();
		File outfile = new File(PACKAGE_DIR + "databases/" + COPY2DATABASE_NAME);

		if (outfile.length() <= 0) {
			Log.i("db","buffer make");
			AssetManager assetManager = ctx.getResources().getAssets();
			try {
				InputStream is = assetManager.open(DATABASE_NAME, AssetManager.ACCESS_BUFFER);
				long filesize = is.available();
				byte [] tempdata = new byte[(int)filesize];
				is.read(tempdata); 	
				is.close();			
				outfile.createNewFile();
				FileOutputStream fo = new FileOutputStream(outfile);
				fo.write(tempdata);
				Log.d("db init", "success + size = "+outfile.length());
			
				fo.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		else{
			//Log.i("db","buffer already exist, nothing to do");		
		}
	}

 

Noizbuster (11,970 포인트) 님이 2013년 3월 15일 답변
...