android 跨应用,Android跨应用获取资源
跨應(yīng)用獲取資源有兩種方式
方式一 利用PackageManager
PackageManager pm = getPackageManager();
Resources rs = null;
try {
rs = pm.getResourcesForApplication("com.example.test");
// getIdentifier方法使用如方式一二中使用均可
String text = rs.getText(rs.getIdentifier("test", "string", "com.example.test")).toString();
mTextView.setText(text);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
方式二 利用目標(biāo)資源所在的Context
Context remoteContext = null;
try {
// 1. 傳入目標(biāo)應(yīng)用包名
// 2. CONTEXT_INCLUDE_CODE的意思是包括代碼,也就是說可以執(zhí)行這個(gè)包里面的代碼
CONTEXT_IGNORE_SECURITY的忽略安全警告,如果不加這個(gè)標(biāo)志的話,有些功能是用不了的,會(huì)出現(xiàn)安全警告
remoteContext = createPackageContext("com.example.test", CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (remoteContext != null) {
int resId = remoteContext.getResources().getIdentifier("com.example.test:string/test", null, null);
// 注意,此處需要通過remoteContext將對(duì)應(yīng)id轉(zhuǎn)化為字符串,否則會(huì)將該id作本應(yīng)用中資源查找,從而出錯(cuò)
mTextView.setText(remoteContext.getString(resId));
}
備注:
代碼已在Android9.0系統(tǒng)測(cè)試,跨應(yīng)用獲取資源不需要權(quán)限,通過以上方式即可獲取。
總結(jié)
以上是生活随笔為你收集整理的android 跨应用,Android跨应用获取资源的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java对外发布接口文档_java之接口
- 下一篇: 图片马赛克去除工具_图片太多该如何进行排