我有一個自定義listPreference我想顯示可以啓動的應用程序列表(包含CATEGORY_LAUNCHER的活動)。該選擇將在稍後用於啓動應用程序。當我搜索解決方案時,該列表還包含無法啓動的應用程序。有什麼辦法可以縮小這個範圍嗎?獲取可以啓動的已安裝應用程序列表
public class AppSelectorPreference extends ListPreference {
@Override
public int findIndexOfValue(String value) {
return 0;
//return super.findIndexOfValue(value);
}
public AppSelectorPreference(Context context, AttributeSet attrs) {
super(context,attrs);
PackageManager pm = context.getPackageManager();
List<PackageInfo> appListInfo = pm.getInstalledPackages(0);
CharSequence[] entries = new CharSequence[appListInfo.size()];
CharSequence[] entryValues = new CharSequence[appListInfo.size()];
try {
int i = 0;
for (PackageInfo p : appListInfo) {
if (p.applicationInfo.uid > 10000) {
entries[i] = p.applicationInfo.loadLabel(pm).toString();
entryValues[i] = p.applicationInfo.packageName.toString();
i++;
}
}
} catch (Exception e) {
e.printStackTrace();
}
setEntries(entries);
setEntryValues(entryValues);
}
}
可能從可能回答會幫助你得到這樣的應用程序包名稱的排序列表裏面可以是包含具有CATEGORY_LAUNCHER和android.intent.action.MAIN活動。 – Herry