PC가 데이터 라인을 통해android 데이터베이스 읽기 (2) 안드로이드 개발

지난번adb공구로 안드로이드를 연결하는 사고방식을 바탕으로 안드로이드 측의 데이터 준비를 시작하겠습니다.
우리가 해야 할 일은 PC가 안드로이드의 데이터베이스를 읽는 것이기 때문에 데이터베이스가 없으면 안 된다. 그래서 우리는 지금 안드로이드 앱에 데이터베이스를 만들자.여기 데이터베이스의 ORM 프레임워크는 곽림대신이 개발한 SqLite 2.0 프레임워크입니다. 누가 저에게 그의 첫 줄 코드가 자라는 것을 보여 주었을까요?다음과 같은 사용자 모델을 생성했습니다.
public class UserModel extends LitePalSupport {

    private int id;

    private String username;

    private String password;

    private String email;

    //.....   set get  

}

다음에 데이터베이스에 데이터를 추가하고 UserAddActivity에 인원 데이터를 입력하여 인원을 데이터베이스에 저장합니다
    if (ValidForAdd()) {
                    UserModel userModel=new UserModel();
                    userModel.setUsername(et_username.getText().toString());
                    userModel.setPassword(et_password.getText().toString());
                    userModel.setEmail(et_email.getText().toString());
                    userModel.save();

                    finish();
    }

다음은 정말 중점입니다. 안드로이드 개발자로서 저희가 응용한 데이터베이스 파일은'/data/data/당신 프로젝트의 패키지/database'디렉터리에 저장됩니다. 파일 이름은 xxx입니다.db 파일, 그러나 안드로이드 보안 메커니즘의 영향으로 우리는 이 파일에 직접 접근할 수 없기 때문에 이db 파일을 복사한 다른 사람들이 접근할 수 있는 공유 디렉터리에 접근해야 한다(android의 빈틈은 아니지만 아무도 자신의 데이터를 이렇게 하지 않을 것이다).다음 코드를 통해 db 파일 복사본을 공유 디렉터리에 저장합니다.
 public boolean copyDbToPublicDirectory() {
        boolean success = false;
        try {
            //  db  
            String dbDirPath = "/data/data/" + packageName
                    + "/databases/";

            File dir = new File(dbDirPath);
            if (dir.exists() && dir.isDirectory()) {
                File[] files = dir.listFiles();
                if (files != null && files.length > 0) {
                    for (File file : files) {
                        if (file.getName().endsWith("db")) {


                            //      
                            Log.i("hf", "        " + file.getName());
                            //                 
                            File documentDir = Environment.getExternalStorageDirectory();
                            Log.i("hf", "   SDka" + documentDir.getAbsolutePath());
                            String saveDir = documentDir.getAbsolutePath() + "/" + packageName + "/" + "dbfiles";
                            File f_saveDir = new File(saveDir);
                            if (!f_saveDir.exists()) {
                                f_saveDir.mkdirs();
                            }
                            String saveFile = saveDir + "/" + file.getName();
                            Log.i("hf", "       :" + saveFile);
                            File f_saveFile = new File(saveFile);
                            if (!f_saveFile.exists()) {
                                f_saveFile.createNewFile();
                            }
                            //    
                            Log.i("hf", "      ");
                            FileUtils.copyFileUsingFileChannels(file, f_saveFile);
                            Log.i("hf", "      ");
                        }
                    }
                    success = true;
                }

            }
        } catch (Exception ex) {
            Log.e("hf", ex.getMessage());
        }
        return success;
    }

복사할 때 안드로이드 6.0의 권한 문제에 주의하세요. 이로써 우리 안드로이드의 준비 작업은 끝났습니다. 동적 그림을 보고 감상합시다.프레젠테이션gif
다음 편, 드디어 pc 측 개발, 휴식 하 고, 다시 노력 하 자!!

좋은 웹페이지 즐겨찾기