Android-провайдер предоставляет неизвестный URL-адрес: // com - PullRequest
4 голосов
/ 22 июля 2011

Я пытаюсь создать пользовательский контент-провайдер и получаю сообщение об ошибке

Неизвестный URL-адрес: //com.example.test.samplecontentprovider/yay

У меня есть следующая информацияв моем манифесте и поставщике контента

  <provider
    android:authorities="com.example.test.samplecontentprovider"
    android:multiprocess="true"
    android:name="com.example.test.SampleContentProvider"></provider>

AUTHORITY = "com.example.test.samplecontentprovider" 

где я могу ошибаться, предложите.

Я также включил пакет с исходным кодом здесь.http://www.fileserve.com/file/p4eNVgK

Ответы [ 2 ]

10 голосов
/ 22 июля 2011

Из предоставленных источников вы допустили ошибку при определении вашего провайдера в AndroidManifest.xml: вам необходимо определить вашего провайдера в теге приложения , т.е.

<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>
4 голосов
/ 22 июля 2011

здесь вы идете исправление проекта

http://esilo.pl/Yea.zip

несколько вещей ... Renaud ответ ... но есть и другие ошибки:

// 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;
}

далее:

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

следующий в 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);
...