Пользовательский контент-провайдер: ошибка эмулятора (не удалось найти информацию о провайдере) - PullRequest
3 голосов
/ 13 января 2012

Итак, я создал простого провайдера контента, но у меня ошибка:

Не удалось найти информацию о провайдере для com.b1.BooksContentProvider

У меня есть2 AVD имена для версий 2.2 и 3.2 (я написал случайные имена для них обоих)
3.2, потому что я использую поддержку v4 Fragment
Итак, я не знаю, возникает ли проблема из манифеста, илииз версии, которую я использую для запуска эмулятора.

вот мой файл манифеста:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.b1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".MyBooksActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/mt_books" />
                <data android:mimeType="vnd.android.cursor.dir/mt_books" />
            </intent-filter>
        </activity>
        <provider
            android:authorities="com.b1.BooksContentProvider"
            android:name="com.b1.BooksContentProvider"></provider>

    </application>

</manifest>

и первая часть моего провайдера контента:

public class BooksContentProvider extends ContentProvider {

    BooksDataBase mDB;
    private static final String AUTHORITY = "com.b1.MyBooksActivity";
    private static final String BASE_PATH = "books";
    public static final Uri CONTENT_URI = Uri.parse("content:// " + AUTHORITY + "/" + BASE_PATH);
    public static final String CONTENT_ITEM_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE
        + "/mt_books";
    public static final String CONTENT_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE
        + "/mt_books";

    private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    private static final int BOOK_DIR = 101;
    private static final int BOOK_ITEM = 102;

    static
    {
        sURIMatcher.addURI(AUTHORITY, BASE_PATH, BOOK_DIR);
        sURIMatcher.addURI(AUTHORITY, BASE_PATH+"/#", BOOK_ITEM);
    }

Спасибо за вашу помощь


ОБНОВЛЕНИЕ


Хорошо, одна из возможных ошибок была:
я забыл "импортировать" различные классы
также, вфрагмент XML: LinearLayout не работал, мне пришлось поместить «TextView» в XML один

1 Ответ

3 голосов
/ 13 января 2012
private static final String AUTHORITY = "com.b1.MyBooksActivity";

Это не тот же авторитет, который есть у вас в вашем элементе <provider>:

<provider
        android:authorities="com.b1.BooksContentProvider"
        android:name="com.b1.BooksContentProvider"></provider>

Они должны совпадать.

...