Failed to find provider info for com.example.databasetest.provider,Unknown URL content:...などの問題の簡単な解決方法
問題の説明カスタムコンテンツプロバイダProviderを学習中に、Providerのappを定義したデータベースにアクセスできない場合があります.Logcatを観察して以下のいくつかのエラーを報告した.
主なエラー java.lang.IllegalArgumentException: Unknown URL content:… Failed to find provider info for com.example.databasetest.provider permission denied
原因を探るで検討したところ、テスト用のシミュレータのSDKがAPI 30であることが判明した.このバージョン(Android 11)の更新では、現在本機に適用されている他のアプリケーションとのインタラクションの仕方が変更されたため、いくつかのチュートリアルのルーチンに従って学習すると、以上のアクセス権の問題が発生する.
ソリューション第1の態様:他のアプリケーションにアクセスする必要があるProviderのアプリケーションのManifestに、アクセスする他のアプリケーションリソースを宣言する要素を追加する. 例として、ここで私のprovidertestアプリケーションはdatabasetest内で定義されたProviderにアクセスする必要があります.では、私は と書きます.第2のシナリオ:第1のシナリオが有効でない場合は、Providerを定義するアプリケーションManifestでアクセス可能権限を宣言し、Providerのアプリケーションにアクセスする必要があるManifestで権限を取得します. Providerのアプリケーションを定義するManifest です. Providerのアプリケーションにアクセスする必要があるManifest です.マニフェストを変更した後、2つのアプリケーションを再インストールすればよい.
リファレンスドキュメント Package visibility in Android 11 Managing package visibility
主なエラー
原因を探る
ソリューション
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.providertest">
<queries>
<package android:name="com.example.databasetest" />
queries>
<application>
...
application>
manifest>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.databasetest">
<permission
android:name="DatabaseProvider._READ_PERMISSION"
android:protectionLevel="normal" />
<permission
android:name="DatabaseProvider._WRITE_PERMISSION"
android:protectionLevel="normal" />
<application ...>
...
<provider
android:name=".DatabaseProvider"
android:authorities="com.example.databasetest.provider"
android:enabled="true"
android:exported="true">
provider>
...
application>
manifest>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.providertest">
<uses-permission android:name="DatabaseProvider._READ_PERMISSION" />
<uses-permission android:name="DatabaseProvider._WRITE_PERMISSION" />
<queries>
<package android:name="com.example.databasetest" />
queries>
<application>
...
application>
manifest>
リファレンスドキュメント