Tôi muốn nhận hình ảnh chia sẻ từ thư viện hình ảnh Android bằng điện thoại Nexus 4 trên Android phiên bản 5.1.1. Tôi đang sử dụng phonegap 4.2 và một plugin PhoneIap WebIntent github link và plugin tệp phonegap doc link.phonegap resolveLocalFileSystemURL không hoạt động đối với uri nội dung trên android
văn bản và liên kết hoạt động tốt nhưng khi tôi cố gắng chia sẻ một hình ảnh từ thư viện Android, tôi nhận được một URI như thế này:
nội dung: //com.google.android.apps.photos.contentprovider/0/1/nội dung% 3A% 2F% 2Fmedia% 2Fexternal% 2Fimages% 2Fmedia% 2F63131/THỰC TẾ
Thay vì một cái gì đó giống như file: /// ....
tôi cố gắng sử dụng window.resolveLocalFileSystemURL chức năng để giải quyết url này mà trả về thành công với một fileEnt đối tượng ry. Tuy nhiên, khi tôi cố gắng sử dụng nó để đọc các tập tin, tôi nhận được một lỗi với mã số 1000 (xem mã dưới đây và đầu ra).
Thật thú vị, nếu hiển thị url này thông qua thẻ img, tôi có thể thấy hình ảnh đẹp.
<img src="" id="test_intent_image">
$('#test_intent_image').attr("src",uri);
Điều này cho thấy sự cố có thể là hàm window.resolveLocalFileSystemURL không thể xử lý nội dung: // ... nhập uris đúng cách?
===== tham khảo thông tin ======
Đây là mã Tôi đang sử dụng (lưu ý: tôi đã cố gắng này với các chức năng tập tin khác như CopyTo() vào một thư mục ứng dụng nhưng nó cung cấp cho các lỗi tương tự):
document.addEventListener("deviceready", shared, false);
document.addEventListener("resume", shared, false);
function shared() {
window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_STREAM,
function(data) {
// data is the value of EXTRA_TEXT
if (! data) {
return;
}
window.resolveLocalFileSystemURL(
data,
function (entry) {
console.log('file entry: ' + JSON.stringify(entry, null,3));
function win(file) {
var reader = new FileReader();
reader.onloadend = function (evt) {
console.log("file read success");
console.log(evt.target.result);
};
reader.readAsText(file);
};
function fail (error) {
console.log("file read error: " + error.code);
};
entry.file(win, fail);
},
function (error) {
console.log('file error: ' + error);
});
}, function() {
// There was no extra supplied.
// debug_log("web intent getExtra: no extra");
}
);
}
đây là giao diện điều khiển đầu ra của mã khi tôi cố gắng chia sẻ một hình ảnh từ thư viện hình ảnh:
handle share stream :"content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F63087/ACTUAL"
file entry: {
"isFile": true,
"isDirectory": false,
"name": "ACTUAL",
"fullPath": "/com.google.android.apps.photos.contentprovider/0/1/content%3A//media/external/images/media/63087/ACTUAL",
"filesystem": "<FileSystem: content>",
"nativeURL": "content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F63087/ACTUAL"
}
file read error: 1000
Đây là bộ lọc ý định trong tệp AndroidManifest.xml. Lưu ý: tính năng chia sẻ hoạt động tốt, không thể giải quyết URL nên đây có thể không phải là vấn đề.
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
Chỉ cần thử đề xuất của bạn và nó hoạt động tuyệt vời! Cảm ơn bạn rất nhiều! – MicroApper