For anyone that comes across this type of error. In my infinite graduate wisdom I had the content provider info outside the application brackets in the xml manifest file!
Wasted a whole day cos of that! [?] On Tue, Dec 22, 2009 at 9:56 AM, Donal Rafferty <[email protected]> wrote: > Anybody got any ideas? > > I thought I had it figured out with the database but that didn't work. > > It seems that either my naming of the CONTENT_URI or something to do with > that is wrong or else a database/table for the settings never actually gets > created? if theres no data there for the content provider would I get that > error? > > Or is it actually something to do with the CONTENT_URI? > > > On Mon, Dec 21, 2009 at 3:56 PM, [email protected] <[email protected]>wrote: > >> 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en
<<361.gif>>

