gpt4 book ai didi

android - 从图库访问图片时无法设置图片来源-Android

转载 作者:太空狗 更新时间:2023-10-29 16:03:21 25 4
gpt4 key购买 nike

我正在使用 cordova 3.4。当我捕获图像并设置它时,它工作正常但是当我尝试从图库访问图像时我得到了 url

content://com.android.providers.media.documents/document/image%4A463

我的图像标签中出现图像加载错误。我知道这是一个已知错误,我已经引用了堆栈问题,例如 Unable to load image when selected from the gallery on Android 4.4 (KitKat) using PhoneGap Camera Plugin

我不能使用上面提到的粗略解决方法,其中 URI 是手动设置的,例如 content://media/external/images/media/,因为我们专注于具有内部内置存储的设备,例如 Moto

另外请确认此问题已在 cordova 3.5 中修复。因为我需要我的官员的许可才能下载,我必须确保它是可以实现的。有人可以帮忙吗

更新:

app.directive('upload', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
elm.on('click', function() {
navigator.camera.getPicture(
function(imageURI) {
scope.$apply(function() {
alert(imageURI);
ctrl.$setViewValue(imageURI);
});
window.resolveLocalFileSystemURI(imageURI, function(fileEntry) {
// ctrl.$setViewValue(imageURI);
alert("inside local file" + imageURI);
alert("Inside local file system");
fileEntry.file(function(fileObj) {
alert("hai");
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileObj.name;
options.mimeType = fileObj.type;
var ft = new FileTransfer();
// var url = fileUploadUrl;
// ft.upload(imageUri, encodeURI(url), success, failure, options);
});
});
},
function(err) {
ctrl.$setValidity('error', false);
}, {quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY
}
);
});
}
};
});

我的 HTML:

  <img
ng-src="{{onepic}}"
width="250"
height="390"
alt="error"/>

我在我的 Controller 中的 watch 函数中设置了 onepic 的值。所以当指令返回一个 URI 时,它将自动在 onepic 中设置。请指定任何替代解决方案,或者如果我做错了什么,我是 angularjs 的新手

最佳答案

试试这个..

在Camera Plugin中有一个FileHelper.java文件,将插件getRealPath替换为my this my method。

有关更多详细信息,您可以关注此 -> https://issues.apache.org/jira/browse/CB-5398

文件助手.java

    @SuppressWarnings("deprecation")
public static String getRealPath(String uriString, CordovaInterface cordova) {
String realPath = null;


final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;

// DocumentProvider
if (isKitKat) {
Cursor cursor = cordova.getActivity().getContentResolver().query(Uri.parse(uriString), null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":")+1);
cursor.close();

cursor = cordova.getActivity().getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
realPath = path;
cursor.close();
}else{

if (uriString.startsWith("content://")) {
String[] proj = { _DATA };
Cursor cursor = cordova.getActivity().managedQuery(Uri.parse(uriString), proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(_DATA);
cursor.moveToFirst();
realPath = cursor.getString(column_index);
if (realPath == null) {
LOG.e(LOG_TAG, "Could get real path for URI string %s", uriString);
}
} else if (uriString.startsWith("file://")) {
realPath = uriString.substring(7);
if (realPath.startsWith("/android_asset/")) {
LOG.e(LOG_TAG, "Cannot get real path for URI string %s because it is a file:///android_asset/ URI.", uriString);
realPath = null;
}
} else {
realPath = uriString;
}

}
return realPath;
}

CameraLauncher.java 类中有一个方法 processResultFromGallery

private void processResultFromGallery

找到这段代码:

    if (this.targetHeight == -1 && this.targetWidth == -1 &&
(destType == FILE_URI || destType == NATIVE_URI) && !this.correctOrientation){

this.callbackContext.success(uri.toString());
}

并替换为:

    if (this.targetHeight == -1 && this.targetWidth == -1 &&
(destType == FILE_URI || destType == NATIVE_URI) && !this.correctOrientation) {

String s =FileHelper.getRealPath(uri.toString(), cordova);
Log.i("test","<<<<ifURI::::::"+s +"URI::::" + uri.toString());
this.callbackContext.success(s);

}

关于android - 从图库访问图片时无法设置图片来源-Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24037487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com