2012-10-09 127 views
0

我試圖讓代碼工作選擇聯繫人並檢索電話號碼。 我發現了一段代碼,其在模擬器(Android版本2.3.3)和我哥的電話(Jelly Bean)的偉大工程,但不是我自己的設備(安卓2.3.4)選擇聯繫人和檢索電話號碼

這裏上的代碼: 去接觸

public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
     intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
     startActivityForResult(intent, 1);  
    } 

從聯繫人回來:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (data != null) { 
     Uri uri = data.getData(); 

     if (uri != null) { 
      Cursor c = null; 
      try { 
       c = getContentResolver().query(uri, new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER}, 
         null, null, null); 

       if (c != null && c.moveToFirst()) { 
        String number = c.getString(0); 
        //int type = c.getInt(1); 
        showSelectedNumber(0, number); 
       } 
      } finally { 
       if (c != null) { 
        c.close(); 
       } 
      } 
     } 
    } 
} 

public void showSelectedNumber(int type, String number) { 
    Toast.makeText(this,number, Toast.LENGTH_LONG).show();  
} 

同樣,這部作品在模擬器(安卓2.3.4)和果凍豆,但不是我的設備(Android 2.3的上。 5)

這是從日誌出來:

10-10 22:07:15.775: E/AndroidRuntime(5075): FATAL EXCEPTION: main 
10-10 22:07:15.775: E/AndroidRuntime(5075): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.contacts/data/2848 (has extras) }} to activity {com.example.omer/com.example.omer.SmsInfo}: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.HtcContactsProvider2 uri content://com.android.contacts/data/2848 from pid=5075, uid=10125 requires android.permission.READ_CONTACTS 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.app.ActivityThread.deliverResults(ActivityThread.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.app.ActivityThread.handleSendResult(ActivityThread.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.app.ActivityThread.access$2000(ActivityThread.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.os.Handler.dispatchMessage(Handler.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.os.Looper.loop(Looper.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.app.ActivityThread.main(ActivityThread.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at java.lang.reflect.Method.invoke(Method.java:507) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at dalvik.system.NativeStart.main(Native Method) 
10-10 22:07:15.775: E/AndroidRuntime(5075): Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.HtcContactsProvider2 uri content://com.android.contacts/data/2848 from pid=5075, uid=10125 requires android.permission.READ_CONTACTS 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.os.Parcel.readException(Parcel.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.content.ContentProviderProxy.query(ContentProviderNative.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.content.ContentResolver.query(ContentResolver.java) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at com.example.omer.SmsInfo.onActivityResult(SmsInfo.java:87) 
10-10 22:07:15.775: E/AndroidRuntime(5075):  at android.app.Activity.dispatchActivityResult(Activity.java) 

10-10 22:07:15.775:E/AndroidRuntime(5075):... 12多個

+0

所以,當你說它不起作用...什麼不行? URI是否指向空?你有錯誤嗎?提供一些上下文 –

+0

添加日誌文件。 – AshChlor

回答

0

根據錯誤信息:

了java.lang.RuntimeException:失敗遞送結果 ResultInfo {誰= NULL,請求= 1,結果= -1,數據=意向{ DAT =含量://com.android.contacts/data/ 2848(有額外)}}到 活動{com.exam ple.omer/com.example.omer.SmsInfo}: java.lang.SecurityException:Permission Denial:reading com.android.providers.contacts.HtcContactsProvider2 uri content://com.android.contacts/data/2848 from PID = 5075,UID = 10125 需要android.permission.READ_CONTACTS

您需要添加的權限android.permission.READ_CONTACTS

1

確定..剛剛纔 我不得不權限添加到清單文件:

<uses-permission android:name="android.permission.READ_CONTACTS"/> 
相關問題