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 中的接口回调

Xamarin 中的 Android ParsePushBroadcastReceiver

Xamarin.ios引用第三方SDK

Xamarin.Android Java绑定库运行时失败访问本机库

Android 库 (jar/aar) 可以用于 Xamarin 中的 iOS