2010-10-08 6 views
2

J'ai une application 'A' et une application 'B'.Comment accéder à la ressource chaîne d'une autre application

Say, j'ai une ressource de chaîne dans l'application 'A'

<\string name="abc">ABCDEF<\/string> 

Comment puis-je accéder à la valeur de abc de l'activité 'B'.

J'ai essayé la méthode suivante.

try { 
    PackageManager pm = getPackageManager(); 

    ComponentName component = new ComponentName(
     "com.android.myhome", 
     "com.android.myhome.WebPortalActivity"); 
    ActivityInfo activityInfo = pm.getActivityInfo(component, 0); 
    Resources res = pm.getResourcesForApplication(activityInfo.applicationInfo); 
    int resId = res.getIdentifier("abc", "string", null); 
} 
catch(NameNotFoundException e){ 

} 

Toujours résid est retourné 0 toujours .. Quelqu'un peut-il s'il vous plaît me faire savoir si je pouvais accéder à la chaîne abc de l'application 'B'

Cordialement, SANAT

Répondre

1

Il semble Ok. Voici mon code

Resources res = null; 
    try { 
     res = getPackageManager().getResourcesForApplication("com.sjm.testres1"); 
    } catch (NameNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    if(null != res) { 
     int sId = res.getIdentifier("com.sjm.testres1:string/app_name1", null, null); 
     int dId = res.getIdentifier("com.sjm.testres1:drawable/card_1_big", null, null); 
     if(0 != dId) { 
      iv.setBackgroundDrawable(res.getDrawable(dId)); 
     } 
     if(0 != sId) { 
      tv.setText(res.getString(sId)); 
     } 
    } 
6

C'est possible! Jetez un oeil sur le code suivant. Ça marche pour moi.

public void testUseAndroidString() { 
    Context context = getContext(); 
    Resources res = null; 
    try { 
     //I want to use the clear_activities string in Package com.android.settings 
     res = context.getPackageManager().getResourcesForApplication("com.android.settings"); 
     int resourceId = res.getIdentifier("com.android.settings:string/clear_activities", null, null); 
     if(0 != resourceId) { 
      CharSequence s = context.getPackageManager().getText("com.android.settings", resourceId, null); 
      Log.i(VIEW_LOG_TAG, "resource=" + s); 
     } 
    } catch (NameNotFoundException e) { 
     e.printStackTrace(); 
    } 

} 

Espérons que cela vous aidera.

Questions connexes