Xamarin 中的 PhoneInfo java 类
Posted
技术标签:
【中文标题】Xamarin 中的 PhoneInfo java 类【英文标题】:PhoneInfo java class in Xamarin 【发布时间】:2016-07-06 12:26:42 【问题描述】:我正在尝试创建 android 应用程序来更新 Xamarin 上的联系人多个电话号码。我在下面找到了代码,但在 java 上(我已经将 java 更改为 c#)
public void MultipleNulbers(int allPhoneNumbersLength, string Id)
List<ContentProviderOperation> ops = new List<ContentProviderOperation>();
for (int j = 0; j < allPhoneNumbersLength; j++)
PhoneInfo phoneInfo = (PhoneInfo)allPhoneNumbers.ElementAt(j);
int phoneType = phoneInfo.GetIndex(); // phoneType = Phone.TYPE_HOME, Phone.TYPE_WORK, etc
ContentProviderOperation.Builder builder = ContentProviderOperation.NewUpdate(ContactsContract.Data.ContentUri);
builder.WithSelection(ContactsContract.Data.InterfaceConsts.RawContactId + "=?" + " AND " +
ContactsContract.Data.InterfaceConsts.Mimetype + "=?" + " AND " +
ContactsContract.CommonDataKinds.Phone.InterfaceConsts.Type + "=?", new String[]
Convert.ToString(Id),
ContactsContract.CommonDataKinds.Phone.ContentItemType,
Convert.ToString(phoneType)
);
builder.WithValue(ContactsContract.CommonDataKinds.Phone.Number, redactTextNumber.Text);
builder.WithValue(ContactsContract.CommonDataKinds.Phone.InterfaceConsts.Type,
ContactsContract.CommonDataKinds.Phone.InterfaceConsts.TypeCustom);
ops.Add(builder.Build());
this.ContentResolver.ApplyBatch(ContactsContract.Authority, ops);
但视觉工作室不理解电话信息类。我想知道,是否有一些方法可以更新 1 个联系人的不同电话号码,或者如何在 Xamarin 上替换 PhoneInfo。
【问题讨论】:
PhoneInfo 似乎不是标准的 Android 类。您从哪里获得原始 java 示例? allPhoneNumbers 来自哪里? ***.com/questions/14785210/… ***.com/questions/14785210/… 我想我找到了问题,但我仍然无法获得电话号码标签 【参考方案1】:public Dictionary<string, int> RedactPhoneNumbers(string Id)
Dictionary<string, int> numbersAndTypes = new Dictionary<string, int>();
List<string> allNumbers = new List<string>();
List<int> allTypes = new List<int>();
ContentResolver cr = ContentResolver;
ICursor pCur = cr.Query(ContactsContract.CommonDataKinds.Phone.ContentUri, null,
ContactsContract.CommonDataKinds.Phone.InterfaceConsts.ContactId + " = ?", new String[]
Id
,
null);
while (pCur.MoveToNext())
int phNumber = pCur.GetColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.Number);
allNumbers.Add(pCur.GetString(phNumber));
ICursor lCur = cr.Query(ContactsContract.CommonDataKinds.Phone.ContentUri, new String[]
ContactsContract.CommonDataKinds.Phone.InterfaceConsts.Type,
ContactsContract.CommonDataKinds.Phone.InterfaceConsts.Label
,
ContactsContract.CommonDataKinds.Phone.Number + " = ?", new String[]
Convert.ToString(phNumber)
,
null);
while (lCur.MoveToNext())
int lblIndex = lCur.GetColumnIndex(ContactsContract.CommonDataKinds.Phone.InterfaceConsts.Label);
allTypes.Add(lCur.GetInt(lblIndex));
lCur.Close();
pCur.Close();
numbersAndTypes = allNumbers.ToDictionary(x => x, x => allTypes[allNumbers.IndexOf(x)]);
return numbersAndTypes;
【讨论】:
请帮助我提出正确的请求以获取标签。我的方法没有给字典添加任何标签以上是关于Xamarin 中的 PhoneInfo java 类的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Studio 中的 java Lang UnsupportedClassVersion 错误
Xamarin 中的 Android ParsePushBroadcastReceiver