android: поставщик контента: сбой службы при запуске - не удается получить поставщика sensordata.collector.SurveyDbProvider - PullRequest
0 голосов
/ 03 мая 2011

Я создал свой собственный контент-провайдер. Многие приложения должны совместно использовать эту базу данных.

Но когда я запускаю службу, она падает. Я даже не получил никаких исключений в журнале.

Похоже, проблема с манифестом, поскольку после того, как я добавил теги, связанные с провайдером, проблема началась.

Package:sensordata.collector
Clas name : SurveyDbProvider [SurveyDbProvider extends ContentProvider]

Это мой файл манифеста:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sensordata.collector"
      android:versionCode="1"
      android:versionName="1.0">
    <permission
        android:name="sensordata.collector.SURVEY_DATA.permission.READ"
        android:label="@string/perm_label"        
        android:description="@string/perm_label" />

     <permission
        android:name="sensordata.collector.SURVEY_DATA.permission.WRITE"
        android:label="@string/perm_label"        
        android:description="@string/perm_label" />

    <uses-permission android:name="sensordata.collector.SURVEY_DATA.permission.WRITE" />  
    <uses-permission android:name="sensordata.collector.SURVEY_DATA.permission.READ" /> 


In application tag :

  <provider android:name="sensordata.collector.SurveyDbProvider"
         android:authorities="sensordata.collector" 
         android:readPermission="sensordata.collector.SURVEY_DATA.permission.READ"
         android:writePermission="sensordata.collector.SURVEY_DATA.permission.WRITE" />  

    </application>
<uses-sdk android:minSdkVersion="4" />

</manifest> 

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 04 мая 2012

Есть ли у вашего провайдера публичный конструктор? Sensordata.collector.SurveyDbProvider должен быть инициализируемым, поэтому он не может быть, например, абстрактным классом.

если вы не видите исключений и используете Eclipse, нажмите F8, возможно, несколько раз, и проверьте ваш LogCat

0 голосов
/ 21 июня 2011

В правиле отсутствует имя ContentProvider Должно быть:

<provider android:name="sensordata.collector.SurveyDbProvider"
          android:authorities="sensordata.collector.surveydbprovider" ... />

И в качестве хорошей практики вы должны объявить константу CONTENT_URI, соответствующую этим полномочиям внутри класса провайдера.

...