2012-09-26 3 views
6

में फ़ाइल डिस्क्रिप्टर का उपयोग कर संपर्क की जानकारी पढ़ना मुझे अपनी संपर्क सूची से संपर्क प्राप्त करने में समस्या हो रही है। मैं इस कोड का उपयोग कर रहा:एंड्रॉइड

final Cursor Contact = cResolver.query(ContactsContract.Contacts.CONTENT_URI, null, 
       ContactsContract.Contacts._ID +" = " + Contact_ID, null,null); 
     Contact.moveToFirst(); 
     String lookupKey = Contact.getString(Contact 
       .getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); 

     Uri uri = Uri.withAppendedPath(
       ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey); 

     AssetFileDescriptor fd = null; 
     FileInputStream fis = null; 

     fd = cResolver.openAssetFileDescriptor(uri, "_ID"); 
     fis = fd.createInputStream(); 
     byte[] buf = new byte[(int) fd.getDeclaredLength()]; 
     fis.read(buf); 
     String vcardstring = new String(buf); 

लेकिन मैं Exception हो रही है:

java.io.IOException: read failed: EINVAL (Invalid argument) 
libcore.io.IoBridge.read(IoBridge.java:432) 

किसी भी एक मुझे इस के साथ मदद कर सकते हैं?

+0

आप पूरे स्टैक ट्रेस पोस्ट कर सकते हैं? –

+0

हाय अनासबेकज़, मुझे भी एक ही समस्या का सामना करना पड़ रहा है। अगर आपको समाधान मिल गया तो कृपया इसे साझा करें। –

+0

@ अभिषेककुमारगुप्त अगर आपको अभी भी समाधान नहीं मिला है, तो समाधान फ़ाइल डिस्क्रिप्टर का उपयोग नहीं करना है, क्योंकि मुझे इसका उपयोग करने में कुछ समस्याएं आ रही हैं, कुछ डिवाइस/विनिर्माण इसका उपयोग नहीं करते हैं, इसलिए अब मुझे सामग्री से सभी जानकारी मिलती है प्रदाता मैन्युअल रूप से। मुझे उम्मीद है इससे मदद मिलेगी – AnasBakez

उत्तर

0

आप पूरी लाइन प्राप्त कोशिश करते हैं और एक स्ट्रिंग सूची में यह एक उदाहरण बचाने के लिए, कर सकते हैं:

public List<String> getAnswers(int line) { 
    List<String> answerList = new ArrayList<String>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_GERAL; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    cursor.moveToPosition(line); 

    for(int x=0; x<cursor.getColumnCount();x++){ 
     answerList.add(cursor.getString(x)); 
    } 

    return answerList; 
}