2010-07-08 11 views
6

मैं सिम पर संपर्क पढ़ने के लिए इस क्वेरी का उपयोग करने की कोशिश कर रहा हूं।एंड्रॉइड: एसडीके का उपयोग कर सिम संपर्क तालिका तक कैसे पहुंचे?

  cur = managedQuery(Uri.parse("content://icc/adn") 
       ,null 
       ,null 
       ,null 
       ,null 
       ); 

एप्लिकेशन में READ_CONTACTS और WRITE_CONTACTS अनुमतियां हैं। फिर भी, क्वेरी एक अपवाद देता है।

java.lang.NullPointerException 
    at android.os.Parcel.readException(Parcel.java:1224) 
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160) 
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) 
    at android.content.ContentProviderProxy.bulkQuery(ContentProviderNative.java:369) 
    at android.content.ContentProviderProxy.query(ContentProviderNative.java:388) 
    at android.content.ContentResolver.query(ContentResolver.java:202) 
    at android.app.Activity.managedQuery(Activity.java:1502) 
    at com.example.delirious.delirio.onCreate(delirio.java:38) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621) 
    at android.app.ActivityThread.access$2200(ActivityThread.java:126) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:4595) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
    at dalvik.system.NativeStart.main(Native Method) 

क्या गलत है?

+0

'सामग्री: // icc/adn' एंड्रॉइड एसडीके का हिस्सा नहीं है। – CommonsWare

+0

फिर, फिर से, एंड्रॉइड एसडीके का हिस्सा क्या है और सिम संपर्कों तक पहुंच प्रदान करता है? कोड http://groups.google.com/group/android-developers/browse_thread/thread/4e697aef54154514 द्वारा प्रेरित था: लेखक सामग्री का उपयोग करता है: // icc/adn और दावा करता है कि वह संपर्क पढ़ सकता है (और सम्मिलित है, लेकिन उन्हें हटाएं नहीं)। साथ ही, सामग्री को प्रतिस्थापित करना: // icc/adn सामग्री जैसे gibberish के साथ: // icc/asdasd एक अलग अपवाद का कारण बनता है, जैसे "यूआरआई अज्ञात": इसका मतलब है कि सामग्री: // icc/adn का कोई अर्थ है। – user377486

+0

एंड्रॉइड एमुलेटर पर एक ही काम करता है, वास्तविक फोन पर नहीं। यूआरआई सामग्री: // आईसीसी/एफडीएन और सामग्री: // आईसीसी/एसडीएन दोनों एमुलेटर और फोन पर काम – user377486

उत्तर

2

मैं यह मिल गया,

String simUrl = "content://icc/adn"; 
Intent intent = new Intent(); 
      Log.d(TAG, "simUrl=" + simUrl); 
      intent.setData(Uri.parse(simUrl)); 
      Uri uri = intent.getData(); 
      Cursor mCursor = context.getContentResolver().query(uri, null, 
        null, null, null); 

और फिर, के लिए (...) {...}, तुम्हें पता है

+0

कर्सर mCursor = context.getContentResolver() क्वेरी (यूरी, शून्य, शून्य, शून्य, शून्य); इस मामले में भी एक ही अपवाद का कारण बनता है ... – user377486

+0

ठीक है, यह शायद पर्यावरण की समस्याएं हैं, आपको सिम कार्ड स्थिति ("ज्ञात नहीं" || "तैयार") प्राप्त करना है। इसे चलाने से पहले, कृपया अपने डिवाइस को पुनरारंभ करें। –

8

मैं simcard details..It प्राप्त करने के लिए निम्न कोड का इस्तेमाल किया है काम करता है ठीक

Uri simUri = Uri.parse("content://icc/adn"); 
     Cursor cursorSim = this.getContentResolver().query(simUri, null, null,null, null); 

     while (cursorSim.moveToNext()) {   
      listName.   add(cursorSim.getString(cursorSim.getColumnIndex("name"))); 
      listContactId.  add(cursorSim.getString(cursorSim.getColumnIndex("_id")));  
      listMobileNo.  add(cursorSim.getString(cursorSim.getColumnIndex("number"))); 
      } 

यहाँ नाम, _ id, संख्या simcard तालिका

+0

क्या आप वाकई भविष्य में रिलीज में सामग्री यूआरआई समान रहेंगे? – Joset

+0

यदि मैं सिम में मौजूद संपर्क को हटाना चाहता हूं तो क्या होगा? –

2

मैं सिर्फ एक छोटे से पी कार्यान्वित से स्तंभ नाम हैं सिम कार्ड में संपर्क की सूची प्रदर्शित करने के लिए उपयोग किए जाने वाले कोड का अर्थ। उम्मीद है कि यह आपकी मदद कर सकता है

private void displaySIMContacts() { 
    try { 
     String simPhoneId = null; 
     String simPhoneNum = null; 
     String simPhoneName = null; 

     Uri simUri = Uri.parse("content://icc/adn"); 
     Cursor simCusor = getContentResolver().query(simUri, null, null, null, null); 

     while(simCursor.moveToNext()) { 
     simPhoneId = simCursor.getString(simCursor.getColumnIndex("_id"); 
     simPhoneNum = simCursor.getString(simCursor.getColumnIndex("name"); 
     simPhoneName = simCursor.getString(simCursor.getColumIndex("number); 
     Log.v(TAG, " id = " + simPhoneId + " - name = " + simPhoneName 
          + " - number = " + simPhoneNumber); 
     } 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

यदि मैं सिम में मौजूद संपर्क को हटाना चाहता हूं तो क्या होगा? –

संबंधित मुद्दे