Android 添加联系人组会使HTC和三星设备出现NullPointerexception

Android 添加联系人组会使HTC和三星设备出现NullPointerexception,android,android-contentprovider,android-contacts,samsung-mobile,contactscontract,Android,Android Contentprovider,Android Contacts,Samsung Mobile,Contactscontract,我正在尝试使用ContentProviderOperation添加联系人组。这在Nexus、Moto G和华硕的设备上运行,但在HTC M7、M8、M8 mini和M9、三星S4、S5上崩溃。因为我只有普通的干净Android的源代码,所以我无法通过调试找到Nullpointer导致了什么 我在此ContentProviderOperation中使用的值均为空。 这些组将添加到authenticator.xml中指定的自定义帐户类型中 代码: public Uri addContactGroup

我正在尝试使用
ContentProviderOperation
添加联系人组。这在Nexus、Moto G和华硕的设备上运行,但在HTC M7、M8、M8 mini和M9、三星S4、S5上崩溃。因为我只有普通的干净Android的源代码,所以我无法通过调试找到Nullpointer导致了什么

我在此
ContentProviderOperation
中使用的值均为空。 这些组将添加到authenticator.xml中指定的自定义帐户类型中

代码:

public Uri addContactGroup(字符串标题、布尔值自动添加、布尔值isReadOnly、布尔值isVisible){
ArrayList ops=新的ArrayList();
添加操作(ContentProviderOperation
.newInsert(contacts contract.Groups.CONTENT\u URI)
.withValue(contacts contract.Groups.TITLE,TITLE)
.withValue(contacts contract.Groups.ACCOUNT_TYPE,getAccount().TYPE)
.withValue(contacts contract.Groups.ACCOUNT_NAME,getAccount().NAME)
.withValue(contacts contract.Groups.AUTO_ADD,autoAdd)
.带值(contacts contract.Groups.GROUP为只读,isReadOnly)
.带值(contacts contract.Groups.GROUP_可见,isVisible)
.build());
试一试{
ContentProviderResult[]result=mContext.getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
如果(result.length>0){
返回结果[0]。uri;
}
}捕获(远程异常|操作应用程序异常e){
Log.e(标记,e.toString());
}
返回null;
}
引发此异常:

java.lang.NullPointerException:尝试调用虚拟方法“int” null对象引用上的java.lang.Integer.intValue() 在android.os.Parcel.readException(Parcel.java:1555)中 位于android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185) 在android.database.DatabaseUtils.ReadException with OperationApplicationExceptionFromParcel(DatabaseUtils.java:160) 位于android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:573) 在android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:377) 位于android.content.ContentResolver.applyBatch(ContentResolver.java:1265) 位于nl.dalvikvm.stackoverflowquestion.content.proces.CardProcess.addContactGroup(CardProcess.java:284) 位于nl.dalvikvm.stackoverflowquestion.content.proces.CardProcess.initGroups(CardProcess.java:244) 位于nl.dalvikvm.stackoverflowquestion.sync.SyncUtils.CreateSyncAccount(SyncUtils.java:55) 位于nl.dalvikvm.stackoverflowquestion.ui.MainActivity$1.run(MainActivity.java:288) 运行(Thread.java:818)


终于找到了解决办法

        .withValue(ContactsContract.Groups.AUTO_ADD, autoAdd ? 1 : 0)
        .withValue(ContactsContract.Groups.GROUP_IS_READ_ONLY, isReadOnly ? 1 : 0)
        .withValue(ContactsContract.Groups.GROUP_VISIBLE, isVisible ? 1 : 0)
显然,在三星和HTC设备上,布尔值不被接受为值,必须首先将其转换为整数。我不知道为什么它能在其他设备上工作

        .withValue(ContactsContract.Groups.AUTO_ADD, autoAdd ? 1 : 0)
        .withValue(ContactsContract.Groups.GROUP_IS_READ_ONLY, isReadOnly ? 1 : 0)
        .withValue(ContactsContract.Groups.GROUP_VISIBLE, isVisible ? 1 : 0)