所以我想从另一个应用程序中检索字符串资源。该应用是Android PackageInstaller
(最有可能是System
应用),我要检索的字符串有多种语言版本(源代码在这里> Link)。所以Package Installer's
资源目录如下所示:
我想从permission_warning_template
文件夹中检索字符串values
(我意识到Android会自动确定当前语言,并会获取该语言的值,但我可能错了)。
这些是我写的两种方法(Minimal,Complete和Verifiable示例),但都不起作用。它甚至可能吗?如何完成它?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//First Try
testUseAndroidString();
//Second Try
Resources res = null;
try {
res = getPackageManager().getResourcesForApplication("com.android.packageinstaller");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if(null != res) {
int sId = res.getIdentifier("com.android.packageinstaller:string/permission_warning_template", null, null);
if(0 != sId) {
Log.d("TagLet", res.getString(sId));
}
}
}
public void testUseAndroidString() {
Context context = this;
Resources res;
try {
res = context.getPackageManager().getResourcesForApplication("com.android.packageinstaller");
int resourceId = res.getIdentifier("com.android.packageinstaller:string/permission_warning_template", null, null);
if(0 != resourceId) {
CharSequence s = context.getPackageManager().getText("com.android.packageinstaller:string/permission_warning_template", resourceId, null);
Log.d("TagLet", "resource=" + s);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Log.d("TagLet", "FAIL");
}
}
感谢。
答案 0 :(得分:4)
所以你几乎解决了你的问题。由于您已经检索了另一个应用程序的资源,您只需要在此get{Something}
对象上调用res
,您就可以获得确切的资源。
所以我试过这个方法:
public void testUseAndroidString() {
Context context = this;
Resources res;
try {
res = context.getPackageManager().getResourcesForApplication("com.android.packageinstaller");
int resourceId = res.getIdentifier("com.android.packageinstaller:string/permission_warning_template", null, null);
if(0 != resourceId) {
String s = res.getString(resourceId);
Log.d("TagLet", "resource=" + s);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
得到了
允许%1 $ s到%2 $ s?
我猜这正是你要找的。 p>