删除应用程序后,Android将其从listview中删除
我有一个用户安装的应用程序列表。当我点击一个来删除它时,它表示它已被删除,但当我返回到listview时,图标仍显示在listview中,当我尝试点击它时,它表示该应用程序已被卸载。删除后,如何将其从listview中删除 我想更新我的listview,但不确定如何更新 这里有一些代码删除应用程序后,Android将其从listview中删除,android,Android,我有一个用户安装的应用程序列表。当我点击一个来删除它时,它表示它已被删除,但当我返回到listview时,图标仍显示在listview中,当我尝试点击它时,它表示该应用程序已被卸载。删除后,如何将其从listview中删除 我想更新我的listview,但不确定如何更新 这里有一些代码 public void update() { // TODO mAppListAdapter.clear(); Intent aIntent = new Intent(Intent.AC
public void update() {
// TODO
mAppListAdapter.clear();
Intent aIntent = new Intent(Intent.ACTION_MAIN, null);
aIntent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager aPackageManager = getPackageManager();
List <ResolveInfo> aList = aPackageManager.queryIntentActivities(aIntent, PackageManager.GET_UNINSTALLED_PACKAGES);
for( ResolveInfo rInfo : aList ) {
if (!isSystemPackage(rInfo))
mAppListAdapter.add(rInfo.activityInfo.applicationInfo);
//for (int n=0;n<aList.size();n++) {
//if((aList.get(n).flags & ApplicationInfo.FLAG_SYSTEM)!=1)
System.out.println("Installed Applications " + rInfo.activityInfo.applicationInfo.loadLabel(aPackageManager).toString());
}
if( mListView != null ) {
mListView.setAdapter( mAppListAdapter );
}
}
public void update(){
//待办事项
mapplistatadapter.clear();
意图维护=新意图(Intent.ACTION\u MAIN,空);
ainent.addCategory(Intent.CATEGORY_启动器);
PackageManager aPackageManager=getPackageManager();
List aList=aPackageManager.querytentActivities(ainent,PackageManager.GET_UNINSTALLED_PACKAGES);
for(ResolveInfo:aList){
如果(!isSystemPackage(rInfo))
添加(rInfo.activityInfo.applicationInfo);
//for(int n=0;nqueryIntentActivities()
返回活动的静态列表;此列表在您的过程中,其内容不会在背后更改,因为自您检索列表后,已安装的应用程序已更改
要处理不断变化的活动集,您需要关注PackageManager关于正在安装/删除的应用程序(或正在安装/卸载的外部存储等)的广播,并在此时更新您的列表
以下是要查找的广播:
安装应用程序更新后,您将收到一系列广播,因此生产代码在更新列表时应该有点精明
现在您知道列表可能已更改,您需要运行相同的代码重新查询包管理器,并将此新列表放入适配器中。请确保在执行此操作时调用BaseAdapter.notifyDataSetChanged()
,以告知列表视图有关更改的信息
下面是设置应用程序中的代码,该应用程序用于实现显示已安装应用程序列表的管理应用程序UI。无可否认,这很复杂,因为它正在做很多事情——确保它所做的所有工作都脱离主线程(以避免UI故障),在用户与UI交互时,在后台执行各种应用数据的查询等。它利用系统中的一些私有API计算应用存储大小,这在第三方应用中是无法使用的,但其代码都只是常规SDK代码