使用getIdentifier()获取资源Id

 

第一种

int themeID = getResources().getIdentifier("androidhwext:style/Theme.Emui", null, null);

第一个参数格式是:包名 + : + 资源文件夹名 + / +资源名;是这种格式 然后其他的可以为null 


if (themeID == 0) { // 非EMUI系统
setTheme(R.style.ApplicationStyle);
} else {
setTheme(themeID);
}

 

第二种

int themeID = getResources().getIdentifier("Theme.Emui", "style", "androidhwext");

int indentify= getResources().getIdentifier("icon", "drawable", "org.anddev.android.testproject");

    1. 第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名。 

如果找到了,返回资源Id,如果找不到,返回0 。

static String PACKNAME_PATH = "com.huawei.KoBackup";

private boolean checkPathExist() {
PackageInfo packageInfo;
try {
packageInfo = this.getPackageManager().getPackageInfo(PACKNAME_PATH, 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();

}

return packageInfo != null;
}

 

if (checkPathExist()) { // 当第三方应用程序存在
Context remoteContext = null; // 远程Context对象
try {
remoteContext = this.createPackageContext(PACKNAME_PATH,
Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 忽略安全问题
Resources resources = remoteContext.getResources(); // 获得远程资源对象管理器
// 获得第三方应用的布局文件id
int resourceId = resources
.getIdentifier("calllog", "drawable", "com.huawei.KoBackup");

ImageView imageView = (ImageView) findViewById(R.id.icon_a);
imageView.setImageDrawable(resources.getDrawable(resourceId)); //这里代表引用
//imageView.setImageResource(resourceId); 这里代表引用本工程的资源ID
}

private boolean checkPathExist() {
PackageInfo packageInfo;
try {
packageInfo = this.getPackageManager().getPackageInfo(PACKNAME_PATH, 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();

}
return packageInfo != null;
}


  

 

posted @ 2014-10-16 11:32  马骝  阅读(660)  评论(0)    收藏  举报