我一直在应用A中实现自己的自定义内容提供程序,并希望从使用A中定义的相应自定义URI调用ContentResolver.query(...)的单独应用B查询其数据库。
当我在启动B之前运行A时,一切顺利(因此A的进程仍然在后台运行)。
然而,当我杀死A的进程时,B无法查询A的数据库!我认为查询内容提供者会自动启动其进程,以便可以检索数据。我错过了什么吗?
一些澄清:
包管理器告诉我提供程序已在系统中正确注册(即使其进程未运行)。我验证了使用
List<PackageInfo> info = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);
当B无法查询A的提供者时,logcat的错误消息是
E/ActivityThread: Failed to find provider info for com.example.provider.MyProvider
在这种情况下,A的提供者的构造函数和onCreate方法都没有被调用。
我尝试使用ContentProviderClient,CursorLoader,adb的直接查询等其他查询方法;行为总是一样的。
任何帮助将不胜感激!谢谢!