使用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");
- 第一个参数为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;
}

浙公网安备 33010602011771号