我知道如何在Android中获取所有联系人,以及如何获取他们的电话号码.
我似乎无法弄清楚如何通过电话号码联系...
这是我编写的当前代码,用于测试哪些电话号码可用:
// Create a cursor
Cursor cursor = Base.contentResover().query(Phone.CONTENT_URI, null, null,
null, null);
if (cursor.moveToNext()) {
Log.d("CALLOG", cursor.getString(cursor.getColumnIndexOrThrow(Phone.NUMBER)));
}
Run Code Online (Sandbox Code Playgroud)
问题是我只收到一些电话号码,而我希望得到所有...我做错了什么?
我正在尝试使用以下代码访问联系人姓名和电子邮件ID:
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
public class GetAllDatas extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
readContacts();
}
private void readContacts() {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
System.out.println("name : …
Run Code Online (Sandbox Code Playgroud) 我正在尝试用所有者的电子邮件填充ArrayList.我是在一个片段中这样做的.这是我的代码:
public class ItemDetailFragment extends Fragment implements
LoaderManager.LoaderCallbacks<Cursor> {
ArrayList<String> emails = new ArrayList<String>();
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(0, null, this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.formal_email_layout,
container, false);
return myFragmentView;
}
public Loader<Cursor> onCreateLoader(int id, Bundle arguments) {
return new CursorLoader(getActivity(),
// Retrieve data rows for the device user's 'profile' contact.
Uri.withAppendedPath(
ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY),
ProfileQuery.PROJECTION,
// Select only email addresses.
ContactsContract.Contacts.Data.MIMETYPE + " = ?",
new String[]{ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE}, …
Run Code Online (Sandbox Code Playgroud) 我有下一个问题.我试图找到解决方案,但我没有找到任何解决我的问题.
我是phonegap开发的新手,我正在做一些"测试".现在,我想在智能手机中显示所有联系人.
按照此处输入链接描述,首先我添加插件:cordova插件添加https://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts.git
但是我使用的是phonegap而不是cordova.
接下来我添加:(在app/res/xml/config.xml中)
<feature name="Contacts">
<param name="android-package" value="org.apache.cordova.ContactManager" />
</feature>
Run Code Online (Sandbox Code Playgroud)
(在app/AndroidManifest.xml中)
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
Run Code Online (Sandbox Code Playgroud)
最后,我使用了完整的例子.
但是,当我启动App时,Eclipse中出现了下一个错误:
我不知道如何解决这个问题:S
谢谢你的时间!
我想实现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中进行匹配以执行此类智能搜索
我正在研究android应用程序,我已从我的应用程序中删除了Contact Permission.但它仍然在App Settings中显示.下面是我声明的权限列表,如何跟踪为什么仍然在移动设备的应用程序设置中显示联系人权限.
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.SET_DEBUG_APP"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- If c2dm permission is removed, parse starts working, else c2dm takes control -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="com.responder.murgency.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)