2012-07-24 139 views

回答

7

您有幾種選擇:

  • ContentProvider - 沒有明確需要基於以上SQLite數據庫。

  • 清單屬性android:sharedUserId

    從文檔:

    ,將與其他 應用程序共享一個Linux用戶ID的名稱。默認情況下,Android會爲每個應用程序分配自己的 唯一用戶標識。但是,如果對於兩個或更多應用程序將此屬性設置爲相同的值 ,則它們將共享相同的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(); 
    } 
    
+0

謝謝。如果插件定義了hdpi/mdpi/ldpi drawables呢?如果我將調用'getDrawable',它會爲我提供有效的嗎? – hsz 2012-07-24 08:52:54

+1

是的,它給你一個有效的。通過調用'getResources()'來獲取應用程序包的'Resources'實例,您將獲得與您獲得的'Resource'對象相同的資源。由於您無法訪問插件apk的'R.java'常量定義,因此必須按名稱獲取資源。你也可以直接查看插件的'R.java',並使用常量'public static final int ic_launcher = 0x7f02001f;'作爲id,但這有點棘手。 – biegleux 2012-07-24 09:10:09

+0

我已經註冊了'BroadcastReceiver'來獲取關於已安裝插件的信息,所以我也可以傳遞插件drawable的資源ID。好吧,我明白一切。非常感謝biegleux! – hsz 2012-07-24 09:14:11

0

我認爲ContentProvider是您的最佳選擇。它們專門設計用於「在多個應用程序之間共享數據」。 下面是developer.android參考: http://developer.android.com/reference/android/content/ContentProvider.html 這裏是一個詳細的指南: http://www.vogella.com/articles/AndroidSQLite/article.html

+0

我不會將圖像存儲在數據庫中。插件將由第三方開發者提供,並且實現整個SQLite來存儲圖像將會是一個問題。我正在考慮傳遞資源ID和訪問圖像。 – hsz 2012-07-24 07:56:27

相關問題