由于此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";
权限和名称属性都是正确且匹配的,所以我不确定为什么它找不到类。
答案 0 :(得分:2)
authority属性应该与DatabaseProvider类中定义的AUTHORITY常量匹配,因为它是与URI一起使用的权限。 name属性必须是内容提供者的完全限定类名
答案 1 :(得分: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" />
答案 2 :(得分:0)
尝试在ContentProvider的onCreate方法中初始化数据库(如果您还没有这样做)。这也可能导致您遇到错误。
//something like
@Override
public boolean onCreate() {
myOpenHelper = new MyOpenHelper(getContext());
return true;
}
答案 3 :(得分:0)
我认为在你的Manifest中提供者的名字之前缺少一个点(“。”): 机器人:名称= “** ** org.worldsproject.android.barcode.database.DatabaseProvider”