android - 检索电话号码列表 onActivityResult
问题描述
我正在使用GitHub
MultiContactPicker的库,用于使用custom ListView
. 我能够获取用户选择的联系人姓名(onActivityResult),但无法获取电话号码。
该库使用private List<PhoneNumber> mPhoneNumbers = new ArrayList<>();
并且我试图获取此列表,但onActivityResult
不返回此列表。当调用 ContactPicker 时:
new MultiContactPicker.Builder(MainActivity.this) //Activity/fragment context
.theme(R.style.MyCustomPickerTheme) //Optional - default: MultiContactPicker.Azure
.hideScrollbar(false) //Optional - default: false
.showTrack(true) //Optional - default: true
.searchIconColor(Color.WHITE) //Option - default: White
.setChoiceMode(MultiContactPicker.CHOICE_MODE_MULTIPLE) //Optional - default: CHOICE_MODE_MULTIPLE
.handleColor(ContextCompat.getColor(MainActivity.this, R.color.colorPrimary)) //Optional - default: Azure Blue
.bubbleColor(ContextCompat.getColor(MainActivity.this, R.color.colorPrimary)) //Optional - default: Azure Blue
.bubbleTextColor(Color.WHITE) //Optional - default: White
.setTitleText("Select Contacts") //Optional - default: Select Contacts
.setSelectedContacts("10", "5" / myList) //Optional - will pre-select contacts of your choice. String... or List<ContactResult>
.setLoadingType(MultiContactPicker.LOAD_ASYNC) //Optional - default LOAD_ASYNC (wait till all loaded vs stream results)
.limitToColumn(LimitColumn.NONE) //Optional - default NONE (Include phone + email, limiting to one can improve loading time)
.setActivityAnimations(android.R.anim.fade_in, android.R.anim.fade_out,
android.R.anim.fade_in,
android.R.anim.fade_out) //Optional - default: No animation overrides
.showPickerForResult(CONTACT_PICKER_REQUEST);
活动结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CONTACT_PICKER_REQUEST){
if(resultCode == RESULT_OK) {
List<ContactResult> results = MultiContactPicker.obtainResult(data);
Log.d("MyTag", results.get(0).getDisplayName());
} else if(resultCode == RESULT_CANCELED){
System.out.println("User closed the picker without selecting items.");
}
}
}
onActivityResult;List<ContactResult> results
默认情况下只提供名称,但我也想获取电话号码。
解决方案
我为你找到了这个 github 存储库AndroidContacts。
这个 Repo 的基本用法是:
- 从安卓设备获取所有联系人
- 从联系人获取特定数据
- 查询内部联系人
- 保存新联系人
或者
您也可以通过以下方式使用此代码获取电话号码ContentResolver
:
final ContentResolver cr = getContentResolver();
String[] projection = new String[] {Contacts.DISPLAY_NAME, Phone.NUMBER};
final Cursor c = cr.query(Data.CONTENT_URI, projection, null, null, null);
myCursorAdapter = new SimpleCursorAdapter(this, R.layout.list_item, c, new String[] {Phone.NUMBER}, new int[]{R.id.TVRow}, 0);
myPhoneList.setAdapter(myCursorAdapter);
myPhoneList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
c.moveToPosition(position);
Toast.makeText(getApplicationContext(), c.getString(1), Toast.LENGTH_SHORT).show();
}
});
为了更好地理解去官方文档
Ans reference:如果你想在这里是已经给出的答案
推荐阅读
- blockchain - Chainlink.Request 没有 `add` 功能
- android - 以编程方式更改 TTS 的语言
- nginx - 启用跟踪后,CKAN 页面变慢
- php - 如何从php表单在本地目录中创建静态页面
- python - PySpark Dataframe pickle 异常:构造 ClassDict 的预期零参数(对于 pyspark.ml.linalg.DenseVector)
- typescript - WebStorm IDE 对 Vue 3 Composition API 的支持真的很差,还是我的配置搞砸了?
- python - 如何绘制每日最大值
- vue.js - Vue3基于父级传递的异步prop获取数据的最佳方法
- javascript - 在 mousemove 上更改与其中心相关的按钮位置
- r - (堆叠)在 facet_grid 内分组的条形图