phonegap / cordova 3.1.0,无法显示联系人照片

时间:2013-10-18 21:02:56

标签: android cordova

我正在尝试在地址簿中显示每个联系人及其照片。

为此,我在模拟器中创建了一个随机图片的联系人。我设法列出了联系人没有麻烦。正如预期的那样,第一个联系人包含照片的网址:

{"id":"1","rawId":"1","displayName":"Test Dude 1","name":{"middleName":"Dude","familyName":"1","formatted":"Test Dude 1","givenName":"Test"},"nickname":null,"phoneNumbers":null,"emails":null,"addresses":null,"ims":null,"organizations":null,"birthday":null,"note":null,"photos":[{"value":"content://com.android.contacts/contacts/1/photo","type":"url","id":"2","pref":false}],"categories":null,"urls":null}

所以,现在我正在尝试显示图片。这是我遇到麻烦的地方。为了创建我遇到的错误的最小示例,我添加了一个img标记,其中包含第一个联系人的图片的URL:

<img id="myimg">
<script type="text/javascript">
    setTimeout(function() {
        console.log('doing my thing');
        var theurl = 'content://com.android.contacts/contacts/1/photo';
        var element = document.getElementById('myimg');
        element.src = theurl;
        console.log('did my thing');
    }, 3000);
</script>

我没有设法显示图片。这就是日志所说的:

I/Web Console( 3304): doing my thing at file:///android_asset/www/index.html:42
E/webcoreglue( 3304): *** Uncaught exception returned from Java call!
W/System.err( 3304): java.io.IOException: read failed: EINVAL (Invalid argument)
W/System.err( 3304):    at libcore.io.IoBridge.read(IoBridge.java:442)
W/System.err( 3304):    at java.io.FileInputStream.read(FileInputStream.java:179)
W/System.err( 3304):    at java.io.InputStream.read(InputStream.java:163)
W/System.err( 3304):    at dalvik.system.NativeStart.run(Native Method)
W/System.err( 3304): Caused by: libcore.io.ErrnoException: read failed: EINVAL (Invalid argument)
W/System.err( 3304):    at libcore.io.Posix.readBytes(Native Method)
W/System.err( 3304):    at libcore.io.Posix.read(Posix.java:123)
W/System.err( 3304):    at libcore.io.BlockGuardOs.read(BlockGuardOs.java:149)
W/System.err( 3304):    at libcore.io.IoBridge.read(IoBridge.java:432)
W/System.err( 3304):    ... 3 more
I/Web Console( 3304): did my thing at file:///android_asset/www/index.html:54

我正在使用cordova 3.1.0和带有平台4.2.2和API级别17的模拟Android设备。我相信我已设置相关权限(READ_CONTACTSWRITE_CONTACTS,已添加{{ 1}},GET_ACCOUNTSWRITE_EXTERNAL_STORAGE万一他们会提供帮助。)

我做错了什么?我该如何进一步诊断问题?

1 个答案:

答案 0 :(得分:0)

在能够解决问题之后回复我自己的问题。

显然您无法直接访问照片的网址。但您可以将其传输到临时存储并链接到该存储。在这个问题的答案中描述了这样做的方法:

PhoneGap resolveLocalFileSystemURI