【发布时间】:2017-05-11 16:08:23
【问题描述】:
在我的应用程序中,我希望用户可以通过手动输入或从联系人列表中选择电话号码来用电话号码填写文本表单。我不明白的一件事是,如果用户自己选择联系人,为什么我应该设置READ_CONTACTS 权限。我正在使用下面列出的代码:
-
要启动联系人活动:
Intent pickContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST_CODE); -
处理来自
onActivityResult的Intent数据:Uri uri = data.getData(); if (uri != null) { Cursor c = null; try { c = getContentResolver() .query( uri, new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE }, null, null, null); if (c != null && c.moveToFirst()) { String number = c.getString(0); int type = c.getInt(1); showSelectedNumber(type, number); } } finally { if (c != null) { c.close(); } } }
据我了解,getContentResolver().query() 需要READ_CONTACTS 权限才能获取电话号码。
我的问题:是否可以在没有READ_CONTACTS 的情况下以某种方式处理 onActivityResult 中的 Intent?
【问题讨论】:
标签: android android-intent android-contacts android-permissions