2011-12-16 36 views
5

Tôi muốn mở một tệp PDF được lưu trữ trong Bộ nhớ trong di động ... Tôi đang cố gắng chuyển đường dẫn của tệp đến Uri .. nhưng nó giữ hiển thị cho tôi lỗi này "đường dẫn tập tin là không hợp lệ" nhưng tôi chắc chắn rằng tôi đang đặt con đường đúng đắn ..Đọc pdf được lưu trữ trong bộ nhớ trong (Đường dẫn tệp không hợp lệ)

targetFile=new File("/data/data/package Name/app_mydir/test.pdf"); 

      } 

     Intent intent; 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(targetFile), "application/pdf"); 


       startActivity(intent); 
+0

Tệp của bạn được lưu như thế nào? Nói chung các tệp dữ liệu kết thúc bên trong một thư mục có tên là "tệp" trong thư mục ứng dụng của bạn, không phải ở thư mục gốc. – FoamyGuy

+0

Tôi đang sử dụng thư mục này = getBaseContext(). GetDir ("mydir", Context.MODE_PRIVATE); \t \t \t} \t \t Tệp tin1 = new Tệp (thư mục, PdfName); – Reham

+0

thay thế "getBaseContext()" bằng "YourActivityName.this" Ngoài ra, có thể bạn sẽ không thể sử dụng MODE_PRIVATE nếu bạn đang cố truyền tệp đó sang một ứng dụng khác. – FoamyGuy

Trả lời

0

Kiểm tra đầu ra của

targetFile.exists();

Nếu điều này trả về sự thật thì bạn tốt để đi nếu không có điều gì đó sai với đường dẫn của bạn.

+0

tôi đã thử nó .. nó trở lại đúng .. tôi không biết whats sai với đường dẫn .. – Reham

+0

Bạn có lẽ nên gửi một stacktrace đầy đủ. –

8

Các tệp trong thư mục lưu trữ nội bộ của ứng dụng của bạn theo mặc định là riêng tư đối với ứng dụng của bạn. Điều đó có nghĩa là không có ứng dụng PDF-Reader nào có thể đọc tệp đó (vì nó không chạy với ứng dụng của bạn bị lỗi - không được phép đọc).

Bạn phải lưu tệp PDF đó với quyền đọc rõ ràng đối với các ứng dụng khác bằng cách sử dụng cờ Context.MODE_WORLD_READABLE. Xem data storage documentation cách thực hiện điều đó một cách chính xác.

Đồng thời sử dụng Context.openFileOutput()Context.openFileInput() để đọc và ghi tệp trong thư mục nội bộ (như đã đề cập trong tài liệu ở trên). Không mã hóa đường dẫn như thế này, chúng có thể thay đổi.

Các vấn đề liên quan