Xamarinフォームアプリケーションでユーザーの連絡先にアクセスしようとしています。私はプラットフォーム固有の実装を書いており、DependencyServiceを使用して呼び出されました。これは正常に動作しているようです。しかし、私はAndroidの実装をテストするとき、私は、コードは次のコードではIllegalArgumentExceptionをスローされ、エラーになっています:IllegalArgumentException Xamarinフォームアプリケーションで連絡先にアクセスする
var uri = ContactsContract.Contacts.ContentUri;
string[] projection = { ContactsContract.Contacts.InterfaceConsts.Id,
ContactsContract.CommonDataKinds.StructuredName.GivenName,
ContactsContract.CommonDataKinds.StructuredName.FamilyName,
ContactsContract.CommonDataKinds.Phone.Number,
ContactsContract.CommonDataKinds.Email.Address};
var phoneLoader = new CursorLoader(Android.App.Application.Context, uri, projection, null, null, null);
var cursor = (Android.Database.ICursor)phoneLoader.LoadInBackground();
私も経由してカーソルを取得しようとしました:
var cursor = Forms.Context.ApplicationContext.ContentResolver.Query(uri, projection, null, null, null);
を
私も次のことを試してみた:
var phoneLoader = new CursorLoader(Android.App.Application.Context);
phoneLoader.SetProjection(projection);
phoneLoader.Uri = ContactsContract.Contacts.ContentUri;
var cursor = (Android.Database.ICursor)phoneLoader.LoadInBackground();
が、それは正確に同じエラーがスローされます:
09-09 14:27:22.163 I/MonoDroid(10022): UNHANDLED EXCEPTION:
09-09 14:27:22.222 I/MonoDroid(10022): Java.Lang.IllegalArgumentException: Invalid column data2
09-09 14:27:22.223 I/MonoDroid(10022): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <896ad1d315ca4ba7b117efb8dacaedcf>:0
09-09 14:27:22.223 I/MonoDroid(10022): at Java.Interop.JniEnvironment+InstanceMethods.CallObjectMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method) [0x00068] in <6cd960837cc24c26bab2a0a29b597627>:0
09-09 14:27:22.223 I/MonoDroid(10022): at Android.Runtime.JNIEnv.CallObjectMethod (System.IntPtr jobject, System.IntPtr jmethod) [0x0000e] in <06064416b46d4ffbb3484c957929a39f>:0
09-09 14:27:22.223 I/MonoDroid(10022): at Android.Content.CursorLoader.LoadInBackground() [0x00043] in <06064416b46d4ffbb3484c957929a39f>:0
そして、その次の行に:
cursor = (Android.Database.ICursor)phoneLoader.LoadInBackground();
誰もがエラーの原因となっている上記のコードで間違っているものを見ることができますか?