标签: android-contacts

阅读android中所有联系人的电话号码

我正在使用此代码检索所有联系人姓名和电话号码:

String[] projection = new String[]
{
    People.NAME,
    People.NUMBER
};

Cursor c = ctx.getContentResolver().query(People.CONTENT_URI, projection, null, null, People.NAME + " ASC");
c.moveToFirst();

int nameCol = c.getColumnIndex(People.NAME);
int numCol = c.getColumnIndex(People.NUMBER);

int nContacts = c.getCount();

do
{
  // Do something
} while(c.moveToNext());
Run Code Online (Sandbox Code Playgroud)

但是,这只会返回每个联系人的主号码,但我也想获得次要号码.我怎样才能做到这一点?

android contacts phone-number android-contacts

68
推荐指数
6
解决办法
14万
查看次数

Android:从电话号码中检索联系人姓名

我想检索与传入电话号码关联的联系人姓名.当我处理broascastreceiver中的传入号码时,有一个带有传入呼叫者姓名的字符串将极大地帮助我的项目.

我认为这涉及使用sql WHERE子句作为过滤器的查询,但是我是否需要对联系人进行排序?一个例子或提示将是非常有帮助的.

android phone-number contactscontract android-contacts

49
推荐指数
3
解决办法
6万
查看次数

权限拒绝:在Android Studio中从ProcessRecord打开提供程序com.android.providers.contacts.ContactsProvider2

当我尝试从手机读取联系人时,我收到此错误,并且我READ_CONTACTS在Manifest文件中包含了权限.奇怪的是它在Eclipse中运行良好,但当我将项目转换为Gradle并在Android Studio中运行时,我收到此错误.

logcat说:

权限拒绝:从ProcessRecord打开提供程序com.android.providers.contacts.ContactsProvider2 {302f069 29282:com.GP/u0a322}(pid = 29282,uid = 10322)需要android.permission.READ_CONTACTS或android.permission.WRITE_CONTACTS

这是清单代码:

<uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />

    <!-- Read Contacts from phone -->
    <uses-permission android:name="android.permission.read_contacts" />
    <uses-permission android:name="android.permission.read_phone_state" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
Run Code Online (Sandbox Code Playgroud)

permissions android contacts android-contacts android-studio

36
推荐指数
3
解决办法
5万
查看次数

如何从Android应用程序发送和接收短信?

我想在我的应用程序中添加短信发送功能,并且还希望用户可以直接从应用程序中选择联系人列表中的联系人.是否可以将联系人列表与我的应用程序集成.

谢谢

sms android android-contacts

35
推荐指数
3
解决办法
9万
查看次数

片段的onActivityResult

我目前有一个托管单个片段的基本活动.在片段内部,我有一个启动联系人选择器的方法.

private void chooseContacts() {
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK,      ContactsContract.Contacts.CONTENT_URI);
    pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}
Run Code Online (Sandbox Code Playgroud)

当此活动返回时,我应该如何捕获结果.我试过添加一个

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //Handle Code
}
Run Code Online (Sandbox Code Playgroud)

我的基本活动和片段,但没有触发任何方法.如果可能的话,我想让片段处理返回,以免混淆活动.

请告诉我这种情况下的最佳做法.

更新:

如果我改变:

startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
Run Code Online (Sandbox Code Playgroud)

getActivity().startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
Run Code Online (Sandbox Code Playgroud)

然后它工作,但其他帖子让我认为这是不正确的.

java android android-intent android-contacts android-fragments

34
推荐指数
3
解决办法
6万
查看次数

按电话号码搜索联系人

在我的应用程序中,用户写了一个电话号码,我想找到该电话号码的联系人姓名?

我经常搜索这样的联系人:

Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
            null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

但我这样做是为了访问所有联系人...在这个应用程序中,我只想获取给定电话号码的联系人姓名...如何限制查询?

或者我是否必须通过所有联系人,看看是否有给定的电话号码?但我相信这可能会很慢......

android android-contacts

29
推荐指数
2
解决办法
4万
查看次数

在Android 2.2中插入联系人

我正在尝试插入新的RawContact联系人,但是RawContact当我通过"联系人"或电话簿查看联系人时,添加的内容无法显示.据我了解,如果我们创建了一个RawContact并且没有与之关联的联系人,那么将自动插入联系人.我得到一个有效的值,rawContactId并没有抛出异常,所以我假设插入成功.我做错了什么或者我错过了什么?我正在使用开发人员网站的代码示例,只需将其粘贴到此处:

 ContentValues values = new ContentValues();
 values.put(RawContacts.ACCOUNT_TYPE, accountType); 
 values.put(RawContacts.ACCOUNT_NAME, accountName);
 Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values); 
 long rawContactId = ContentUris.parseId(rawContactUri); 

 values.clear(); 
 values.put(Data.RAW_CONTACT_ID, rawContactId); 
 values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); 
 values.put(StructuredName.DISPLAY_NAME, "Mike Sullivan"); 
 getContentResolver().insert(Data.CONTENT_URI, values); 
Run Code Online (Sandbox Code Playgroud)

android android-contacts

27
推荐指数
2
解决办法
2万
查看次数

Android获取ArrayList中的所有联系人电话号码

我试图将所有联系人电话号码保存在ArrayList中,但我无法找到方法.有没有办法让他们而不是用ContactsContract一个一个地挑选它们?

java android phone-number android-contacts

27
推荐指数
3
解决办法
4万
查看次数

如何在android中以编程方式删除联系人

我尝试以下代码删除指定号码的联系人:

private void removeContact(Context context, String phone) {
    //context.getContentResolver().delete(Contacts.Phones.CONTENT_URI, phone, null);
    context.getContentResolver().delete(Contacts.Phones.CONTENT_URI,
          Contacts.PhonesColumns.NUMBER+"=?", new String[] {phone});
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:

java.lang.UnsupportedOperationException: Cannot delete that URL: content://contacts/phones
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:130)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:110)
    at android.content.ContentProviderProxy.delete(ContentProviderNative.java:362)
    at android.content.ContentResolver.delete(ContentResolver.java:386)
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何解决我的问题吗?

谢谢.

android android-contentresolver android-contacts

24
推荐指数
4
解决办法
4万
查看次数

如何检查游标是否为空?

当我试图从手机的联系人列表中获取电话号码时.问题是,当我在手机中的联系人列表为空时运行应用程序时,应用程序已停止.我检查了一下,这是因为光标是空的.

如何检查光标是否为空或手机的联系人列表中是否有任何联系人?

ArrayList<String> lstPhoneNumber = new ArrayList<String>();
Cursor phones = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
lstPhoneNumber = new ArrayList<String>();

phones.moveToFirst();
// The problematic Line:
lstPhoneNumber.add(phones.getString(phones.getColumnIndex(
        ContactsContract.CommonDataKinds.Phone.NUMBER))); 
while (phones.moveToNext()) {
    lstPhoneNumber.add(phones.getString(phones.getColumnIndex(
            ContactsContract.CommonDataKinds.Phone.NUMBER))); 
}
phones.close();
Run Code Online (Sandbox Code Playgroud)

android cursor android-contacts

23
推荐指数
4
解决办法
4万
查看次数