我想在列表视图中显示联系人并在所有联系人上添加操作,例如点击特定联系人时应显示电话号码,邮件ID和删除特定联系人...
import android.app.ListActivity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class CPDemo1 extends ListActivity {
@SuppressWarnings("unchecked")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String str[]= {"datta","vivek","Nagesh sir","shiv"};
String name;
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
int nameIdx = cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
if (cursor.moveToFirst())
do {
int x = 0;
name = cursor.getString(nameIdx);
str[x]= name;
x++;
ArrayAdapter arr = new ArrayAdapter(this, android.R.layout.simple_list_item_1,str);
setListAdapter(arr);
} …Run Code Online (Sandbox Code Playgroud) 是否有任何标准的广播意图,我可以注册一个BroadcastReceiver,只要添加或更改联系人就会触发?我一直在浏览文档一段时间但没有找到任何东西.也许它隐藏在某个深处,你们其中一个人知道在哪里.
我正在尝试允许用户使用联系人选择器从联系人中选择电话号码.但是,现在我在网上看到的所有示例都显示了如何选择一个联系人,但我希望有一个第二个屏幕然后弹出,如果该联系人有多个电话号码,那么你可以指定你想选择哪一个(方式)当您选择联系人时,该短信允许您这样做.
我的问题是,您是否必须收集所有数字,然后要求用户选择一个号码,或者此功能是否已内置到Android中?我希望我忘记了旗帜或其他东西.
android picker phone-number contactscontract android-contacts
我真的不明白为什么内容观察者会听取与联系信息无关的更改.
我只是注册了我想听的变化的URI:
getContentResolver().registerContentObserver(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, true, contactsObserver);
Run Code Online (Sandbox Code Playgroud)
但是在给某人打电话或发短信后,它会在ContentObserver中触发并调用onChange方法.所以我需要将所有联系人列表与我的应用程序重新同步,尽管我不需要这样做.
只有我感兴趣的领域:
我应该实现哪些更改来监听此数据库项目的更改?
我的SD卡中有多个vcf文件.我想将这些vcf文件导入我的联系人.
我使用以下代码:
File file = new File(storage_path);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "text/x-vcard");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
通过使用上面的代码,我无法一次导入一个vcf文件.我想一次导入多个vcf文件.通过使用上面的代码我也得到重复的联系人.
除了意图之外,还有其他有效的方法来导入联系人吗?谢谢.
在像 whatsapp 这样使用电话身份验证的应用程序中:
当任何用户打开查看他/她的联系人时,whatsapp 将仅显示您手机中使用 whatsapp 的联系人(就像他们过滤您的联系人一样)。
我对实现类似的想法的想法:
我可以将所有用户保存在一个数据库中(当他们通过我的应用程序进行身份验证时),现在当我在活动中加载联系人时,我会检查该联系人是否存在于数据库中,如果该用户存在,那么我将他/她添加到列表。
问题:
如果我使用上述方法:
然后假设我在数据库中有 10,000 个用户,那么每次我想在我的应用程序中显示用户的联系人时循环遍历 10,000 个用户是没有意义的。
题:
你认为像whatsapp这样的应用程序如何实现这样的事情?
我正在尝试将自定义数据字段和MIME类型添加到"联系人"屏幕.有没有办法做到这一点,当用户用我保存在其上的数据查看联系人时,我的字段会出现在那里?这是我见过其他应用程序所做的事情 - 例如,Facebook,Twitter,Last.fm等应用程序如何将其状态信息添加到联系人?我似乎无法从Contacts API文档中找到它.
有人知道如何获取属于Android中1个特定群组的联系人列表吗?
我需要这样的东西:
Select * from contacts where group_id = "1234"
Run Code Online (Sandbox Code Playgroud)
我可以使用以下内容获取所有联系人或所有组的列表:
Cursor groupCursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
final ArrayList<String> contacts = new ArrayList<String>();
while(groupCursor.moveToNext()) {
String name = groupCursor.getString(groupCursor.getColumnIndex(ContactsContract.Constacts.DisplayName ));
contacts.add(name);
}
Run Code Online (Sandbox Code Playgroud) 我正在对AsyncTaskLoader进行一些实际操作,因此我可以使用该技术加载联系人列表.代码工作的唯一情况是,当我实现从延伸到一类的回调Fragment中MyLoader extends Fragment implements LoaderCallbacks<ArrayList<Contact>>.还有另外一种方法吗?我真正需要的是联系人列表(姓名,电话,缩略图),发送到我的后端.例如,当我尝试使用时Context,因为我可以通过简单的操作从任何活动中获得它(Context)this,所以代码甚至无法编译.我的意思是上下文
context.getLoaderManager().initLoader(1, null, this);
//I already changed to Fragment so don't really remember the exact ".context" line.
//But someone who has done this will understand the snippet.
Run Code Online (Sandbox Code Playgroud)
顺便说一句:我正在使用多个参考文献.一个是http://developer.android.com/reference/android/content/AsyncTaskLoader.html.
问题(再次):我可以使用没有Fragment或FragmentActivity的AsyncTaskLoader吗?
与碎片一起使用的代码:
package com.example.contactpreload.utils;
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
public class LoadingContacts extends Fragment implements LoaderCallbacks<ArrayList<Contact>> {
ArrayList<Contact> loadedContacts;
static Fragment fragmentActivity;
public static LoadingContacts newInstance(int arg) {
LoadingContacts f = new LoadingContacts(); …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个自定义帐户类型,我可以在android ContactsContract ContentProvider中成功创建该类型的联系人.但是,在编辑默认联系人应用程序中的联系人时,我很难弄清楚如何获取我的自定义帐户标签和图标.
编辑自定义联系人类型时,标签应为"联系人",右侧是应用程序图标.相反,编辑我的类型的联系人始终显示"仅限电话,未同步的联系人"标签.有关示例,请参见下面的第一个屏幕截图
奇怪的是,它确实提取了我的帐户名称,您可以在错误标签下面的屏幕截图中看到它(以"+1415"开头).
我已经在帐户下的设置应用程序中成功显示了我的应用程序的标签和图标,所以我知道我正在做正确的事情.请参阅下面的第二个屏幕截图,以获取相关证明(帐户标签为"Bolt").

我有以下authenticator.xml:
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="@string/account_type"
android:label="@string/app_name"
android:icon="@drawable/app_icon"
android:smallIcon="@drawable/app_icon" />
Run Code Online (Sandbox Code Playgroud)
这是我的syncadapter.xml:
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="@string/contacts_content_authority"
android:accountType="@string/account_type"
android:userVisible="true"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"
android:supportsUploading="false" />
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我哪里出错吗?我可以根据需要提供更多信息.我尝试使用CLIENT_IS_SYNCADAPTER参数从我的SyncAdapter中创建联系人但没有改变任何内容.我也尝试过其他一些东西,但还没有任何工作.
android android-syncadapter android-contacts android-account
android ×10
android-contacts ×10
contacts ×1
java ×1
list ×1
listactivity ×1
listview ×1
phone-number ×1
picker ×1
vcf ×1
vcf-vcard ×1