Mô tả sự cố: Tôi có thể truy cập bộ nhớ trong bằng tệp hoặc hệ thống tệp gốc (đọc và ghi). Nhưng một tập tin như vậy không thể truy cập từ một ứng dụng khác. Ví dụ: nếu tôi muốn gửi tệp này qua emailComposerPlugin, tệp không thể truy cập được bằng ứng dụng email khách. (Cùng với chức năng "mở với".) Nếu tôi thay đổi các tùy chọn {sandboxed: true}
thành false (để ghi vào bộ nhớ ngoài), nó không hoạt động và kết thúc trong một FileUtils.UNKNOWN_ERR. Tôi đã thử các ứng dụng trong khi điện thoại bị ngắt kết nối từ USB, như một số tài liệu đề cập rằng lưu trữ bên ngoài không thể được truy cập trong khi gắn trên máy tính - kết quả tương tự mặc dù.Làm cách nào để truy cập bộ nhớ ngoài bằng các trình cắm thêm file/file-system-root của cordova?
Từ nội dung tôi đọc trên mailing list, điều này có thể thực hiện được. Có vẻ như tôi bỏ lỡ một điểm quan trọng?
Bối cảnh: Tôi cố gắng bật ứng dụng lai được tạo cho iPhone để chạy trên thiết bị Android. Để có một sân chơi nhỏ, tôi tạo ra một dự án thử nghiệm nhỏ.
Chỉnh sửa: Dường như có sự cố giữa tệp hệ thống gốc và plugin tệp. Nhưng tôi có phiên bản mới nhất của cả hai. (Tập tin: 1.0.1 File-system-rễ: 0.1.0) Gỡ rối các tập tin hệ thống và các lớp học tập cho thấy
private String fullPathForLocalURL(Uri URL) {
if (FILESYSTEM_PROTOCOL.equals(URL.getScheme()) && "localhost".equals(URL.getHost())) {
String path = URL.getPath();
if (URL.getQuery() != null) {
path = path + "?" + URL.getQuery();
}
return path.substring(path.indexOf('/', 1));
// path = "/cache-external" at this point
// results in index out of bounds exception
đã tôi đã cố gắng gì?
config.xml
<preference name="AndroidExtraFilesystems" value="files,files-external,documents,sdcard,cache,cache-external" />
AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
mã javascript
function createTextDocument(filename, text) {
cordova.filesystem.getDirectoryForPurpose('cache', {sandboxed: false}, successCallback, failureCallback);
function successCallback(directoryEntry){
console.log('directory found (cordova): ' + directoryEntry.toURL());
console.log('directory found (native) : ' + directoryEntry.toNativeURL());
directoryEntry.getFile(filename, {create: true, exclusive: false},
function(fileEntry){
var filePath = fileEntry.toNativeURL();
fileEntry.createWriter(
function(fileWriter){
console.log('start writing to: ' + filePath);
fileWriter.write(text);
console.log('file written');
},failureCallback
);
}, failureCallback
);
}
function failureCallback(error){
console.log('error creating file: ' + error.code);
// results in code 1000
}
}
bạn có thể cung cấp một ví dụ làm việc đầy đủ của tập tin mới ghi vào sdcard bên ngoài? –
Tôi đã sử dụng mã này: 'window.resolveLocalFileSystemURL ('file: /// storage/extSdCard /', function (fs) {var nativePath = fs.toURL(); alert (nativePath);}, function (err) {alert (err);}); ' –
Không chắc vấn đề của tôi tương tự như thế nào. Nhưng có AndroidPersistentFileLocation để khả năng tương thích giải quyết vấn đề với hệ thống tệp của Android cho cordova v5 + –