Tôi đang cố gắng lưu một số dữ liệu từ ứng dụng của mình trong một tệp văn bản đơn giản trên vùng lưu trữ riêng bên trong (tùy chọn người dùng ứng dụng). Tôi đã đọc qua nhiều câu hỏi ở đây (StackOverflow) và đã thử các giải pháp được đề xuất không thành công. Giải pháp đơn giản nhất, có vẻ như, sẽ là giải pháp được đề xuất ở đây:
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
nhưng tôi không thể làm việc này trên thiết bị thử nghiệm của mình. Tôi cũng đã cố gắng để tạo ra các tập tin bằng cách sử dụng các phương pháp có sẵn trong java.io.File với các phương pháp thích hợp. Tôi cũng đã cố gắng tạo tệp trên SDCard với cùng một kết quả, không thành công. Tôi đã thử nhiều giải pháp được liệt kê trong các câu trả lời khác, theo mã và hướng dẫn được đề xuất chính xác và tìm cùng một kết quả. Tôi bắt đầu cảm thấy rằng tôi đang thiếu một số bit quan trọng của mã, hoặc một lá cờ thiết lập ở đâu đó, tôi đã đặt cho phép trong file manifest:
Ghi vào bộ nhớ riêng trong Android
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Để được rõ ràng, Tôi đang cố gắng ghi vào bộ nhớ riêng, nội bộ của thiết bị. Đây là một tệp nhỏ chứa tên, số điện thoại và một vài loại cờ int
. Tôi sử dụng phương pháp nào, tôi hoặc thấy rằng tệp không tạo (hoặc thay đổi nếu tôi đặt tệp theo cách thủ công trên thẻ SDCard) hoặc tôi nhận được NullPointerException khi cố gắng tham khảo tệp hoặc vị trí tệp:
private File fILE = new File("Mydata", main.FILENAME);
hoặc
private File fILE = getDir("Mydata", 0);
tôi đang chạy mã trên HTC hero, cập nhật với việc phát hành dịch vụ mới nhất từ Sprint. Bất kỳ trợ giúp sẽ được đánh giá cao, cảm ơn trước!
-Steve
Cập nhật (2/2/11): Sử dụng một EVO (API 8) Tôi vẫn nhận được một NullPointerException. Mã tạo ra ngoại lệ là dưới đây, bất kỳ suy nghĩ về lý do tại sao ứng dụng của tôi không thể truy cập bộ nhớ trong? Tôi có vấn đề này trên ba thiết bị vật lý khác nhau bằng cách sử dụng hai cấp API (API 7 và 8).
File newfile = new File(this.getFilesDir() + "/data/files/", "sample.txt");
CẬP NHẬT 2: 2/4/11 - Tôi thấy rằng tôi không thể xem cấu trúc tệp trên thiết bị thực (trong bất kỳ trường hợp nào). Có ai có suy nghĩ nào về vấn đề này nữa ko? Thiết bị được cấu hình đúng và có thể chạy ứng dụng từ nhật thực hoặc adb.
CẬP NHẬT 3: (2/9/11) - Tôi nghĩ rằng tôi có thể đã tìm thấy vấn đề ở đây, nhưng tôi không chắc chắn về cách giải quyết vấn đề. Tôi đã tìm ra rằng các điều khoản trên thư mục/data/trên các thiết bị vật lý là: drwxrwx--x
. Tôi không chắc tại sao nó theo cách này, có thể là một cái gì đó với Sprint? Tôi đã tìm thấy thiết lập này theo cách này trên một HTC Hero, Samsung Epic (Galaxy S), và HTC EVO tất cả trên Sprint. Vấn đề dường như là DDMS và ứng dụng của tôi không có quyền truy cập r/w vào thư mục. Tôi cần phải tìm ra 2 thứ ở đây, tại sao nó giống như thế này và làm thế nào để vượt qua vấn đề này trong tự nhiên. Một lần nữa, bất kỳ sự giúp đỡ nào ở đây sẽ rất tuyệt vời !!
CẬP NHẬT 4: Tôi nghĩ rằng tháng 2 năm ngoái là tổng thời điểm tóc vàng dành cho tôi (xem CẬP NHẬT 3). Các thiết bị thử nghiệm mà tôi có không bị ROOT và do đó không có quyền truy cập (DUH!). Sau khi tất cả các bản cập nhật mà ông SGS và EVO 4G đã trải qua, kết quả vẫn như cũ. Tôi vẫn đang làm việc vấn đề này và sẽ cố gắng và lấy lại ở đây với một bản cập nhật sớm (hy vọng ít hơn một năm tiếp theo thời gian).
Bạn có nhận được thông báo lỗi khi bạn thử các phương pháp khác nhau này hoặc chỉ là âm thầm không? –
Tôi đang tập trung vào cách 'openFileOutput()' ngay bây giờ và tôi nhận được một NullPointerException. Dường như thư mục dữ liệu cá nhân trên điện thoại bị khóa vì một số lý do, tôi thậm chí không thể nhìn vào thư mục; giống như không có gì tạo ra ở đó. Các quyền trên thư mục 'dữ liệu' trên điện thoại là: "drwxrwx - x".Tôi bắt đầu tự hỏi liệu có cài đặt không hợp lệ trên điện thoại hay gì đó không. Đó là yêu cầu của ứng dụng mà tệp dữ liệu ghi vào bộ nhớ trong, để tương thích. – Kingsolmn
bạn sẽ không thể truy cập thư mục/dữ liệu trên thiết bị thực với DDMS trừ khi bạn có quyền truy cập root nhưng bạn vẫn có thể ghi vào tệp từ ứng dụng của mình. điều gì xảy ra trên trình mô phỏng? bạn có thể viết một tập tin được không? – techiServices