Hi, I have written the following content provider, but when I try to pull information from it into an array, I get the following error:
12-21 15:14:18.627: ERROR/ActivityThread(1160): Failed to find provider info for cicero.org.provider.CiceroContentProvider I presume its something to do with my naming of the CONTENT_URI or something? I'm not quite sure how it works so could anyone explain a bit and spot what I have done wrong? This is what I have in the manifest: XML: <provider android:name=".CiceroContentProvider" android:authorities="cicero.org.provider.CiceroContentProvider" /> Java: public class CiceroContentProvider extends ContentProvider{ //URI public static final Uri CONTENT_URI = Uri.parse("content:// cicero.org.provider.CiceroContentProvider"); //Underlying database private SQLiteDatabase settingsDB; private static final String TAG = "CiceroProvider"; private static final String DATABASE_NAME = "cicero_settings.db"; private static final int DATABASE_VERSION = 1; private static final String SETTINGS_TABLE = "settings"; //Column names public final static String _ID = "_id"; public final static String VOIPUSERNAME = "voipusername"; public final static String VOIPAUTHID = "voipauthid"; public final static String PASSWORD = "password"; public final static String SIPPROXYSERVER = "sipproxyserver"; public final static String SIPREGISTRAR = "sipregistrar"; public final static String SIPREALM = "siprealm"; public final static Integer EXPIRESTIME =30; //column indexes public static final int VOIPUSERNAME_COL = 1; public static final int VOIPAUTHID_COL = 2; public static final int PASSWORD_COL = 3; public static final int SIPPROXYSERVER_COL = 4; public static final int SIPREGISTRAR_COL = 5; public static final int SIPREALM_COL = 6; public static final int EXPIRESTIME_COL = 7; //helper class private static class settingsDatabaseHelper extends SQLiteOpenHelper{ private static final String CREATE_SETTINGS_TABLE = "CREATE TABLE tbl_settings(" + "_ID INTEGER PRIMARY KEY AUTOINCREMENT," + "VOIPUSERNAME TEXT," + "VOIPAUTHID TEXT," + "PASSWORD TEXT," + "SIPPROXYSERVER TEXT," + "SIPREGISTRAR TEXT," + "SIPREALM TEXT," + "EXPIRESTIME INTEGER);"; public settingsDatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_SETTINGS_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS " + SETTINGS_TABLE); onCreate(db); } } //end helper class private static final int SETTINGS = 1; private static final int SETTINGS_ID = 2; private static final UriMatcher uriMatcher; static{ uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.addURI ("cicero.org.provider.CiceroContentProvider", "settings", SETTINGS); uriMatcher.addURI ("cicero.org.provider.CiceroContentProvider", "settings/#", SETTINGS_ID); } @Override public String getType(Uri uri) { switch(uriMatcher.match(uri)){ case SETTINGS: return "vnd.android.cursor.dir/ vnd.org.CiceroContentProvider"; case SETTINGS_ID: return "vnd.android.cursor.item/ vnd.org.CiceroContentProvider"; default: throw new IllegalArgumentException("Unsupported URI: " + uri); } } @Override public boolean onCreate() { Context context = getContext(); settingsDatabaseHelper dbHelper; dbHelper = new settingsDatabaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION); SQLiteDatabase settingsDB = dbHelper.getWritableDatabase(); return (settingsDB == null) ? false : true; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteQueryBuilder qBuilder = new SQLiteQueryBuilder(); qBuilder.setTables(SETTINGS_TABLE); switch(uriMatcher.match(uri)){ case SETTINGS_ID: qBuilder.appendWhere(_ID + "=" + uri.getPathSegments ().get(1)); break; default: break; } String orderBy; if(TextUtils.isEmpty(sortOrder)){ orderBy = VOIPUSERNAME; } else{ orderBy = sortOrder; } Cursor c = qBuilder.query(settingsDB, projection, selection, selectionArgs, null, null, orderBy); c.setNotificationUri(getContext().getContentResolver(), uri); return c; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int count; switch(uriMatcher.match(uri)){ case SETTINGS: count = settingsDB.update(SETTINGS_TABLE, values, selection, selectionArgs); break; case SETTINGS_ID: String segment = uri.getPathSegments().get(1); count = settingsDB.update(SETTINGS_TABLE, values, _ID + "=" + segment + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""), selectionArgs); break; default: throw new IllegalArgumentException("Unkonwn URI " + uri); } getContext().getContentResolver().notifyChange(uri, null); return count; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { int count; switch(uriMatcher.match(uri)){ case SETTINGS: count = settingsDB.delete(SETTINGS_TABLE, selection, selectionArgs); break; case SETTINGS_ID: String segment = uri.getPathSegments().get(1); count = settingsDB.delete(SETTINGS_TABLE, _ID + "=" + segment + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')':""), selectionArgs); break; default: throw new IllegalArgumentException("Unsupported URI: " + uri); } getContext().getContentResolver().notifyChange(uri, null); return count; } @Override public Uri insert(Uri _uri, ContentValues _initialValues) { long rowId = settingsDB.insert(SETTINGS_TABLE, "settings",_initialValues); if(rowId > 0){ Uri uri = ContentUris.withAppendedId(CONTENT_URI, rowId); getContext().getContentResolver().notifyChange(uri, null); return uri; } throw new SQLException("Failed to insert row into " + _uri); } } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en