私の目標はActivityなしでContentProviderを書くことです。テストのために私は自分のアプリでテスト活動を書いた。アンドロイドにロガーが含まれていると私に伝えたい人には、私はこれを知っています。ここで私のAndroidのContentProviderはContentResolverを見つけることができません
は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 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>
をmanifest.xmlにするために、コンテンツプロバイダ情報を追加することがである、私のクライアントの活動のうちの一部です別のアプリ。 42:52.099:
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の
5月27日12を見つける傾けることを私に伝えERROR/ActivityThread(548):de.xyz.androidのプロバイダの情報を見つけることができませんでした。 log4android
私のエラーはどこですか?私の意見では、すべてで言及した:Content Providers | Android。あなたが私にヒントを与えることができればいいと思う。あなたが理解するために多くのコード断片が必要な場合は私に尋ねてください。
あなたは最初にプロバイダでapkをインストールしたことはありますか? – Selvin