Android ContentResolver查询有时无法启动ContentProvider进程

时间:2016-04-27 07:30:43

标签: android android-contentprovider android-contentresolver

我一直在应用A中实现自己的自定义内容提供程序,并希望从使用A中定义的相应自定义URI调用ContentResolver.query(...)的单独应用B查询其数据库。

当我在启动B之前运行A时,一切顺利(因此A的进程仍然在后台运行)。

然而,当我杀死A的进程时,B无法查询A的数据库!我认为查询内容提供者会自动启动其进程,以便可以检索数据。我错过了什么吗?

一些澄清:

  • 我正确设置了内容提供商。权限字符串中的拼写错误没有问题,权限没有问题,提供程序在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的直接查询等其他查询方法;行为总是一样的。

  • 我甚至用简单的测试内容提供商创建了第三个应用程序C(因为A有点复杂);仍然是同样的问题。
  • 问题仅在我使用真实设备时出现,而不是在我使用模拟器时(即使使用完全相同的Android版本)。我使用的是Alcatel OneTouch Idol 3,型号为6045Y,运行Android 5.0.2,内核版本为3.10.49。

任何帮助将不胜感激!谢谢!

0 个答案:

没有答案