在我的代码中,我有一个安装在设备上的所有应用程序的数组,我想在其中找到我正在运行的应用程序。为此,我编写了以下代码:
if (tmpPacs[I].packageName.compareToIgnoreCase("com.example.basiclauncher") == 0){
launcherPosition = I;
}
此行非常有效,但是,我想将“com.example.basiclauncher”存储在 strings.xml 的字符串中,如下所示:
<string name="launcher_package">com.example.basiclauncher</string>
并将该行更改为:
if (tmpPacs[I].packageName.compareToIgnoreCase("@string/launcher_package") == 0){
launcherPosition = I;
}
这不起作用, launcherPosition 在整个代码执行期间保持为0并且找不到正确的应用程序。当我恢复到第一行时,再次找到该应用程序。为什么是这样?我怎样才能使用strings.xml文件?
编辑:
我刚才意识到我正在尝试在我的java类中使用xml代码,这显然不会起作用。感谢所有快速回复, getPackageName()是一个更优雅的解决方案!
答案 0 :(得分:2)
要从xml中检索字符串,您必须使用getResources().getString(R.string. launcher_package)
。您还可以通过getPackageName()
答案 1 :(得分:2)
你需要做
tmpPacs[1].packageName.compareToIgnoreCase(getResources().getString(R.string.launcher_package));
您拥有的代码实际上是将tmpPacs [I] .packageName与字符串&#34; @ string / launcher_package&#34;进行比较。而不是它引用的字符串资源。
答案 2 :(得分:1)
您无法使用"@string/launcher_package"
。
试试这个:
tmpPacs[I].packageName.compareToIgnoreCase(
getResources().getString(R.string.
launcher_package))
希望这有帮助。