【发布时间】:2021-04-18 18:27:14
【问题描述】:
我有 App A 在 ContentProvider 的帮助下与 App B 共享其数据库。
两个应用的 gradle 中都有 SDK 版本 28。
App A 的清单
<permission android:name="com.example.mldemo.READ_DATABASE" android:protectionLevel="normal" />
<permission android:name="com.example.mldemo.WRITE_DATABASE" android:protectionLevel="normal" />
....
<application
...
<provider android:name=".content_providers.MLProvider"
android:authorities="com.example.mldemo"
android:enabled="true"
android:exported="true"
android:readPermission="com.example.mldemo.READ_DATABASE"
android:writePermission="com.example.mldemo.WRITE_DATABASE"/>
App B 的清单
<uses-permission android:name="com.example.mldemo.READ_DATABASE" />
<uses-permission android:name="com.example.mldemo.WRITE_DATABASE" />
App B 像这样使用 ContentProvider:
private static final String AUTHORITY = "com.example.mldemo";
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/");
....
Uri uri = Uri.parse(CONTENT_URI + "/CONTACTS");
ContentValues newValues = new ContentValues();
newValues.put("NAME", contact.getName());
...
newUri = context.getApplicationContext().getContentResolver().insert(
uri,
newValues
);
当我 QUERY contentProvider 时,它工作正常。
问题发生在我insert 时。我一直有这个错误:
Failed to find provider null for user 0; expected to find a valid ContentProvider for this authority
【问题讨论】:
标签: android sqlite android-manifest android-contentprovider