标签: android-contacts

如何从联系人快捷菜单中为我的应用程序添加链接

我想编写与Contacts相关的应用程序.

场景:

  1. 输入电话联系人
  2. 我们选择联系项目

在此输入图像描述

  1. 单击MyApp(该图标仅适用于带号码的联系人)
  2. 查看联系号码,以便用户可以单击其中任何一个

  3. 我的应用程序将打开.

这是我到目前为止的地方:我在清单文件中添加了以下内容 -

            <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="vnd.android.cursor.item/name" />
        </intent-filter>
Run Code Online (Sandbox Code Playgroud)

结果是我可以看到所有联系人的MyApp图标,而不仅仅是电话号码,当我选择它时,我可以看到联系人姓名而不是可用的号码.

在此输入图像描述

我必须添加到AndroidManifest以便查看联系人电话号码或在其中放置自定义文本?

  • 使用新的MIMETYPE添加我自己的联系人对我来说不是一个选择......

android dialog android-manifest android-contentresolver android-contacts

6
推荐指数
1
解决办法
2884
查看次数

Android:PhoneLookup的目录数据提供程序

我正在编写一个自定义的Android联系人目录,已经实现了ContactsContract.Directory提供程序,并且可以在电话应用程序中进行搜索。

我现在面临的问题是,当我有打入/打出电话时,Android拨号程序不会查询我注册的自定义目录。是否可以通过PhoneLookup或其他方式参与来电显示解析?

作为一种可能的解决方法,我尝试使用BroadcastReceiver实现呼出/呼入呼叫拦截器,但是我看不到将联系数据返回到拨号器的方法。我发现用于显示数据的唯一选项是将透明活动覆盖在本机拨号程序上。有没有一种方法可以将联系方式返回给发送广播的拨号程序?还有其他可以尝试的想法吗?

PS。Google使用了我正在尝试为附近地点的目录列表和Google来电显示提供的功能。

PPS。通过阅读PhoneLookup的ContactsContract实现,我偶然发现了公司联系人目录,该目录可以附加到用户配置文件的默认目录中,根据应为PhoneLookup查询的代码,所以我将在星期一尝试使用它。

android android-contacts android-dialer

6
推荐指数
0
解决办法
380
查看次数

原生联系人更改通知

每当添加或删除或更改联系人时,如何在我的应用程序中获得回调?是否有任何标准的广播意图,我可以为此注册BroadcastReceiver?

android android-contacts

5
推荐指数
1
解决办法
5392
查看次数

使用联系人自动完成TextView

我需要显示一个自动完整的文本框,它基本上会加载联系人电子邮件ID.我已经尝试使用自定义适配器,但没有任何内容填充在文本框中.没有任何建议.任何解决方案都非常有用.

android textbox android-contacts

5
推荐指数
1
解决办法
4623
查看次数

检查是否安装了应用的联系人

我正在构建一个应用程序,用户可以在其中安装此应用程序的设备的联系人(使用phoneNumber)进行交互(几乎是Whatsapp,Viber功能)

现在可以通过函数getContacts()实现此功能

  1. 在我的服务器上存储所有应用程序注册
  2. 从应用程序,将所有联系人发送到服务器并在服务器响应中接收已注册的联系人

但是,这会在添加/删除联系人或更新现有联系人的情况下导致同步问题

为此,我的知识指导我三种选择

  1. 每次启动应用程序时,都要调用此getContacts()方法,以便检索到的数据是新鲜的
    • 不确定这是否是Whatsapp&viber使用的方法,它可以实现,但在每次发布时都会进行大量不必要的处理
  2. 让后台服务通过getContacts()方法轮询服务器
    • 这可以保持联系人同步
    • 但是,这不会立即刷新更改.在Whatsapp中,如果我更改了联系人的姓名,它几乎可以即时反映出来
  3. 在ContactsContract.CONTENT_URI上注册一个ContentObserver(对此真的不是很了解)

请提供您的见解

android android-contacts contentobserver

5
推荐指数
0
解决办法
599
查看次数

如何获取所有联系人姓名,姓氏,电子邮件,电话号码等,无需重复

我正在尝试使用以下代码获取手机通讯录中所有联系人的详细信息.但面临重复值的小问题.

EDITED

实际代码开头: -

private String refreshData() {
        String emaildata = "";
        try {
            ContentResolver cr = getBaseContext().getContentResolver();
            String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP
                    + " = '" + ("1") + "'";
            String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
                    + " COLLATE LOCALIZED ASC";
            Cursor cur = cr
                    .query(ContactsContract.Contacts.CONTENT_URI,
                            null,
                            selection
                                    + " AND "
                                    + ContactsContract.Contacts.HAS_PHONE_NUMBER
                                    + "=1", null, sortOrder);

            if (cur.getCount() > 0) {
                Log.i("Content provider", "Reading contact emails");
                while (cur.moveToNext()) {
                    mContactSet.add(cur.getString(cur
                            .getColumnIndex(ContactsContract.Contacts._ID)));
                }
            } else {
                emaildata += "Data not found."; …
Run Code Online (Sandbox Code Playgroud)

android contactscontract android-contentprovider android-contacts

5
推荐指数
1
解决办法
8446
查看次数

Android:插入后获取联系人ID

我需要在创建新联系人后存储联系人ID值,以便能够在其他时刻引用它.例如,我创建了一个新联系人,之后我想从其联系人ID中删除它,因此我需要在创建新联系人后检索联系人ID值.这是我创建新联系人的方式:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, tipoCuenta).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, cuenta).build());

