因此,我正在製作自定義應用選擇器。它將安裝瀏覽器,並安裝任何地圖應用程序。我得到的每一項如下:Android - 如何獲取動態意圖的包詳細信息
PackageManager packageManager = activity.getPackageManager();
//This gets all the browsers
String browserURI = "http://"+Driver.getIamhereURL()+lat+","+lon;
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserURI));
List<ResolveInfo> browserList = packageManager.queryIntentActivities(browserIntent, 0);
// This gets all the Map apps:
String mapUri = "geo:"+lat+","+lon;
Intent mapIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(mapUri));
List<ResolveInfo> mapList = packageManager.queryIntentActivities(mapIntent, 0);
//Combine the two
browserList.addAll(mapList);
//Now build layout and return a LinearLayout
LinearLayout appListBody = buildAppList(browserList,packageManager);
所以appListBody
將有望擁有這個應用程序圖標和應用程序名稱。很顯然,每個應用都必須有一個onClickListener()
與之關聯,這將啓動intent
。我的問題是,我如何發送intent
到我的方法,當我所能得到的是List<ResolveInfo> listOfApps
?
我可以嘗試for
循環,然後去pm.getLaunchIntentForPackage(listOfApps.get(count).resolvePackageName)
,但後來我得到NullPointerException: package name is null
。
任何人都可以幫忙嗎?
謝謝。
啊我明白了!我正在使用'resolvePackageName'。在那個筆記上,我是否使用了獲取圖標的正確方法?因爲沒有人出現。我也嘗試過'appImage.setImageResource(listOfApps.get(count).activityInfo.icon);'但仍然沒有顯示圖標。 – eoinzy
@eoinzy:我在'ResolveInfo'對象上使用'loadIcon()'。 – CommonsWare
很酷。我設法通過使用'appImage.setImageDrawable(pm.getApplicationIcon(listOfApps.get(count).activityInfo.packageName))''得到它。謝謝。 – eoinzy