2013-11-26 11 views
5

Dopo alcune ricerche e la pratica, ho osservato che siamo in grado di accedere alle risorse di altre applicazioni che utilizzano PackageManager comemodo di Accesso alle risorse e delle risorse Ids di altre applicazioni

Resources resources = getApplicationContext().getPackageManager().getResourcesForApplication(appPackageName); 

ma semplicemente accedendo Resources non è sufficiente. Abbiamo bisogno di ID per ogni componente di risorse come Drawables, layout, stringhe etc etc ... per accedervi da Risorse.

Ho cercato in SO e ho faticato parecchio su come ottenere Id delle risorse di altre app, ma non ho trovato una soluzione adeguata. Ho visto in SO, alcune persone suggerito di utilizzare metodi come

resources.getIdentifier(String name, String defType, String defPackage); 
resources.getValue(String name, TypedValue outValue, boolean resolveRefs); 
resources.getValue(int id, TypedValue outValue, boolean resolveRefs); 

, ma non hanno idea di come usarli.

Ho bisogno di accedere alle risorse (Drawables, Stringhe, Layout ...) di altre app.

Aiutami in questa preoccupazione. Qualsiasi aiuto sarebbe molto apprezzato ...

grazie a tutti voi e scusa per il mio inglese ...

+4

Se ciò accade, sarebbe una grave violazione della sicurezza. –

+0

@AbhishekV dato che siamo in grado di ottenere le risorse, spero che possiamo ottenere componenti di risorse come Drawables, layout ecc ecc ... non è vero? –

+1

@GopalRao Ya possiamo ottenere le risorse. Ma per ottenere drawable dall'oggetto Resources, dobbiamo conoscere il nome/id di quel drawable. Sapremmo che è noto solo se siamo gli sviluppatori di entrambe le applicazioni. –

risposta

0

non ho avuto il tempo di passare attraverso perfettamente, ma questo dovrebbe fare:

https://github.com/alt236/Android-Drawables---Android

Questo progetto cerca di ottenere tutti i drawable almeno da altre app. Anche questo è disponibile su Google Play: Android Resource Viewer

+0

ma hanno chiaramente menzionato che "Questa applicazione elencherà tutte le risorse Android pubbliche e private (cioè le risorse situate sotto 'android.R. *' e sotto 'com.android.internal.R . * ') per il dispositivo corrente. ... ... ma non Risorse di altre app ... –

1

Grazie per la tua domanda, Posso accedere tramite il seguente codice. Funziona bene ..

String lAppPkg = "com.example.sharedlogos"; 
resources = getApplicationContext().getPackageManager() 
          .getResourcesForApplication(lAppPkg); 
int lID = resources.getIdentifier(mID, "drawable", 
          lAppPkg); 
mImage.setBackground(resources.getDrawable(lID)); 
Problemi correlati