//Insert some data here....

c.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

//Here, I want to retrieve contact id
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

android contacts android-contacts

5
推荐指数
2
解决办法
2453
查看次数

使用ContentProvider从Android获取电话号码 - Android

我正在制作一个小应用程序,我可以使用内容提供商获取手机的联系人,并将其显示在列表视图中,如图所示.

在此输入图像描述

我想选择列表视图的一行,并自动拨打该特定联系人的电话.我尝试了一些东西,但它们不起作用.有任何想法吗?这是我的代码.

public class MainActivity extends ListActivity implements AdapterView.OnItemClickListener{
ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ContentResolver cr = getContentResolver();
    Cursor c = cr.query(ContactsContract.Contacts.CONTENT_URI,
            new String[] {ContactsContract.Contacts.DISPLAY_NAME},
            null, null, null);

    List<String> contacts = new ArrayList<String>();
    if (c.moveToFirst()) {
        do {
            contacts.add(c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
        } while (c.moveToNext());
    }
    adapter = new ArrayAdapter<String>(this, R.layout.activity_main, contacts);
    setListAdapter(adapter);



}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

      //The answer should be inside here.

  }
}
Run Code Online (Sandbox Code Playgroud)

android android-contacts

5
推荐指数
1
解决办法
7643
查看次数

如何将阵列列表与移动联系人进行比较

我有一个数组列表.

1)我的第ArrayList<String> some_num = new ArrayList<String>();一个包含这样的值.

[1111111111, 2222222222] 
Run Code Online (Sandbox Code Playgroud)

现在我试图将此与我的移动联系人进行比较.

  Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
  String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                        ContactsContract.CommonDataKinds.Phone.NUMBER};

                Cursor people = getActivity().getContentResolver().query(uri, projection, null, null, null);

                int indexName = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
                int indexNumber = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                int j_count=0;
                String number;
                people.moveToFirst();
                do {

                    String name   = people.getString(indexName);
                     number = people.getString(indexNumber);
                    j_count++;


                    // Do work...
                } while (people.moveToNext());




                for(int j=0;j<=j_count;j++){

                    if (some_num.contains(number)){
                        // do nothing
                    }
                    else{
                    Log.e("num",number);
                    }
                }
Run Code Online (Sandbox Code Playgroud)

我试图从移动电话簿中获取我的ArrayList中不存在的那些数字.我知道在条件中我必须获得数组的值,但是当我尝试这样做时,我没有得到其余的联系.

提前致谢

android arraylist android-contacts

5
推荐指数
1
解决办法
742
查看次数

在电话簿中添加自定义联系人行,如Whatsapp

基本上,我需要实现的目标非常明确,但是我在实现过程中存在很多疑问。我进行了有关此主题的研发,但未找到满意的答案。希望你们能理解我并进一步帮助我。

所以这是我想做的屏幕截图:

联系人详细信息页面

图片

到目前为止,我所做的是:

Manifest.xml

        <activity
            android:name=".AddCardActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <!--<data android:mimeType="vnd.android.cursor.item/vnd.ccc.in.businesscard" />-->
            </intent-filter>
        </activity>

        <service
            android:name=".customcontact.AccountAuthenticatorService"
            android:exported="true"
            android:process=":auth">
            <intent-filter>
                <action android:name="android.accounts.AccountAuthenticator" />
            </intent-filter>
            <meta-data
                android:name="android.accounts.AccountAuthenticator"
                android:resource="@xml/authenticator" />
        </service>

        <service
            android:name=".customcontact.ContactsSyncAdapterService"
            android:exported="true"
            android:process=":contacts">
            <intent-filter>
                <action android:name="android.content.SyncAdapter" />
            </intent-filter>

            <meta-data
                android:name="android.content.SyncAdapter"
                android:resource="@xml/sync_contacts" />
            <meta-data
                android:name="android.provider.CONTACTS_STRUCTURE"
                android:resource="@xml/contacts" />
        </service>
Run Code Online (Sandbox Code Playgroud)

在这里我需要定义intent-filter标签mime-type吗?如果mime-type以上定义,我的应用程序未在设备的应用程序列表中列出。

Manifest.XML中的权限:

<uses-permission
        android:name="android.permission.AUTHENTICATE_ACCOUNTS"
        android:maxSdkVersion="22" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" …
Run Code Online (Sandbox Code Playgroud)

account android android-contacts phonebook

5
推荐指数
0
解决办法
1066
查看次数