I am trying to get pic contact profile, i.e. contact data avatar using the following code in PhoneGap for android but I get the following url in return and I don’t know how to show it to me in the img tag.
Code
var defaultImagePath ='../resources/images/default_usr.png' var img = contacts[i].photos != null ? contacts[i].photos[0].value : defaultImagePath;
return url
Content: //com.android.contacts/contacts/739/photo
now that I end up on the list I'm trying to show it with
<img src="content://com.android.contacts/contacts/739/photo"/>
but it doesn’t display anything? so how can i show the contact image?
I have the latest version of PhoneGap
I used
window.resolveLocalFileSystemURI (contacts [i] .photos [0] .value, this.onResolveSuccess, this.fail);
but i get the following runtime error
JNI ERROR (app bug): attempt to use stale local reference in phonegap
although I specified the following permissions in android
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" />
UPDATE
loadContacts:function(){ var arr = []; var filter = ["displayName", "name", "phoneNumbers","emails","addresses","photos"]; var options = new ContactFindOptions(); options.filter=""; options.multiple=true; navigator.contacts.find(filter, function(contacts) { for (var i = 0; i < contacts.length; i++) { if (contacts[i].photos) { for (var j = 0; j < contacts[i].photos.length; j++) { returnValidPhoto(contacts[i].photos[j], function(answer) { console.log(answer); if(contacts[i].photos[j]!=null); contacts[i].photos[j].value=answer; }); var contactData = new ContactData("Name" , "09090909", contacts[i].photos[j].value); arr.push(contactData); } } } Ext.getStore('ContactStore').setData(arr);
here is the image function
function returnValidPhoto(url,callback){ console.log("IMAGE CALLED"); var img = new Image(); img.onload = function() { //Image is ok console.log("IMAGE OK"); callback(url.value); }; img.onerror = function(err) { //Returning a default image for users without photo console.log("IMAGE FAILED"); url.value = "/resources/images/default_usr.png"; callback("/resources/images/default_usr.png"); } img.src = url.value; };