Java Android联系人将ContactsSource用于较低的api级别,并将ContactsAccountType作为contacts.xml中的默认值
我在android 2.1的contacts应用程序中遇到了一个小问题,由于contacts xml定义,我的应用程序在显示联系人时会导致contacts应用程序崩溃Java Android联系人将ContactsSource用于较低的api级别,并将ContactsAccountType作为contacts.xml中的默认值,java,android,xml,contacts,android-contacts,Java,Android,Xml,Contacts,Android Contacts,我在android 2.1的contacts应用程序中遇到了一个小问题,由于contacts xml定义,我的应用程序在显示联系人时会导致contacts应用程序崩溃 <ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android" viewContactNotifyService=".ContactViewedService"> ... </ContactsAc
<ContactsAccountType
xmlns:android="http://schemas.android.com/apk/res/android"
viewContactNotifyService=".ContactViewedService">
...
</ContactsAccountType>
我设法跟踪并发现我需要在contacts.xml文件中将ContactsAccountType切换为ContactsSource,该文件已被弃用,因此我的问题是:
有没有一种方法可以让更低api版本的contactsSource作为回退,让ContactsAccountType作为xml描述中的默认值?当然可以
您可以使用默认的xml文件夹中的ContactsSource定义旧xml
并使用xml-v11文件夹中的ContactsAccountType创建第二个xml
我的手机里有姜饼,甚至我也看到了同样的错误。当我尝试添加新联系人时,LogViewer会告诉我“顶级元素必须是contactssource”错误,然后它崩溃。不知道如何修复而不返回出厂默认值。哇,我不知道api级别可以这样命名。谢谢
05-01 12:43:31.960: E/AndroidRuntime(1064): FATAL EXCEPTION: main
05-01 12:43:31.960: E/AndroidRuntime(1064): java.lang.IllegalStateException: Top level element must be ContactsSource
05-01 12:43:31.960: E/AndroidRuntime(1064): at com.android.contacts.model.ExternalSource.inflate(ExternalSource.java:133)
05-01 12:43:31.960: E/AndroidRuntime(1064): at com.android.contacts.model.ExternalSource.inflate(ExternalSource.java:104)
05-01 12:43:31.960: E/AndroidRuntime(1064): at com.android.contacts.model.ContactsSource.ensureInflated(ContactsSource.java:98)
05-01 12:43:31.960: E/AndroidRuntime(1064): at com.android.contacts.model.Sources.getInflatedSource(Sources.java:311)