2013-08-13 2 views
4

Мое приложение не может запустить из-за этого RuntimeException:java.lang.RuntimeException: Невозможно получить провайдер

java.lang.RuntimeException: Unable to get provider org.worldsproject.android.barcode.database.DatabaseProvider: java.lang.ClassNotFoundException: org.worldsproject.android.barcode.database.DatabaseProvider 

Мой манифест:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="org.worldsproject.android.barcode" 
android:versionCode="4" 
android:versionName="1.0.3" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/Theme.Sherlock" > 
    <activity 
     android:name="BarcodeSaleTracker" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <provider android:name="org.worldsproject.android.barcode.database.DatabaseProvider" 
     android:multiprocess="true" 
     android:exported="false" 
     android:authorities="org.worldsproject.android.barcode.database.DatabaseProvider" /> 
</application> 

Мой DatabaseProvider:

package org.worldsproject.android.barcode.database; 

public class DatabaseProvider extends ContentProvider{ 

private static final String TAG = "DatabaseProvider"; 

private static final String DATABASE_NAME = "sales.db"; 

private static final int DATABASE_VERSION = 1; 

public static final String AUTHORITY = "org.worldsproject.android.barcode.database.DatabaseProvider"; 

Атрибуты полномочий и имени правильны и соответствуют, поэтому я не уверен, почему он не может найти класс.

+0

смотрите здесь http://stackoverflow.com/questions/6303285/classnotfoundexception-for-a-contentprovider –

+0

Вы создали проект-> чистый? – Dyna

ответ

2

Атрибут полномочий должен соответствовать константе AUTHORITY, определенной в классе DatabaseProvider, поскольку это полномочия, используемые с URI. Имя атрибута должно быть полное имя класса поставщика контента

+2

Они соответствуют, и это полное имя. – Atrus

0
// try this 
public static final String AUTHORITY = "org.worldsproject.android.barcode.database"; 

<provider android:name=".database.DatabaseProvider" 
        android:multiprocess="true" 
        android:exported="false" 
        android:authorities=".barcode.database" /> 
+0

Почему 'android: multiprocess =" true "' ?? –

0

Try инициализации базы данных в OnCreate методе ContentProvider (если вы еще не сделали этого). Это также может привести к ошибке, которую вы получаете.

//something like 
@Override 
public boolean onCreate() { 
    myOpenHelper = new MyOpenHelper(getContext()); 
    return true; 
} 
0

Я думаю, что есть точка (" ") отсутствует перед именем провайдера в манифесте: андроид: имя =" ** ** org.worldsproject.android.barcode.database.DatabaseProvider."

Смежные вопросы