使用Cordova contacts插件将图像保存到用户的联系人中
Saving image to the user’s contacts with Cordova Contacts plugin
我似乎在使用Android上的Cordova contacts插件将图像保存到用户联系人时遇到了问题。这是我的代码:
var contact = navigator.contacts.create();
// data.photo is a valid base64-encoded string.
contact.photos[0] = {
"type": "base64",
"value": data.photo
};
contact.save(function() {
alert(“Contact saved.”);
}
这在iOS上运行得很好,但无论我尝试什么,我都无法在Android上保存图像。data.photo
值是一个有效的base64编码字符串,粘贴到URL栏时将显示为图像。有什么建议吗?
这个问题是关于不支持保存类型base64的问题。
您可以发现ContactAccessorSdk5.java中没有base64类型,该位置位于"Platform/android/build/src.org/apache/cordova/contacts/ContactAccessorSbk5.java"中的Project文件夹中
图像数据格式的base64以"data:"开头。因此,您可以在"ContactAccessorSdk5.java"文件中修改getPathFromUri(字符串路径)以保存图像数据base64。
你可以参考https://groups.google.com/forum/#!消息/phonegap/jTMu9Azjaa8/ywQMMEcoS1YJ'
或者我下面的GitHub。
https://github.com/CordovaExam/Contacts
如果你到了那里,你可以得到它,那里有更多的详细信息。
private InputStream getPathFromUri(String path) throws IOException {
if (path.startsWith("data:")) { // data:image/png;base64,[ENCODED_IMAGE]
String dataInfos = path.substring(0, path.indexOf(',')); // data:image/png;base64
dataInfos = dataInfos.substring(dataInfos.indexOf(':') + 1); // image/png;base64
String baseEncoding = dataInfos.substring(dataInfos.indexOf(';') + 1); // base64
if("base64".equalsIgnoreCase(baseEncoding)) {
String img = path.substring(path.indexOf(',') + 1); // [ENCODED_IMAGE]
byte[] encodedData = img.getBytes();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(encodedData, 0, encodedData.length);
Base64InputStream base64InputStream = new Base64InputStream(byteArrayInputStream, Base64.DEFAULT);
return base64InputStream;
} else {
Log.w(LOG_TAG, "Could not decode image. The found base encoding is " + baseEncoding);
}
}
if (path.startsWith("content:")) {
Uri uri = Uri.parse(path);
return mApp.getActivity().getContentResolver().openInputStream(uri);
}
if (path.startsWith("http:") || path.startsWith("https:") || path.startsWith("file:")) {
URL url = new URL(path);
return url.openStream();
}
else {
return new FileInputStream(path);
}
}
相关文章:
- 在验证和发送邮件后更改联系人表单的 html
- 从远程脚本获取用户IP
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- d3基于用户选择动态更新节点
- 同步调用,直到用户通过angular验证为访问者
- 使用javascript搜索具有用户输入的数组
- 如何使用jquery确定用户是否年满18岁
- Meteor-添加用户自定义字段的方法不起作用
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 跟踪用户点击Adsense广告的IP地址
- 使用javascript反复检查用户在facebook上的登录状态
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何检查用户在html5视频播放器中观看了完整的视频
- 一个密码测试程序,如果存在空格,它会提醒用户
- 如何使用JavaScript中的用户输入创建序列/序列
- 当用户按下回车键时,自动在text区域/text中插入消息
- 显示某个用户ID的某个标签的30张Instagram图片
- 获取所有用户's的联系人列表(包括电话号码)来自javascript中的谷歌登录
- 在用户登录时访问谷歌联系人会抛出Meteor.bindEnvironment错误.我对纤维的理解有什么问题?
- 流星,访问登录用户的谷歌联系人