2012-07-02 12 views
8

Ich habe den ganzen Tag mit diesem Problem gekämpft und hatte keinen Erfolg. Ich versuche im Grunde, eine Bildquelle von einer anderen apk zu bekommen.Erhalte Ressourcen von einem anderen Apk

Wenn also com.example.app ein Bild namens image1.png im Ordner res hat, möchte ich, dass com.example2.app auf diese Ressource zugreifen und sie in ein Bildfenster einfügen kann.

Ich weiß, dass Sie PackageManager.getResourcesForApplication verwenden müssen, aber ich bin immer noch nicht erfolgreich beim Abrufen der tatsächlichen Ressource.

Jede Hilfe wäre toll!

+1

was hast du probiert ?? –

Antwort

15

figured it out ...

final String packName = "com.example2.app"; 
    String mDrawableName = "app_icon"; 

    try { 
     PackageManager manager = getPackageManager(); 
     Resources mApk1Resources = manager.getResourcesForApplication(packName); 

     int mDrawableResID = mApk1Resources.getIdentifier(mDrawableName, "drawable",packName); 

     Drawable myDrawable = mApk1Resources.getDrawable(mDrawableResID); 

     if(myDrawable != null) 
      TEST.setBackgroundDrawable(myDrawable); 

    } 
    catch (NameNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

prüfen, um weitere Erklärung Form andere Frage! Share raw resource between apk's

4

try this:

final String packName = "com.example.app "; 
Resources resources; 
try { 
    PackageManager manager = getPackageManager(); 
    resources = manager.getResourcesForApplication(packName); 

    int resID = resources.getIdentifier("image1", "drawable", packName); 
    Log.d(TAG, "resID = " + resID); 
    Drawable image = getResources().getDrawable(resID); 
    Log.d(TAG, "resID = " + resID); 
} 
catch (NameNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

Als ich das ausprobierte, zog es Bilder von meiner eigenen App: - /. Evert Zeit, die ich es lief, würde es zum nächsten Bild im zeichnenden Ordner gehen. – user1190019

+0

Stellen Sie sicher, dass Sie den richtigen Paketnamen einer anderen App übergeben. –

+0

ja ich bin. Was es tut, ist, das Zeichen aus meiner App und nicht die andere App zu zeigen. Wenn ich also das 6. Bild in der Liste der Zeichnungsdateien im gewählten Paket wähle, wird stattdessen das 6. Bild in meiner Zeichnungsliste angezeigt. Versuche ich nur, es in einer Bildansicht falsch zu zeigen? Würde das funktionieren ... TEST.setImageDrawable (image); – user1190019