2013-08-22 7 views
6

में संपर्क डेटा छवि प्रदर्शित करने में असमर्थ मैं में android के लिए निम्नलिखित कोड का उपयोग कर संपर्क डेटा का अवतार प्राप्त करने का प्रयास कर रहा हूं, लेकिन मुझे बदले में यूआरएल निम्नलिखित मिल रहा है और मुझे नहीं पता कि मुझे कैसे करना चाहिए इसे img टैग में दिखाएं।फोनगैप

कोड

var defaultImagePath ='../resources/images/default_usr.png' 

var img = contacts[i].photos != null ? 
    contacts[i].photos[0].value : defaultImagePath; 

लौटे यूआरएल

सामग्री है: एक सूची मैं हूँ में जब अंततः अब

//com.android.contacts/contacts/739/photo

<img src="content://com.android.contacts/contacts/739/photo"/> 
का उपयोग करके इसे दिखाने का प्रयास कर रहा है

लेकिन यह कुछ भी प्रदर्शित नहीं कर रहा है? तो मैं संपर्क छवि कैसे दिखाऊंगा?

मैं नवीनतम PhoneGap संस्करण है

मैं

का इस्तेमाल किया है

window.resolveLocalFileSystemURI (संपर्कों [i] .photos [0] .Value, this.onResolveSuccess, this.fail);

लेकिन रन टाइम त्रुटि निम्नलिखित मैं हो रही है

JNI ERROR (app bug): attempt to use stale local reference in phonegap 

भले ही मैं एंड्रॉयड

<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" /> 

अद्यतन में अनुमतियों को निम्न निर्दिष्ट किया है

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); 

       // document.getElementById("contactdata").innerHTML = data; 
      }, function(err) { 
       alert(err); 
       },options); 



    } 
यहाँ

छवि फ़ंक्शन

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; 
}; 
+0

आप इस समाधान हो गया? मैं एक ही समस्या, संपर्क imge नहीं दिखा रहा है है ... –

उत्तर

1

कृपया इसे आज़माएं।

 function onDeviceReady() { 
      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); 
      window.resolveLocalFileSystemURI("content://com.android.contacts/contacts/739/photo", onResolveSuccess, fail); 
     } 

     function onFileSystemSuccess(fileSystem) { 
      console.log(fileSystem.name); 
     } 

     function onResolveSuccess(fileEntry) { 
      console.log(fileEntry.name); 
     } 

     function fail(evt) { 
      console.log(evt.target.error.code); 
     } 
+0

मैं अगर मैं कोड ऊपर का उपयोग निम्न त्रुटि हो रही है 'JNI त्रुटि (एप्लिकेशन बग): phonegap' में बासी स्थानीय संदर्भ का उपयोग करने और एप्लिकेशन प्रयास बंद हो जाता है, को देखने के लिए मेरे संपादन – Hunt

+0

नमस्ते क्या आप <उपयोग-अनुमति एंड्रॉइड: नाम = "android.permission.READ_CONTACTS" /> अनुमति –

+0

और एंडॉइडमेनैस्ट.एक्सएमएल –

0

AndroidManifest.xml बगल में, वहाँ project\res\xml\config.xml

<plugins> 
    <plugin name="App" value="org.apache.cordova.App"/> 
    <plugin name="Device" value="org.apache.cordova.Device"/> 
    <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/> 
    <plugin name="Contacts" value="org.apache.cordova.ContactManager"/> 
    <plugin name="File" value="org.apache.cordova.FileUtils"/> 
    <plugin name="Storage" value="org.apache.cordova.Storage"/> 
    ... 
    </plugins> 

पर phonegap की अनुमति के हैं कृपया जांच करें कि यह भी अगर सब अनुमति JNI त्रुटि के लिए प्रदान किए जाते हैं, जो त्रुटि अनुमति त्रुटि हो सकता है।

छवि के लिए, <img src="content://com.android.contacts/contacts/739/photo"/> यकीन संपर्क आईडी 739 छवि सेटअप है कि phonegap get_contact समारोह हमेशा content://com.android.contacts/contacts/XXX/photo की तरह एक यूआरएल प्रारूप लौटने के बाद से जहां XXX संपर्क आईडी है, कोई बात नहीं क्या छवि या सेट नहीं है बनाते हैं।

मैं एंड्रॉयड 4 पर phonegap 2.5 के साथ परीक्षण के रूप में, <img src="content://com.android.contacts/contacts/739/photo"/> काम करते हैं, संपर्क छवि या है एक छोटी सी नीले वर्ग के साथ-सवाल-मार्क-अंदर मामले में कि uri का चित्र शामिल नहीं

+0

या फिर यह काम करने में सभी अनुमतियां निर्दिष्ट की हैं, लेकिन मुझे मिल गया शून्य और छवि के बीच अंतर करने का मुद्दा और उस प्लगइन के लिए एकमात्र विकल्प है? – Hunt

+0

हां, जहां तक ​​मुझे पता है। – Hardy

2

मैं भर में आया था कुछ दिनों पहले इस मुद्दे को और आखिरकार एक कामकाज मिला।

var returnValidPhoto=function(url,callback){ 
    var img = new Image(); 
    img.onload = function() { 
    //Image is ok 
     callback(url); 
    }; 
    img.onerror = function(err) { 
     //Returning a default image for users without photo 
     callback("image_for_no_avatar.png"); 
    } 
    img.src = url; 
}; 

//Example usage 
returnValidphoto(contact.photos[0].value, function(answer) { 
    contact.photos[0].value=answer; 
} 
+0

जब मैं सेट 'contact.photos [0] .Value = का जवाब;' मैं 'नहीं कर सकते संपत्ति 'तस्वीरें' पढ़ undefined' – Hunt

+0

की अगर यह बहुत परिभाषित किया गया है आप की जाँच करनी चाहिए, phonegap में संपर्कों से ज्यादातर तस्वीरें राशि त्रुटि हो रही है = बातिल । – jdponomarev

+0

मेरे लिए के रूप में, मैं navigator.contacts.find करने के बाद "validContacts" की एक नई सरणी का निर्माण कर रहा हूँ और फोन नंबर या नाम और सेटिंग डिफ़ॉल्ट तस्वीरें – jdponomarev