【问题标题】:Content Provider and Image storage内容提供者和图像存储
【发布时间】:2012-03-29 14:16:50
【问题描述】:

我想在两个应用程序之间共享一些图像图标。我将图标存储在应用程序 1 的文件夹中,并尝试使用应用程序 2 的文件夹。那时我遇到了一些权限问题。我也无法添加权限,因为它不是根设备。

所以我现在尝试将图标存储在内容提供程序中。是否可以将图像存储在内容提供者中?有没有其他好的方法来实现这个?请帮忙。

【问题讨论】:

    标签: android android-contentprovider


    【解决方案1】:

    ContentProviders 不用于存储。它们用于基于权限从不同应用程序组件、不同应用程序或两者都访问数据库的公共接口。

    您可以做的是将图像作为二进制数据集 (BLOB) 存储在数据库中。然后使用具有公共权限的内容提供者来查询图像并将新图像添加到数据库中。但是,如果您只是想存储应用程序图标,则应该使用 res 文件夹在每个项目中拥有这些图标。如果不需要,请不要与 SDK 对抗。

    希望这将为您指明正确的方向。查看 Android 的 ContentResolver 和 ContentProvider API 了解更多信息。

    【讨论】:

    • private static final String DATABASE_CREATE = "create table" + DATABASE_TABLE + " (_id integer 主键自增," + "icons blob not null, name text not null);";这是我正在使用的创建查询。这是正确的
    • @Paru 这看起来是正确的,尽管您不需要在自动增量之间使用 +。此外,我会为 SQL 关键字使用大写字母,因为这是大多数人所做的。您还想在 SQLiteOpenHelper 中创建您的数据库,该数据库将在您的 ContentProvider 中使用
    【解决方案2】:

    如果您将 App1 上的图标存储为资源(可绘制对象),您可以通过使用包名称并知道资源 ID 或名称来访问它们(因为它是您自己的应用程序,我假设您知道这些 ;-))

    看看PackageManager.getResourcesForApplication。 要按名称访问资源,您可以使用Resources.getIdentifier

    【讨论】:

    • 我没有将图标存储在可绘制对象中。我用所需的图标创建了一个新文件夹
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多