6

My app is unable to start due to this RuntimeException:

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

My manifest:

<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>

My 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";

The authority and name attributes are all correct and match, so I'm not sure why it cannot find the class.

Atrus
  • 788
  • 4
  • 13
  • 34

4 Answers4

2

The authorities attribute should match the AUTHORITY constant defined in the DatabaseProvider class as that’s the authority used with the URIs. The name attribute must be the fully qualified class name of the content provider

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" />
Haresh Chhelana
  • 24,720
  • 5
  • 57
  • 67
0

Try initializing your database in the ContentProvider's onCreate method ( if you are not already doing this). This can also cause that error you are getting.

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

I think there's a dot (".") missing before the provider's name in your Manifest: android:name="**.**org.worldsproject.android.barcode.database.DatabaseProvider"

Efi
  • 7
  • 4