在应用程序之间共享drawable

时间:2012-07-24 07:47:30

标签: android android-resources

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

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

2 个答案:

答案 0 :(得分:7)

你几乎没有选择:

  • ContentProvider - 并非绝对需要基于SQLite数据库。

  • 清单属性android:sharedUserId

    来自docs:

      

    将与其他人共享的Linux用户ID的名称   应用。默认情况下,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();
    }
    

答案 1 :(得分:0)

我认为ContentProvider是您的最佳选择。它们专门用于“在多个应用程序之间共享数据”。 以下是developer.android的参考资料: http://developer.android.com/reference/android/content/ContentProvider.html 这是一个详细的指南: http://www.vogella.com/articles/AndroidSQLite/article.html