1. Cấu trúc Project
Sau khi xây dựng xong cái database ở ngoài bằng ứng dụng SQLite Expert (trên Windows) hoặc Sqliteman (Trên Linux) với cấu trúc (tui sử dụng SQLiteman)Sau đó copy vào thư mục assets, bạn có thể nhìn hình cấu trúc Project của tui ở trên có khung màu đỏ đấy.
2. Thưc hiện copy (File AssetDatabaseOpenHelper.java)
3. Đọc file database sau khi copy (file DbHelpter.java)
4. Thực hiện hiển thị lên màn hình (Main.java)
5. Giao diện hiển thị, đơn giản là một listView
6. cho phép ứng dụng của bạn được đọc ghi file vào bộ nhớ (File AndroidManifest.xml)
Thêm 2 dòng vào AndroidManifestđược như sau:
7. Chạy thử.
Sau khi chạy sẽ thấySẽ thấy trong File Explorer theo đường dẫn data/data/yourpackage/databases
Download project.
Thế là xong chức năng copy file database xây dựng sẵn từ thư mục assets và sử dụng. Chúc bạn thành công. Mọi thắc mắc gì bạn comment ở dưới, tui sẽ hỗ trợ trong khả năng của tui.
Mình bị lỗi copy sang thư mục database, kieemr tra DDMS thấy size dữ liệu=0
ReplyDeleteCám ơn bạn đã đọc bài của mình. Bạn có thể ghi rõ lỗi ra được không. lúc run xem ở Logcat đấy.
Delete- Bạn xem thử trong AndroidManifest.Xml có khai báo quyền đọc ghi vào bộ nhớ máy không?
- Xem thử package ở dòng 24 có giống dòng 3 trong AndroidManifest.Xml (code ở trên)
- Bạn xem tên file database có đúng trong thư mục asset không. xem dòng 15 của file AssetDatabaseOpenHelper.java (code ở trên)
bạn có thể tải Source code ở cuối của mình về chạy thử nhé
Cám ơn bạn! Bài viết của bạn rất hay, mình sử dụng source code của bạn , riêng phần lấy dữ liệu thì mình modify đi ^^!.
ReplyDeleteLúc đầu việc hiển thị không gặp vấn đề gì bạn ạ, nhưng khi dữ liệu của database lớn thì việc copy từ folder asset sang gặp trục trặc.Cụ thể là CT không copy được dữ liệu sang thư mục databases(khi dữ liệu mình là 1,7 MB), khi mình thử với dữ liệu là 600 KB thì lại ngon lành.
Như vậy lỗi CT của mình là khi dữ liệu của file SQLite quá lớn ^^.Mình sẽ dùng zipstream để xử lý!
Cám ơn bạn nhé, Mình chưa gặp tình trạng này, nếu fix được bạn chia sẻ cho mình qua mail nhá. Mình sẽ bổ sung vào bài viết để hoàn thiện hơn.
Delete