我想阅读来自ContactsContract API的联系人,这些联系人只属于手机/ SIM卡,并希望避免与其他应用程序(如facebook和gmail)同步的联系人.我在模拟器上测试了我的代码并且它工作正常,但在真实设备上它不会返回任何结果.
ContentResolver cr = AndroidContext.getContext()
.getContentResolver();
Cursor nativeContacts = cr.query(RawContacts.CONTENT_URI,
new String[] { RawContacts._ID, RawContacts.VERSION, RawContacts.CONTACT_ID },
RawContacts.DELETED + "<> 1 AND " + RawContacts.CONTACT_ID
+ " IS NOT NULL AND " + RawContacts.ACCOUNT_NAME + " IS NULL AND "
+ RawContacts.ACCOUNT_TYPE + " IS NULL", null, null);
Run Code Online (Sandbox Code Playgroud)
我想在设备上默认帐户的帐户类型和名称不为空,解决方案是什么?
我有一个应用程序,其中一个方面是用户选择联系人并通过应用程序向该联系人发送文本.该应用程序仅适用于某些联系人,而其他联系人则失败 更确切地说:
对于我手工输入联系人的联系人,可以Intent.ACTION_PICK轻松找到并将其返回给应用程序,即cursor.moveToFirst()属实.
但对于Facebook导入的联系人(我的手机设置为与Facebook联系人同步),android.database.CursorIndexOutOfBoundsException我点击联系人后得到以下内容.我有一个明显的问题是:在我真正选择了一个联系人后,为什么结果大小为0?为什么是cursor.moveToFirst()假的?
...Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
05-15 17:57:04.741: E/AndroidRuntime(21301): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:418)
05-15 17:57:04.741: E/AndroidRuntime(21301): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
05-15 17:57:04.741: E/AndroidRuntime(21301): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
05-15 17:57:04.741: E/AndroidRuntime(21301): at android.database.CursorWrapper.getString(CursorWrapper.java:114)
05-15 17:57:04.741: E/AndroidRuntime(21301): at com.company.Game.SendTextActivity.onActivityResult(SendTextActivity.java:118)
05-15 17:57:04.741: E/AndroidRuntime(21301): at android.app.Activity.dispatchActivityResult(Activity.java:5436)
05-15 17:57:04.741: E/AndroidRuntime(21301): at android.app.ActivityThread.deliverResults(ActivityThread.java:3188)
05-15 17:57:04.741: E/AndroidRuntime(21301): ... 11 more
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
dispatchIntent:
Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone …Run Code Online (Sandbox Code Playgroud) 我不明白为什么我的代码不能用Swift编译.
我试图转换这个Objective-C代码:
CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
if (addressBook != nil) {
NSLog(@"Succesful.");
NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
}
Run Code Online (Sandbox Code Playgroud)
这是我目前在Swift中的演绎:
var error:CFErrorRef
var addressBook = ABAddressBookCreateWithOptions(nil, nil);
if (addressBook != nil) {
println("Succesful.");
var allContacts:CFArrayRef = ABAddressBookCopyArrayOfAllPeople(addressBook);
}
Run Code Online (Sandbox Code Playgroud)
但是,Xcode报道:
'Unmanaged'不能转换为'CFArrayRef'
你们有个主意吗?
只是尝试确定在使用registerContentObserver或其他方法时是否有一种简单的方法来确定哪些联系人发生了变化?我可以告诉数据库何时更改,但不确定每次更新/更改发生时我都要检查所有记录.
基本上,如果我有一个联系人列表,一个通过手动方法更新(即我更改联系人的电话号码或添加新的联系人),或自动(说ActiveSync照片添加,更改).我希望能够A)知道某些事情发生了变化,并且B)知道哪些联系人的某些数据发生了变化.
我正在尝试寻找某些用户,我可以从远程服务中匹配他们的照片.如果有更多信息添加到用户帐户,我希望能够检查它以查看它是否提供匹配.我不想安排它,我想在更新发生后这样做.
克里斯.
有谁知道这是怎么做到的吗?甚至链接到一些教程也会有所帮助.
我正在使用Android 2.1的设备.
可能重复:
如何在android中添加新联系人
public boolean createContact(String name, String number, String email)
{
boolean success = true;
try
{
ContentValues contentValues = new ContentValues();
ContentResolver contentResolver = getContentResolver();
contentValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
contentValues.put(Phone.NUMBER, "123254");
Uri uri = contentResolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, contentValues);
if(uri==null)
{
success = false;
}
}
catch (Exception e)
{
e.printStackTrace();
success = false;
}
return success;
}
Run Code Online (Sandbox Code Playgroud)
我得到NullPointer异常我不知道为什么我还指定了WRITE_CONTACTS权限.请帮我 ............
到目前为止,我看到了获取多个电话号码的方法,如果我显示一个选择器,那么用户可以选择人员,然后获取电话号码.我想要的是检索所有联系人的号码. 它甚至可能吗?
我正在将所有本地地址簿联系人导入我的应用程序.目前,要求获得"允许访问联系人"权限的alertview在应用程序启动时完成.
如何更改它以便在应用程序的其他位置询问权限?点击按钮就像Instagram一样?
看这张图:

在我的应用程序中,我使用的是联系人同步适配器,但它有很多与主应用程序共享的信息.有适配器需要工作的设置(如登录信息和用户更改任何同步设置),所以我目前在同一个进程中运行它,并与主ap通信使用getApplicationContext(),然后我有一些共享Application同步适配器在同步过程中使用的变量.
但是在培训文档和在线的一些教程中,示例适配器被设置为在其自己的进程中运行 - 它android:process=":sync"在清单中使用.这有必要吗?如果它确实在一个单独的进程中运行,我该如何与主应用程序进行通信?
我是一名业余网页设计师,我在stackoverflow.com和其他网站上搜索过并找到了很多针对此问题的修复程序,但是没有一个有效(可能是因为我错误地实现了它们).我希望有更多知识的人可以帮我解决一个简单的问题,或者告诉我如何实现我发现的一个修复程序.
问题:我在我的公司网站上有一个非常简单的php联系表格.它已经运作了很多年,但在上周被黑了.我现在每天收到数百份没有评论的联系表格提交,他们只有(显然是有效的)电子邮件地址,以及名称字段中的一串字符(如"58ee8b52eef46").
我已经尝试了几种技术来防止这种垃圾邮件,它们要么破坏我的PHP表单,要么它们不会阻止垃圾邮件.如果可能的话,我想要一个不需要Captcha失真文本测试的解决方案,并且不需要填写表单的所有字段.
这是我的完整PHP代码:
<?php
if(isset($_POST['email'])) {
$email_to = "myemail@example.com";
$email_subject = "website form submission";
function died($error) {
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
if (!isset($_POST['name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form …Run Code Online (Sandbox Code Playgroud) contacts ×10
android ×6
addressbook ×2
ios ×2
contact ×1
forms ×1
ios8 ×1
objective-c ×1
permissions ×1
php ×1
spam ×1
sqlite ×1
swift ×1
sync ×1