6

由于此 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>

我的数据库提供者:

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

权限和名称属性都正确且匹配,所以我不确定为什么它找不到类。

4

4 回答 4

2

authority 属性应该与 DatabaseProvider 类中定义的 AUTHORITY 常量匹配,因为这是与 URI 一起使用的权限。name 属性必须是内容提供者的全限定类名

于 2013-08-13T16:27:19.750 回答
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" />
于 2013-09-30T11:06:57.617 回答
0

尝试在 ContentProvider 的 onCreate 方法中初始化您的数据库(如果您还没有这样做的话)。这也可能导致您遇到该错误。

//something like
@Override
public boolean onCreate() {
    myOpenHelper = new MyOpenHelper(getContext());
    return true;
}
于 2014-06-22T23:27:20.413 回答
0

我认为在您的清单中提供者名称之前缺少一个点(“。”):android:name="**.**org.worldsproject.android.barcode.database.DatabaseProvider"

于 2017-02-28T14:50:07.517 回答