是android:exported=";“真的”;内容提供程序内部使用所需
我已在我的应用程序清单中定义了一个提供程序:是android:exported=";“真的”;内容提供程序内部使用所需,android,android-contentprovider,Android,Android Contentprovider,我已在我的应用程序清单中定义了一个提供程序: <provider android:authorities="com.example.myapp.provider" android:name="com.example.myapp.MyProvider"> </provider> android:exported="true" 但是,如果我在清单中简单地设置提供者的导出属性,它将非常有效: <provider android:authori
<provider
android:authorities="com.example.myapp.provider"
android:name="com.example.myapp.MyProvider">
</provider>
android:exported="true"
但是,如果我在清单中简单地设置提供者的导出属性,它将非常有效:
<provider
android:authorities="com.example.myapp.provider"
android:name="com.example.myapp.MyProvider">
</provider>
android:exported="true"
所以我的问题是为什么需要这样做?因为,根据documentation(),仅当提供程序可用于其他应用程序时才需要导出。我做错什么了吗
[Edit]:令人惊讶的是,即使删除了导出的属性,错误现在也消失了,没有进行任何其他更改。我不知道为什么它现在起作用了。可能是我这边的愚蠢错误。我把这个问题留待讨论,希望能从中得到一些线索,看看到底哪里出了问题
[编辑]:我这次又遇到了一个接收者的问题。因此,这不是我这边的错误,正如我在上一次编辑中所假设的那样。我怀疑ADT构建工具有问题。确保您的
标记位于..
标记内
<application>
...
<provider
android:authorities="com.ingamedeo.databasetest.contentprovider"
android:name=".db.ContentProviderDb"
android:exported="false">
</provider>
</application>
...
更新:您不能再设置
android:exported=“true”
您将遇到
java.lang.SecurityException:提供程序不能导出异常。您的权限标记与ContentProvider(MyProvider vs Provider)不同。在doc上,通常是实现providerI的ContentProvider子类的名称,我并不真正理解您的评论。“MyProvider”是我的内容提供商类的名称,它位于包“com.example.myapp”中。这就是我为“android:name”属性指定的内容。我随机命名了“android:Authories”值。我没有任何名为“提供者”的类。无论如何,我不认为名称是一个问题,因为导出提供程序时使用相同的名称。请看以下内容: