2010-03-31 12 views
5

मैं संपर्कों नीचेFileNotFoundException संपर्कों vCard को

AssetFileDescriptor AFD = openAssetFileDescriptor कोड का उपयोग कर vCard प्रारूप करने के लिए एमुलेटर पर परिवर्तित करने के लिए कोशिश कर रहा हूँ रूपांतरित करते समय (Contacts.CONTENT_VCARD_URI, "आर")

ढेर ट्रेस कहता है java.io.FileNotFoundException सामग्री पर कोई फ़ाइल नहीं: //com.android.contacts/contacts/as_vcard

क्या हमें यूआरआई में एक फाइल संलग्न करने की आवश्यकता है? एंड्रॉइड में संपर्कों को वीकार्ड में बदलने का कोई और तरीका है?

+0

मुझे आशा है कि इस जवाब से आपको मदद मिलेगी: "[आशय से एंड्रॉयड प्राप्त vCard डेटा] [1]" [1]: http://stackoverflow.com/questions/12659323/android जाओ-vcard-डेटा-से-इरादे/12771561 # 12771561 –

उत्तर

2

आपको संपर्क डीबी के माध्यम से पुन: प्रयास करना होगा और प्रत्येक पर व्यक्तिगत रूप से openAssetFileDescriptor() को कॉल करना होगा। महत्वपूर्ण हिस्सा यह है कि आपको प्रत्येक संपर्क के लिए लुकअप कुंजी का उपयोग करना होगा और इसे URI.withAppendedPath() विधि का उपयोग करके CONTENT_VCARD_URI में जोड़ना होगा।

1

मैं बस इस के साथ भी ठोकर खाई। इसे करने का एक तरीका यहां है। 1 उपयोगकर्ता को अपना संपर्क चुनने या संपर्क प्राप्त करने के लिए एक और तरीका दें।

आपके पास संपर्क होने के बाद आप lookup_key को देख रहे हैं और उसके बाद आप vcard पुनर्प्राप्त कर सकते हैं। यहां कोड है जिसका उपयोग मैंने संपर्क यूआर (विभिन्न कार्यों से कॉपी पेस्ट की तरह, लेकिन काम करना चाहिए) के बाद किया था।

Cursor cursor = resolver.query(contactUri, new String[] { 
    Contacts.LOOKUP_KEY 
}, null, null, null); 
FileInputStream input = null; 

try { 
    if (cursor.moveToFirst()) { 
     return cursor.getString(0); 
    } else return; 

    AssetFileDescriptor afd = context.getContentResolver().openAssetFileDescriptor(
      Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookupKey), "r"); 
    input = afd.createInputStream(); 

    int ch; 
    StringBuffer strContent = new StringBuffer(""); 
    while ((ch = input.read()) != -1) 
     strContent.append((char) ch); 

    Log.d(TAG, strContent.toString()); 
} finally { 
    cursor.close(); 
    if (input != null) { 
     input.close(); 
    } 
} 
संबंधित मुद्दे