Trong ứng dụng của tôi, người dùng chọn tệp. Trong nội bộ, tôi lưu trữ thông tin về tệp mà tôi khóa dựa trên đường dẫn tệp. Tiếp theo thời gian tập tin được sử dụng, tôi làm công cụ với các thông tin được lưu trữ. Vấn đề là tôi nhanh chóng các file của tôi với:Android: định hướng đường dẫn tệp
File file1 = new File(Environment.getExternalStorageDirectory() + "/test.txt");
Và sau đó, trên một thiết bị JB Đặc biệt, file1.getCanonicalPath() cho phép: "/storage/emulated/0/test.txt".
Sự cố là khi các ứng dụng khác khởi chạy ứng dụng của tôi bằng đường dẫn tệp trong Intent, đường dẫn họ gửi có xu hướng giống như: "/mnt/sdcard/test.txt".
Có chiến lược thông minh nào để phân biệt hai đường dẫn này không? Có lẽ tôi nên instantiating các tập tin của tôi một cách khác nhau?
Chỉnh sửa:
Vấn đề là hai đường dẫn cana cho hai tệp không bằng nhau. Cho dưới đây, cp1=="mnt/sdcard/test/txt"
và cp2=="/storage/emulated/0/text/txt"
:
File file1 = new File("/mnt/sdcard/test.txt");
File file2 = new File("/storage/emulated/0/test.txt");
String cp1 = file1.getCanonicalPath();
String cp2 = file2.getCanonicalPath();
Cùng một tệp có 2 đường dẫn tuyệt đối khác nhau? Những đường dẫn này khác nhau và có thể tồn tại trên bộ nhớ mà không loại trừ lẫn nhau. Bạn có thể xây dựng trên kịch bản nhiều hơn một chút không? Làm thế nào là 'Intent' gửi cho bạn chuẩn bị và khi nào nó được gửi? –
Tôi đã hy vọng rằng sẽ có một cách để cân bằng hai, bởi vì các đường dẫn khác nhau trỏ đến cùng một tệp. Ngoài ra, nếu tôi đánh giá Môi trường.getExternalStorageDirectory() là "/ mnt/sdcard /" thay vì là "/ storage/emulated/0", nó sẽ làm giảm sự xuất hiện của vấn đề này (nhưng tôi không biết làm thế nào để làm điều này) – ab11