在应用程序之间共享drawable

hsz*_*hsz 1 android android-resources

我在我的应用程序中实现了插件系统.插件作为独立应用程序存在.

在主应用程序中从插件访问drawables的最佳方法是什么?

bie*_*eux 7

你有几个选择:

  • ContentProvider - 不一定需要基于SQLite数据库.

  • 清单属性 android:sharedUserId

    来自docs:

    将与其他应用程序共享的Linux用户标识的名称.默认情况下,Android会为每个应用程序分配自己唯一的用户ID.但是,如果将此属性设置为两个或多个应用程序的相同值,则它们将共享相同的ID - 前提是它们也由相同的证书签名.具有相同用户ID的应用程序可以访问彼此的数据,并且如果需要,可以在同一进程中运行.

    请参阅http://developer.android.com/guide/topics/manifest/manifest-element.html#uid

  • PackageManager.getResourcesForApplication()用于检索与应用程序关联的资源.

    用法:

    PackageManager pm = getPackageManager();
    try {
        Resources resources = pm.getResourcesForApplication("com.example.app");
        int id = resources.getIdentifier("ic_launcher", "drawable", "com.example.app");
        Drawable d = resources.getDrawable(id)
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    
    Run Code Online (Sandbox Code Playgroud)