我的Android ContentProvider找不到ContentResolver

| 我的目标是编写没有Activity的ContentProvider。为了进行测试,我编写了一个测试-在自己的应用程序中进行活动。对于那些想告诉我,Android仍然包含记录器的人,我知道这一点。 这是ContentProvider的一部分
public static final String AUTHORITY = \"de.xyz.android.log4android\";
public static final int LOGGER_ARROW_URI_ID = 1;
public static final String ARROW_CONTENT_TYPE = 
    \"vnd.de.xyz.android.cursor.dir/vnr.log\";

public static final int LOGGER_ITEM_URI_ID = 2;
public static final String ITEM_CONTENT_TYPE = 
    \"vnd.de.xyz.android.cursor.item/vnr.log\";

public static final UriMatcher sUriMatcher;
static {
    sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    sUriMatcher.addURI(AUTHORITY, LOGGER_TABLE, LOGGER_ARROW_URI_ID);
    sUriMatcher.addURI(AUTHORITY, LOGGER_TABLE + \"#\", LOGGER_ITEM_URI_ID);
}

public static final Uri CONTENT_URI = Uri.parse(\"content://\"
        + LogServiceProvider.AUTHORITY + \"/logs\");

public static final DefaultLogEntry LOG_ENTRY = null;

//Some more not important code

@Override
public Uri insert(Uri uri, ContentValues initialValues) {
    synchronized (this) {
        try {
            long rowID = dbHelper.getWritableDatabase().insert(LOGGER_TABLE,
                    null, initialValues);

            if (rowID > 0) {
                Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
                getContext().getContentResolver().notifyChange(_uri, null);
                return _uri;
            }
        } catch (Exception ex) {
        }
        throw new SQLException(\"Failed to insert row into \" + uri);
    }
}

//Some more not important code
因此,我还将内容提供者信息添加到manifest.xml
<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"
          package=\"de.xyz.android.logger\"
          android:versionCode=\"1\"
          android:versionName=\"1.0\">

    <provider 
        android:name=\"de.xyz.android.logger.LogServiceProvider\" 
        android:authorities=\"de.xyz.android.log4android\"/>

    <application android:icon=\"@drawable/icon\" android:label=\"@string/app_name\">
    <uses-sdk android:minSdkVersion=\"4\" /> 
</application>
这是我的“客户”活动的一部分,是在单独的应用程序中。
ContentResolver cr = getContentResolver();
Uri getItem = Uri.parse(\"content://de.xyz.android.log4android/logs\");
ContentValues values = new ContentValues();
values.put(\"level\",\"WARNING\");
values.put(\"time\",\"1986-11-16\");
values.put(\"message\",\"FistTest\");
values.put(\"owner\",\"jsb\");
values.put(\"file\",\"testLog.java\");
values.put(\"line\",\"27\");
Uri newItem = cr.insert(getItem, values);
LogCat告诉我TestClient找不到ContentProvider   05-27 12:42:52.099:错误/ ActivityThread(548):无法找到de.xyz.android.log4android的提供者信息 我的错误在哪里。我认为我在以下内容中都提到了:内容提供商|安卓如果您能给我一个提示,那就太好了。如果您需要更多代码片段来理解,请问我。     
已邀请:
        
<provider android:name=\".LogServiceProvider\"
          android:authorities=\"de.xyz.android.log4android\"
          android:exported=\"true\" />
应该帮助:)     
        失败的一种深奥方式是,如果您的内容提供者上定义了一个带参数的构造函数。这将导致默认的0参数构造函数不存在。这会导致提供程序的运行时注册失败,因为系统无法在清单中android:name下指定的类中找到零参数构造函数。     

要回复问题请先登录注册