안드로이드 개발 질문/답변
(글 수 45,052)
apk파일 생성 후 실제로 스마트 폰에 apk파일을 넣고 인스톨을 하면
DB가 databases폴더로 복사가 되지 않는 듯 합니다.
혹시 제가 아래 코딩에서 보다 싶이 잘못 한 부분이 있나요>?
assets에 DB도 넣었구요..ㅠㅠ
에뮬에서는 잘 됩니다만...
DB가 databases폴더로 복사가 되지 않는 듯 합니다.
혹시 제가 아래 코딩에서 보다 싶이 잘못 한 부분이 있나요>?
assets에 DB도 넣었구요..ㅠㅠ
에뮬에서는 잘 됩니다만...
package study.DBTEST; import java.io.*; import android.app.Activity; import android.content.*; import android.content.res.*; import android.database.*; import android.database.sqlite.*; import android.os.Bundle; import android.view.*; import android.widget.*; public class DBTEST extends Activity { EditText mText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.start); findViewById(R.id.btn_ac).setOnClickListener(mClickListener); findViewById(R.id.btn_ca).setOnClickListener(mClickListener); DBUPLOAD();//DBUP } Button.OnClickListener mClickListener = new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(DBTEST.this,ListQ.class); Bundle Reg = new Bundle(); switch (v.getId()) { case R.id.btn_ac: Reg.putInt("SelectQ", 1);//A-C intent.putExtras(Reg); startActivity(intent); break; case R.id.btn_ca: Reg.putInt("SelectQ", 2);//C-A intent.putExtras(Reg); startActivity(intent); } } }; public void DBUPLOAD() { AssetManager am =null; InputStream[] arrIs = new InputStream[1]; BufferedInputStream[] arrBis = new BufferedInputStream[1]; FileOutputStream fos = null; BufferedOutputStream bos = null; try { File f = new File("/data/data/study.DBTEST/databases/timetables.db"); if(f.exists()) { f.delete(); f.createNewFile(); } am=this.getResources().getAssets(); for(int i = 0; i < arrIs.length; i++) { arrIs[i] = am.open("dbs/timetables.db"); arrBis[i] = new BufferedInputStream(arrIs[i]); } fos = new FileOutputStream(f); bos = new BufferedOutputStream(fos); int read = -1; byte[] buffer = new byte[1024]; for(int i = 0; i < arrIs.length; i++) { while((read = arrBis[i].read(buffer, 0, 1024)) != -1) { bos.write(buffer, 0, read); } bos.flush(); } } catch(Exception e){} } }
저장할 공간이 없어서 안써진다고 봅ㄴㅣ다.
"/data/data/study.DBTEST/databases/" 이 폴더가 존재하지 않을경우에 오류가 발생합니다.
프로그램 돌려서 catch(Exception e){ e.printStackTrace();}를 뿌려보세요
이부분을 추가하세요~ 이렇게
File folder = new File("/data/data/study.DBTEST/databases/");
folder.mkdirs();
File f = new File("/data/data/study.DBTEST/databases/study.DBTEST");
if (f.exists()) {
f.delete();
f.createNewFile();
}