2010-10-08 86 views
2

我有一個應用程序'A'和應用程序'B'。如何從另一個應用程序訪問字符串資源

說,我在申請「A」

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

如何訪問從活動中的「B」 ABC值的字符串資源。

我試過以下方法。

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){ 

} 

始終渣油則返回0總是..任何人都可以請讓我知道,如果我可以從應用程序「B」

問候, SANAT

回答

1

似乎好了訪問字符串ABC。這裏是我的代碼

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

這是可能的!看看下面的代碼。這個對我有用。

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(); 
    } 

} 

希望這會幫助你。

相關問題