首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择联系人并检索电话号码

选择联系人并检索电话号码
EN

Stack Overflow用户
提问于 2012-10-10 06:21:50
回答 2查看 658关注 0票数 0

我正在尝试使用一个代码来选择联系人并检索电话号码。我发现了一段代码,它在模拟器(android版本2.3.3)和我弟弟的手机(Jelly bean)上运行得很好,但我自己的设备(android 2.3.4)就不行。

代码如下:转到contacts

代码语言:javascript
运行
复制
    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);      
    }

从联系人返回时:

代码语言:javascript
运行
复制
@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();      
}

同样,这在模拟器(android 2.3.4)和Jelly bean上有效,但在我的设备(android 2.3.5)上不起作用。

这是从日志中得出的结果:

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

发布于 2012-10-11 04:13:04

好的..。刚刚得到它,我必须添加一个权限到清单文件:

代码语言:javascript
运行
复制
<uses-permission android:name="android.permission.READ_CONTACTS"/>
票数 1
EN

Stack Overflow用户

发布于 2012-10-11 04:11:56

根据错误消息:

java.lang.RuntimeException:无法将结果内容{ResultInfo,request=1,result=-1,data=Intent {dat=ResultInfo://com.android.Contacts/data/2848 (has extras) }}传送到活动{com.example.mer/com.example.mer.SmsInfo}:java.lang.SecurityException:拒绝权限:从pid=5075读取result内容://com.android.Contacts/data/2848,uid=10125需要android.permission.READ_CONTACTS

您需要添加权限android.permission.READ_CONTACTS

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12809274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档