Почему нет Android.content.syncadapter Meta-Data, регистрируя синхронизированные адаптер?

StackOverflow https://stackoverflow.com/questions/4505449

Вопрос

Я следую за образцами, и после запуска, кажется, что мой синхронный адаптер не настроен правильно. Он сообщает об ошибке, пытающейся загрузить свои метадаты. Как я могу изолировать проблему? Вы можете увидеть другие учетные записи в системе, которые правильно регистрируются.

Logcat:

12-21 17:10:50.667 W/PackageManager(  121): Unable to load service info ResolveInfo{4605dcd0 com.myapp.syncadapter.MySyncAdapter p=0 o=0 m=0x108000}
12-21 17:10:50.667 W/PackageManager(  121): org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data
12-21 17:10:50.667 W/PackageManager(  121):     at android.content.pm.RegisteredServicesCache.parseServiceInfo(RegisteredServicesCache.java:391)
12-21 17:10:50.667 W/PackageManager(  121):     at android.content.pm.RegisteredServicesCache.generateServicesMap(RegisteredServicesCache.java:260)
12-21 17:10:50.667 W/PackageManager(  121):     at android.content.pm.RegisteredServicesCache$1.onReceive(RegisteredServicesCache.java:110)
12-21 17:10:50.667 W/PackageManager(  121):     at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892)
12-21 17:10:50.667 W/PackageManager(  121):     at android.os.Handler.handleCallback(Handler.java:587)
12-21 17:10:50.667 W/PackageManager(  121):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-21 17:10:50.667 W/PackageManager(  121):     at android.os.Looper.loop(Looper.java:123)
12-21 17:10:50.667 W/PackageManager(  121):     at com.android.server.ServerThread.run(SystemServer.java:570)
12-21 17:10:50.747 D/Sources (  294): Creating external source for type=com.skype.contacts.sync, packageName=com.skype.raider
12-21 17:10:50.747 D/Sources (  294): Creating external source for type=com.twitter.android.auth.login, packageName=com.twitter.android
12-21 17:10:50.747 D/Sources (  294): Creating external source for type=com.example.android.samplesync, packageName=com.example.android.samplesync
12-21 17:10:50.747 W/PackageManager(  121): Unable to load service info ResolveInfo{460504b0 com.myapp.syncadapter.MySyncAdapter p=0 o=0 m=0x108000}
12-21 17:10:50.747 W/PackageManager(  121): org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data
12-21 17:10:50.747 W/PackageManager(  121):     at android.content.pm.RegisteredServicesCache.parseServiceInfo(RegisteredServicesCache.java:391)
12-21 17:10:50.747 W/PackageManager(  121):     at android.content.pm.RegisteredServicesCache.generateServicesMap(RegisteredServicesCache.java:260)
12-21 17:10:50.747 W/PackageManager(  121):     at android.content.pm.RegisteredServicesCache$1.onReceive(RegisteredServicesCache.java:110)
12-21 17:10:50.747 W/PackageManager(  121):     at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892)
12-21 17:10:50.747 W/PackageManager(  121):     at android.os.Handler.handleCallback(Handler.java:587)
12-21 17:10:50.747 W/PackageManager(  121):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-21 17:10:50.747 W/PackageManager(  121):     at android.os.Looper.loop(Looper.java:123)
12-21 17:10:50.747 W/PackageManager(  121):     at com.android.server.ServerThread.run(SystemServer.java:570)

Также обратите внимание, я попытался заставить неправильную конфигурацию, чтобы увидеть, смогу ли я изменить ошибку таким образом, чтобы указать на мой недостаток. К сожалению, большинство неправильных сборов поймают (Pre) компилятор.

Мне удалось найти эту запись LogCat после удаления/установки, которая соответствует моему узлу метадаты внутри AndroidManifest.xml для входа в службу службы синхронизации. Это может быть очень важной подсказкой, которую я исследую.

12-21 18:46:36.026 D/AndroidRuntime(28641): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
12-21 18:46:36.026 D/AndroidRuntime(28641): CheckJNI is OFF
12-21 18:46:36.106 D/AndroidRuntime(28641): --- registering native functions ---
12-21 18:46:36.836 D/PackageParser(  121): Scanning package: /data/app/vmdl13904.tmp
12-21 18:46:36.856 W/PackageParser(  121): Unknown element under <intent-filter>: meta-data at /data/app/vmdl13904.tmp Binary XML file line #254
12-21 18:46:36.856 W/PackageParser(  121): Unknown element under <intent-filter>: meta-data at /data/app/vmdl13904.tmp Binary XML file line #257
12-21 18:46:37.166 D/PackageManager(  121): Scanning package com.myapp
Это было полезно?

Решение

Я нашел это! Конечно же, это начальное сообщение было ключом к поиску ошибки. У меня была ошибка в моем манифесте. Я положил метада-узлы в фильтр намерения адаптера синхронизации. Поэтому мои метадаты были спрятаны внутри фильтра намерения. Само собой разумеется, служба не может быть зарегистрирована.

Я сейчас на следующую ошибку :)

Я надеюсь, что эта сессия полезна для других.

Другие советы

Еще один способ получить это исключение и сообщение - неправильно написано имя в метаданных в вашем манифесте. Например:

<meta-data
            android:name="android.cccontent.SyncAdapter"
            android:resource="@xml/syncadapter" />

Где это должно быть:

<meta-data
            android:name="android.content.SyncAdapter"
            android:resource="@xml/syncadapter" />

Следовательно "NO Android.content.Syncadapter MetaData«Потому что это было» Android.CCContent.syncadapter "вместо этого. более тонким примером будет" AndroiОкруг Колумбияontent.syncadapter ". Оба из них выставит исключение:

org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top