1
我可以使用意圖過濾器來收集所有已安裝啓動器的列表。麻煩的是撤出對應用程序圖標的int引用。下面的代碼捕獲NameNotFoundException錯誤。獲取已安裝啓動器的所有應用程序圖標列表,並在遠程視圖中顯示每個圖標
public RemoteViews getViewAt(int position) {
PackageManager pm = mContext.getPackageManager();
Intent i = new Intent("android.intent.action.MAIN");
i.addCategory("android.intent.category.HOME");
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
if(position < lst.size()) {
try {
ApplicationInfo ai = pm.getApplicationInfo(lst.get(position).activityInfo.name, 0);
int iconId = ai.icon;
rv.setInt(R.id.widget_item, "setBackgroundResource", iconId);
} catch (NameNotFoundException e) {
//Toast.makeText(mContext, "Fail: " + e, Toast.LENGTH_SHORT).show();
Log.d("Error: ", e.toString());
}
}
的問題是這一行:
ApplicationInfo ai = pm.getApplicationInfo(lst.get(position).activityInfo.name, 0);
不activityInfo.name無法返回包名?