我正在尝试修改我在 stackoverflow 上看到的 AutoCompleteTextView 的代码,以便为 MultiAutoCompleteTextView 返回多个联系人。
但是,当我将它加载到我的 Android 手机上时,我再也看不到任何可供选择的建议。我感觉问题出在 ArrayAdapter 初始化上,但我无法弄清楚它有什么问题。
在此先感谢您的帮助。
我的 multiautocompletetextview 有以下代码:
<MultiAutoCompleteTextView
android:id="@+id/mmWhoNo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0000A0"
android:hint="Choose your Contacts" />
Run Code Online (Sandbox Code Playgroud)
最后,我有以下内容可以阅读我的联系人,这些联系人是从自动完成文本视图中选择联系人并稍加修改后获得的。
private ArrayList<Map<String, String>> mPeopleList;
private ArrayAdapter mAdapter;
private MultiAutoCompleteTextView mTxtPhoneNo;
mPeopleList = new ArrayList<Map<String, String>>();
PopulatePeopleList();
mTxtPhoneNo = (MultiAutoCompleteTextView) findViewById(R.id.mmWhoNo);
mTxtPhoneNo.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
mTxtPhoneNo.setThreshold(1);
//just to check to see that mPeopleList is being populated
Log.i("Multiplecontacts",mPeopleList.get(0).toString());
mAdapter = new ArrayAdapter<ArrayList<Map<String,String>>>(this, android.R.layout.simple_dropdown_item_1line);
mAdapter.add(mPeopleList);
mTxtPhoneNo.setAdapter(mAdapter);
mTxtPhoneNo
.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View arg1, …
Run Code Online (Sandbox Code Playgroud) android autocompletetextview android-arrayadapter contactscontract
我正在尝试以编程方式启动联系人应用程序以导入包含大量联系人的大型.vcf文件.以下代码几乎完美无缺.
String vcfMimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("vcf");
Intent openVcfIntent = new Intent(Intent.ACTION_VIEW);
openVcfIntent.setDataAndType(Uri.fromFile(savedVCardFile), vcfMimeType);
startActivity(openVcfIntent);
Run Code Online (Sandbox Code Playgroud)
唯一的问题是Android显示应用程序选择器对话框,不仅显示联系人应用程序,还显示Dropbox(或任何其他处理vCard文件的应用程序).我想阻止此行为并使用联系人应用程序直接打开文件,以便自动启动导入.
我在StackOverflow上尝试了几件没有运气的东西,比如设置:
openVcfIntent.setComponent(new ComponentName("com.android.contacts", "com.android.contacts.DialtactsContactsEntryActivity"));
openVcfIntent.setAction("android.intent.action.MAIN");
openVcfIntent.addCategory("android.intent.category.LAUNCHER");
openVcfIntent.addCategory("android.intent.category.DEFAULT");
Run Code Online (Sandbox Code Playgroud)
关于如何处理这个问题的任何想法?
android vcf-vcard import-contacts contactscontract android-contacts
有没有办法以编程方式将联系人添加到内部电话通讯录中作为“电话联系人”?
我试过了:
list.add(ContentProviderOperation
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
Run Code Online (Sandbox Code Playgroud)
使用此参数,联系人成功保存到手机,但如果我将过滤器设置为“仅显示手机联系人” - 不会显示创建的联系人。顺便说一句,我读过null
type 的联系人可能会丢失干燥帐户同步(不记得完整的案例)
然后我尝试从现有的电话联系人中检索ACCOUNT_TYPE
和ACCOUNT_NAME
获取Phone
和Local Phone Account
字符串,但是当我尝试使用相同的参数保存联系人时:
list.add(ContentProviderOperation
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "Phone")
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "Local Phone Account")
.build());
Run Code Online (Sandbox Code Playgroud)
结果与null
type的第一种情况相同。
是否有任何常量(或者应该是另一种方式)来保存“电话联系人”等数据?
我想从我的应用程序Activity中启动Contacts应用程序.我无法理解如何做到这一点.
Button contact = (Button) findViewById(R.id.contact);
contact.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent i4 = new Intent();
i4.setAction(Intent.ACTION_VIEW);
i4.addCategory(Intent.CATEGORY_DEFAULT);
i4.setType("vnd.android.cursor.dir/phone");
startActivity(i4);
}
});
Run Code Online (Sandbox Code Playgroud)
错误:
我想实现T9搜索,例如android native Dialer或TrueCaller Dialer。我到目前为止所取得的成就是:
将击键转换为字符串模式,例如,如果我在拨号程序上按2,它将给我-“ abc”“ ac”“ ca”等
现在我查询
字符串选择= Utility.getSelectionLikeWithIn(mmemonics);
游标查询= getContentResolver()。query(ContactsContract.Contacts.CONTENT_URI,null,selection,null,null);'
公共静态字符串getSelectionLikeWithIn(List mmemonics){
String selection = "";
for (int i = 0; i < mmemonics.size(); i++) {
selection = selection + " display_name LIKE '";
selection = selection + mmemonics.get(i);
if (i == mmemonics.size() - 1){
selection = selection + "%'";
}else {
selection = selection + "%' OR";
}
}
return selection;
}'
Run Code Online (Sandbox Code Playgroud)
上面的方法将字符串的Arraylist转换为where子句
其中display_name喜欢'ab%'或display_name喜欢'abc%'等等……
好吧,这给了我效率低下的结果,并且由于复杂的查询而导致应用程序崩溃.....
请建议我如何执行查询以像我的击键一样进行匹配,或者以其他方式在ContactsProvider中进行匹配以执行此类智能搜索