2014-07-22 25 views
0

在我的代碼中,我有一個安裝在設備上的所有應用程序的數組,我想在其中找到正在運行的應用程序。要做到這一點,我寫了下面的代碼:compareToIgnoreCase不適用於Strings.xml

if (tmpPacs[I].packageName.compareToIgnoreCase("com.example.basiclauncher") == 0){ 
    launcherPosition = I; 
} 

此行完美的作品,但是,我想存儲「com.example.basiclauncher」在字符串中的strings.xml像這樣:

​​

並更改行:

if (tmpPacs[I].packageName.compareToIgnoreCase("@string/launcher_package") == 0){ 
    launcherPosition = I; 
} 

這不起作用,啓動器位置在代碼執行過程中保持0,並且找不到正確的應用程序。當我回到第一行時,應用程序再次被找到。爲什麼是這樣?我怎樣才能使用strings.xml文件進行這項工作?

編輯:

我剛纔意識到,我試圖用我的java類,這顯然是行不通的內部XML代碼。感謝所有的快速回復,getPackageName()是一個更優雅的解決方案!

回答

2

要從xml中檢索字符串,您必須使用getResources().getString(R.string. launcher_package)。您也可以通過getPackageName()

1

檢索包名稱。您不能使用"@string/launcher_package"

試試這個:

tmpPacs[I].packageName.compareToIgnoreCase(
       getResources().getString(R.string. 
             launcher_package)) 

希望這有助於。

2

你需要做的

tmpPacs[1].packageName.compareToIgnoreCase(getResources().getString(R.string.launcher_package));

你的代碼是從字面上比較tmpPacs [I] .packageName字符串「@字符串/ launcher_package」,而不是它指的是字符串資源。

相關問題