Android如何獲取同包名應用的圖標及名稱


如題,此類需求在網上應該說是一抓一大把,不過大多千篇一律。即依據包名獲得這類信息。

本人上周做一個項目的時候,發現依據包名是有問題的。比如:聯系人和撥號,WLAN設置和設置。這些應用,包名是一樣的,只是主Activity不一樣而已。會出現圖標、名稱獲取重復的問題。

這個時候,再使用ApplicationInfo獲得上述信息就出現了問題。這里我們必須使用ActivityInfo。

這里需要注意的是:我們必須知道這個Activity叫什么。舉個例子:

ComponentName cn = new ComponentName(mPkgName, mClassName);
PackageManager pkm = context.getPackageManager();
mAppicon = pkm.getActivityInfo(cn,
                        ActivityInfo.FLAG_STATE_NOT_NEEDED).loadIcon(pkm);
mApplabel = pkm.getActivityInfo(cn,
                        ActivityInfo.FLAG_STATE_NOT_NEEDED).loadLabel(pkm)+"";

這樣,我們獲得的icon和label就不會是重復的了。

同樣,這里如果你需要單擊打開App的話,也是需要依靠ComponentName來啟動的。通過包名檢測主activity去啟動的方式也會導致重復。

之后再次碰到同包名應用的時候,要注意了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM