需要在不同程序员的不同应用程序之间共享drawable

时间:2014-03-02 21:46:32

标签: android security resources drawable sharing

我正在尝试创建一个免费的,可配置的EGMaps Android应用版本,任何人都可以使用它来轻松创建自己的基于地图的应用。目标是提供一个框架,以便拥有很少编程知识的人可以填写空白,提供数据并使其工作。

涉及两个应用程序:

App#1(EGMaps)几乎完成了所有工作。它需要访问其他App#2提供或指向的数据。我是唯一一个在这个上工作的人。

App#2将由多个,也许很多其他人创建,所有人都有不同的应用签名。这是一个非常小巧,简单的应用程序,除了将数据传递给EGMaps之外几乎没什么作用。我将提供有关填写内容的源代码和说明。其他程序员可以直接使用它,也可以根据需要修改它们的应用程序,然后最终调用EGMaps。

应用程序#2需要传递大量数据,如GPS坐标,GPS轨迹,标记位置等,它已经在做了。它还需要传递一个未知但可能大量的小型抽屉。出于空间考虑,我更喜欢直接从调用应用程序使用drawable,而不是将它们复制或下载并存储在EGMaps中。这些drawable最终将成为谷歌地图标记图标。

由于应用程序是由不同的程序员编写的,因此应用程序签名不同,因此设置相同的用户ID无济于事。

这就像我来的那样接近:

iconString=callingPackage+":drawable/"+iconName;
iconValue=getResources().getIdentifier(iconString, "drawable", null);

callingPackage =呼叫应用的名称(即:App#2)。我已经证实这是正确的。

iconName =图标名称,如可绘制资源中所示。

没有callingPackage部分,并且直接在应用程序中保存了drawable,这样可以正常工作。它只是访问不起作用的外部drawable。 iconValue总是返回0.我也尝试将callPackage放入getIdentifier的第三个参数中,无论是否添加到iconString,都没有任何区别。

有没有办法直接(或间接地,我猜)从调用应用程序访问这些drawables而不实际从某处复制它们?

1 个答案:

答案 0 :(得分:0)

假设getResources().getIdentifier(iconName, "drawable", callingPackage)是实际的包名称,我原本期望callingPackage有效。

您可以try createPackageContext()并在其上调用getResources()以获取引用其他包的Resources对象。