I am trying to create a custom content provider and I get a error message
Unknown URL content://com.example.test.samplecontentprovider/yay
I have the following info in my manifest and content provider
<provider
android:authorities="com.example.test.samplecontentprovider"
android:multiprocess="true"
android:name="com.example.test.SampleContentProvider"></provider>
AUTHORITY = "com.example.test.samplecontentprovider"
where could I be wrong, please suggest.
I am also including the source code package here. http://www.fileserve.com/file/p4eNVgK
From the sources provided, you have made a mistake in defining your provider in AndroidManifest.xml: you need to define your provider within your application tag, i.e.
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".test"
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:authorities="com.example.test.samplecontentprovider"
android:multiprocess="true"
android:name="com.example.test.SampleContentProvider"></provider>
</application>
here you go project fixin'
http://esilo.pl/Yea.zip
few things ... Renaud answer ... but there are more errors:
// there is no such constructor ... Android looking for simple SampleContentProvider()
//public SampleContentProvider(Context context){
// mContext=context;
//}
@Override
public boolean onCreate() {
//so we move mContext initialization here
mContext = getContext();
dbHelper = new DatabaseHelper(mContext);
return true;
}
next:
public static final class ContentProviderHelper {
private ContentProviderHelper() {}
//private static final String BASE_PATH = "yay"; we don't need it
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY); //you dont need it + "/" + BASE_PATH);
public static final String CONTENT_ITEM_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE +
"/vnd." + COMPANY_NAME + "." + TABLE_NAME;//yay it's stupid :P BASE_PATH;
public static final String CONTENT_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE +
"/vnd." + COMPANY_NAME + "." + TABLE_NAME;//yay it's stupid :P BASE_PATH;
public static final String ID = "_id";
public static final String TITLE = "title";
public static final String TEXT = "text";
}
next in test.java:
Uri uri = getContentResolver().insert(
// we should replace SampleContentProvider.ContentProviderHelper.CONTENT_URI with CONTENT_URI + TABLE_NAME
Uri.withAppendedPath(SampleContentProvider.ContentProviderHelper.CONTENT_URI, SampleContentProvider.TABLE_NAME), values);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With